windows - Running Powershell script i WiX installere som administrator

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et WiX-installationsprogram, der skal køre et Powershell-script efter installationen. Jeg har fået det punkt, hvor installationsprogrammet rent faktisk kører scriptet med dette:


<SetProperty Id="RunStartScript"
        Before ="RunStartScript"
        Sequence="execute"
        Value="&quot;C:WindowsSystem32WindowsPowerShellv1.0powershell.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>


Imidlertid mislykkes msi'en med denne fejl:



  Skriptet 'Start.ps1' kan ikke køres, fordi det indeholder en '#requires' erklæring for at køre som administrator. Den aktuelle Windows PowerShell-session kører ikke som administrator. Start Windows PowerShell ved at bruge indstillingen Kør som administrator, og prøv derefter at køre scriptet igen.



Installatøren beder allerede om en administrator, før installationen begynder, så jeg antog, at PowerShell-kommandoen ville køre som administrator allerede, det må ikke være tilfældet.


Jeg har fundet nogle svar, der involverer at tilføje kode til starten af ​​et script for at tjekke for Admin privilegier og at videregive kommandoen og args til en Admin session, men jeg ledte efter muligheden for en anden mulighed, da dette er et underskrevet script at en anden foreslog, at eventuelle ændringer i det ville skulle gå tilbage til dem for at blive tilmeldt igen.

Bedste reference


Behov for at ændre Impersonate="yes" til Impersonate="no", så Powershell-sessionen ikke løb som den normale bruger.