安装后的PowerShell脚本

Dr.*_*YSG 2 inno-setup

新手问题:我想在inno-setup安装结束时运行powershell脚本(.ps1)。谁能给我小费放在哪里?我希望系统提示用户是否要运行此脚本。

哦,是的,该脚本所做的是运行netsh.exe打开端口,该脚本很聪明,它从当前上下文中获取Env:username和Env:userdomain。上下文是正在运行安装程序的管理员吗?还是运行setup.exe的原始用户?

小智 5

另一种方法是使用ShellExec代码中的来运行脚本。

[Files]
Source: "yourPowershell.ps1"; DestDir: "{app}"; Flags: overwritereadonly replacesameversion promptifolder;

[Tasks]
Name: "runpowershell"; Description: "Do you want to run Powershell script?"

[Code]

procedure CurStepChanged(CurStep: TSetupStep);
var
  ErrorCode: Integer;
  ReturnCode: Boolean;
begin
  if CurStep = ssPostInstall then begin

    if(IsTaskSelected('runpowershell')) then begin
      ExtractTemporaryFile('yourPowershell.ps1');
      ReturnCode := ShellExec('open', '"PowerShell"', ExpandConstant(' -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden  -File "{tmp}\YourPowershell.ps1"'), '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);

    if (ReturnCode = False) then
        MsgBox('Message about problem. Error code: ' + IntToStr(ErrorCode) + ' ' + SysErrorMessage(ErrorCode), mbInformation, MB_OK);

  end;
end;
Run Code Online (Sandbox Code Playgroud)