Inno setup Inno安装程序:在安装过程中调用卸载程序-这是回滚的正确方法吗?
我有一项任务要解决我们的产品安装程序的问题,但最终却毫无头绪地走到了死胡同 安装过程如下所示:Inno setup Inno安装程序:在安装过程中调用卸载程序-这是回滚的正确方法吗?,inno-setup,Inno Setup,我有一项任务要解决我们的产品安装程序的问题,但最终却毫无头绪地走到了死胡同 安装过程如下所示: 安装文件 在[Run]部分中配置一些服务 运行我们的定制产品配置程序 如果步骤3成功(configurator返回正确的退出代码),则启动这些服务 else回滚安装 所以问题是Shroedinger的——在一些机器上,在取消configurator中的安装后出现了意外的重新启动,没有任何问题。当然,这激怒了用户 我无法确定机器决定重新启动的标准,但我偶然发现了这件事: 在[Run]部分 Filenam
[Run]
部分中配置一些服务[Run]
部分
Filename: "stub.exe"; Flags: runhidden skipifdoesntexist; BeforeInstall: ConfigureService
然后在[code]
中,ConfigureService
调用InstallationAbort
proc,前提是配置程序返回了错误的退出代码
接下来,在安装中止中:
Exec(ExpandConstant({uninstallexe}'),'/VERYSILENT/noinstancecheck','',SW_HIDE,
EWWAIT未过滤,错误代码);
因此,作者在安装程序中调用卸载程序。
使用我确定的日志,安装程序不会在卸载程序完成工作后结束!正在进入下一步(安装完成)!之后我可以在日志中看到
需要重启吗?对
注意:如果未取消configurator,即安装以正确的方式完成,则系统不会重新启动
所以我试着:
- 将
添加到卸载程序/NORESTART
调用。没用。我想这是因为是安装人员决定重新启动Exec
- 添加
WizardForm.CancelButton.OnClick(WizardForm.CancelButton)调用卸载程序后,调用code>和其他一些调用退出安装程序。没用
- 覆盖
函数,以便在取消时返回false需要重新启动
UninstallRun
中调用它们)
所以,我的主要问题是:从[Run]
部分调用的代码调用卸载程序,以撤消在[Run]
中所做的更改,这是正常的做法吗
从[Run]
部分调用的代码调用卸载程序,以撤消在[Run]
中所做的更改,这是正常的做法吗
一般来说,这不是一种常见的做法。不应在Run
部分中止安装。Inno安装程序并不是为处理这个问题而设计的
但是如果你需要的话,没有别的办法了。您的代码很可能基于以下内容:但这并不意味着安装程序需要重新启动。安装程序和卸载程序之间存在一些冲突。显示完整的安装程序和卸载程序日志。