在WiX中以管理员身份运行Powershell脚本

时间:2018-01-10 19:39:15

标签: windows powershell wix

我有一个WiX安装程序,需要在安装后运行Powershell脚本。我已经到了安装程序确实运行脚本的地步:

<SetProperty Id="RunStartScript"
        Before ="RunStartScript"
        Sequence="execute"
        Value="&quot;C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe&quot; -NonInteractive -ExecutionPolicy Bypass -InputFormat None -NoProfile -File &quot;[INSTALLDIR]Scripts/Start.ps1&quot;" />

<CustomAction Id="RunStartScript" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="deferred" Return="check" Impersonate="yes" />
<InstallExecuteSequence>
      <Custom Action="RunStartScript" Before="InstallFinalize">NOT Installed OR UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>

但是,msi因此错误而失败:

  

无法运行脚本'Start.ps1',因为它包含以管理员身份运行的“#requires”语句。当前的Windows PowerShell会话未以管理员身份运行。使用“以管理员身份运行”选项启动Windows PowerShell,然后再次尝试运行该脚本。

安装程序在安装开始之前已经提示安装管理员,因此我假设PowerShell命令将以管理员身份运行,但情况并非如此。

我找到了一些答案,包括在脚本开头添加代码以检查管理员权限并将命令和args传递给管理员会话,但我一直在寻找另一个选项的可能性,因为这是一个其他人提供的签名脚本,因此对它进行任何更改都必须返回给他们重新签名。

1 个答案:

答案 0 :(得分:1)

需要将Impersonate="yes"更改为Impersonate="no",以便Powershell会话不会像普通用户一样运行。