Wix:安排下次重启后运行的自定义操作

时间:2011-11-16 13:47:51

标签: wix windows-installer custom-action

重启后是否可以安排自定义操作?这是我的困境。

我有一个要卸载并重新安装的产品,但在重新安装时,其他应用程序正在使用某些文件。这会导致卸载问题,因为文件正在使用中,因此我使用自定义操作运行批处理文件来重命名正在使用的文件。这有点像黑客但是让卸载并重新安装不会抱怨正在使用的文件并替换我想要的文件。

这样做的原因是我不允许在安装过程中强行重启机器,但我需要确保文件被替换。到目前为止一切都很好。

这有一堆文件的副作用,我已经使用前缀toDelete_fileX.dll和文件夹中的新fileX.dll重命名了。

我有另一个自定义操作来删除这些文件但工作正常但我无法在安装结束时运行它,因为另一个应用程序仍然有这些重命名的“toDelete_”前缀文件的句柄。

在未来的某个时刻,系统将重新启动,这是我希望自定义操作运行以删除“toDelete_”前缀文件的地方。

感谢。尼尔

2 个答案:

答案 0 :(得分:2)

看看这个属性MSIRESTARTMANAGERCONTROL,您可以使用它来阻止正在使用的文件对话框,将其与/ qn结合使用,msiexec将允许您以静默方式执行此操作。

对于安装程序,如果您在安装事务期间开始运行批处理文件,那么您实际上是独立的,因为Windows Installer无法跟踪它。除非有合理的理由推出自己的CA,否则我会明确指出。

我认为在您的情况下,当您最终重新启动时,Windows Installer将能够处理重命名。如果我理解正确,你不介意重新启动,它只是你想在以后的日期/时间安排。

答案 1 :(得分:1)

您可以使用RunOnce注册表项在重新启动后安排操作:

但是,我认为你的做法是错误的。如果您可以提供有关您需要做的事情(设计或概念)的更多详细信息,或许我可以提出更好的选择。