在inno setup中安装之前,请运行powershell脚本或将安装目录列入白名单

Run powershell script or whitelist installation directory before installing in inno setup

提问人:John Titor 提问时间:11/17/2023 更新时间:11/17/2023 访问量:32

问:

我正在使用inno设置,用户可以选择安装软件.exe的目录。

但目前在安装进行到一半时,Windows Defender会删除/隔离exe文件,因为它认为它是病毒。 我目前的解决方法是创建一个文件夹,在 defender 中将文件夹列入白名单,然后运行安装程序并手动安装到该文件夹。

有没有办法在Inno Setup中自动执行此过程,在用户选择安装目录后,它会在安装前将该文件夹列入白名单?

我看到一些人运行 Powershell 脚本,但是在 Inno 安装程序创建文件夹之后和安装 .exe 之前,我该如何运行此脚本?

PowerShell 安装 inno-setup 杀毒软件 windows-defender

评论


答:

1赞 Martin Prikryl 11/17/2023 #1

假设使用 Dirs 部分条目创建目录,请使用 AfterInstall 参数优化自定义代码以执行 PowerShell:

[Dirs]
Name: "{app}\data"; AfterInstall: AfterDirectoryCreated
[Code]

procedure AfterDirectoryCreated;
var
  ResultCode: Integer;
begin
  if Exec('powershell', Params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
  begin
    Log('PowerShell executed successfully');
  end
    else
  begin
    Log('PowerShell failed to execute');
  end;
end;

尽管更改用户防病毒设置是不可接受的安全漏洞。修复您的应用程序,使其不被检测为病毒。

评论

0赞 John Titor 11/17/2023
是的,我使用 Dirs 部分,但是有没有办法在 Dirs 部分之后但在 AfterInstall 之前运行脚本?防病毒软件会在安装过程中删除 exe,因此在运行 AfterInstall 时,exe 已被删除。
0赞 Martin Prikryl 11/17/2023
你有没有尝试过我的建议?在创建目录之后,在发生任何其他事情之前(即甚至在部署任何文件之前),立即发生。AfterInstall