Executando verificação de segurança...
1

[AJUDA] Execução de scripts powershell com permissão elevada utilizando Wix tool set

Salve galera, estou desenvolvendo um instalador usando Wix toll set pela primeira vez e estou encontrando uma dificuldade, estou há horas tentando resolver e nada dá certo. Criei essas duas Custom Actions: ComandCliente e ComandServidor, no código abaixo, que são executadas ao final da instalação após o clique no botão de Concluir, Somente uma ação é executada, dependendo do checkbox selecionado durante a instalação "Cliente" ou "Servidor" (Criei uma validação para selecionar apenas um). Esses Scripts deveriam alterar um arquivo appsettings na pasta de instalação, salvando as informações necessárias. Quando estava testando, percebi que quando a aplicação é instalada em uma pasta que necessita de permissão de adm, os scripts não são executados. Jà tentei de tudo e nada. Se uma boa alma com experiência em Wix e que esteja disposta a ajudar eu aceito muitoo, qualquer ajuda é bem vinda.

			<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="ComandCliente" Condition="ClienteButton = 1 and NOT Installed and REMOVE &lt;&gt; &quot;ALL&quot;" />
			<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="ComandServidor" Condition="ServidorButton = 1 and NOT Installed and REMOVE &lt;&gt; &quot;ALL&quot;" />
		</UI>

		<Icon Id="icon.ico" SourceFile="$(var.EdenAgente.ProjectDir)\Resources\trayicon.ico" />

		<Property Id="ARPPRODUCTICON" Value="icon.ico" />
		<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Executar Eden Agente" />
		<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
		<Property Id="HostBackend" Value="DefaultValue" />
		<Property Id="HostFrontend" Value="DefaultValue" />

		<Property Id="SetSetupCliente" Value="v" />
		<CustomAction Id="ComandCliente" Execute="immediate"
              ExeCommand="PowerShell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -WindowStyle Hidden -File &quot;$(var.ProjectDir)Scripts\set_setup_cliente.ps1&quot; -configFilePath &quot;[INSTALLFOLDER]appsettings.json&quot; -hostBackend &quot;[HostBackend]&quot; -hostFrontend &quot;[HostFrontend]&quot;"
              Directory="TARGETDIR"
              Impersonate="no"
              Return="asyncNoWait" />
		
		<Property Id="SetSetupServidor" Value="v" />
		<CustomAction Id="ComandServidor" Execute="immediate"
              ExeCommand="PowerShell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -WindowStyle Hidden -File &quot;$(var.ProjectDir)Scripts\set_setup_servidor.ps1&quot; -configFilePath &quot;[INSTALLFOLDER]appsettings.json&quot; -hostBackend &quot;[HostBackend]&quot; -hostFrontend &quot;[HostFrontend]&quot;"
              Directory="TARGETDIR"
              Impersonate="no"
              Return="asyncNoWait" />
		

Scripts que devem ser executados:

param($configFilePath, $hostBackend, $hostFrontend)
$json = Get-Content -Path $configFilePath -Raw
$keyvalue = ConvertFrom-Json $json
$keyvalue.SetupType = "Servidor"
$keyvalue.Host = $hostBackend
$keyvalue.HostFrontEnd = $hostFrontend
$json = ConvertTo-Json $keyvalue
Set-Content -Path $configFilePath -Value $json

Obs: os dois são praticamente iguais, a única mudança ocorre no valor da chave SetupType (Cliente ou Servidor)

Carregando publicação patrocinada...
1

Alterar um arquivo appsettings na pasta de instalação?
Cuidado qual é a pasta de instalação.
Por exemplo, a pasta %programfiles% está cheia de restrição, pode acontecer de deixar criar mas não deixar alterar arquivo.
Antigamente era comum instalar o programa e a 'base de dados local' e/ou configuração no %programfiles% mas devido a essas restrições estão separando as coisas.
Programas vão para a pasta %programfiles%
Base de dados local e/ou configurações vão para a pasta
C:%HOMEPATH%\AppData\Roaming\

No meu caso em particular
C:\Users\wgome\AppData\Roaming\

1

Muito Obrigado Wellington, me salvou muito, é minha primeira vez desenvolvendo em desktop, estava sofrendo muito com essas restrições quando instalava em pastas protegidas, não sabia mais o que fazer, salvei o arquivo de configuração em "C:%HOMEPATH%\AppData\Roaming" e mudei o código da aplicação para buscar o arquivo lá, e foi tranquilo, me salvou muitoo!!