我使用Inno Setup创建了一个安装程序。安装程序使用打包的DLL来检查目标计算机上特定设备的可用性。如果找到设备,则允许安装完成,否则回滚安装(使用脚本中的以下行完成回滚):
if <DeviceNotFound> then
begin
CancelWithoutPrompt := true;
WizardForm.Close;
end;
如果使用/silent
cmd行参数运行设置,我已检查上述检查和回滚逻辑是否正常工作。但是,当我使用/silent
param时,安装程序会显示安装进度向导表单。
另外,我发现如果我在/verysilent
模式下运行上述设置,那么“DeviceNotFound”检查逻辑工作正常,但回滚逻辑不起作用,好像回滚逻辑没有得到执行完全。安装程序成功安装,而不是执行回滚。
现在,我要求以静默方式运行安装程序,以便不显示任何窗口,但必须根据设备检查进行安装或回滚。因此,我有以下查询:
我可以在/verysilent
模式下运行安卓程序吗?如果是这样,请告知如何实现。我可以检测到verysilent安装模式,如下所示:
How to detect whether the setup runs in very silent mode?
或者,我可以在/silent
模式下运行时隐藏/最小化安装进度窗口吗?如果是,请告知如何实现。
请帮我解决上述问题。
很抱歉这么描述,但我试图解释我的问题和疑问!
修改
我没有在InitializeSetup()
进行上述检查。我正在从AfterInstall
部分的[Files]
指令调用的函数中进行检查。我有一个限制,我无法从InitializeSetup()
执行此操作,因为在[Files]
部分完成之前不会提取打包的DLL。我还需要在Windows PE(预安装环境)中运行安装程序,因此我无法使用ExtractTemporaryFile()
函数强制解压缩DLL,因为{tmp}
路径在该环境中无效。这让我只有一个选项是在[Files]
部分完成后进行检查。请指教!
答案 0 :(得分:2)
您对不使用ExtractTemporaryFile
的约束没有意义。
Inno Setup安装程序始终为安装创建一个临时文件夹。
2015-07-31 09:02:07.458创建临时目录:C:\ Users \ martin \ AppData \ Local \ Temp \ is-1CN29.tmp
如果无法创建文件夹,则安装失败。
Inno安装程序尝试在以下位置创建临时文件夹:
%TMP%
%TEMP%
%USERPROFILE%
C:\Windows
)即使在“Windows PE”中,至少最后一条路径也必须存在。
所以我不认为,有任何事情妨碍您使用ExtractTemporaryFile
功能。