[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 <> "ALL"" />
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="ComandServidor" Condition="ServidorButton = 1 and NOT Installed and REMOVE <> "ALL"" />
</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 "$(var.ProjectDir)Scripts\set_setup_cliente.ps1" -configFilePath "[INSTALLFOLDER]appsettings.json" -hostBackend "[HostBackend]" -hostFrontend "[HostFrontend]""
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 "$(var.ProjectDir)Scripts\set_setup_servidor.ps1" -configFilePath "[INSTALLFOLDER]appsettings.json" -hostBackend "[HostBackend]" -hostFrontend "[HostFrontend]""
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)