Windows Installer-重新启动后恢复升级
时间:2020-03-06 14:47:47 来源:igfitidea点击:
我有一个Windows Installer MSI软件包,用于安装驱动程序,有时可能需要重新启动才能进行升级。这些驱动程序是通过WriteRegistryValues之后的延迟自定义操作安装的。当需要重新启动IS时,会进行回滚,并告知用户重新启动并再次运行安装。
在InstallExecuteSequence中,RemoveExistingProducts操作位于InstallValidate和InstallInitialize之间,因此,当升级信号表明需要重新启动时,先前的软件包已被删除。因此,当需要重新启动时,在回滚和错误消息"重新启动并重新运行此程序"之后,将不再安装我们的软件。如果用户重新启动并重复安装,则说明一切正常。
我需要自动重新启动并恢复安装,因此用户实际上无需执行任何操作(除了同意重新启动课程外)。
重新启动后,写入注册表的RunOnce项的命令可以再次运行安装,但是我认为将ForceReboot设置为驱动程序安装的延迟自定义操作中发生的情况会很棘手。确定恢复安装中的操作可能也很棘手。
我们将非常欢迎我们提供有关最佳做法或者潜在问题的建议。
解决方案
在InstallInitialize之前或者InstallFinalize之后,RemoveExistingProducts不会将Action放入新产品的审核脚本中,因此,正如我们所说的,在升级完成之前已删除了旧产品。
因此,我们可能希望尝试将RemoveExisitngProducts执行放在InstallInitialize和InstallFinalize之间,那样,它位于remove中的审核脚本部分中,因此它将跟踪,重新引导并恢复。
看一下系统重启属性
这里