2011-02-27 37 views
4

我正在使用Microsoft Visual Studio 2010为我的简单.EXE应用程序创建一个简单的.MSI安装程序。MSI创建:升级前终止应用程序

问题是,如果您在.EXE仍在运行时安装升级,则事情会出错(直到重新启动)。

我希望.MSI安装程序在安装/升级之前终止我的过程。

请问有人能告诉我如何在Orca做到这一点?

编辑:我见过这种情况是由于我的.EXE正在使用,但我也看到它,因为.CHM帮助文件在升级时也是打开的,所以任何进程终止都不是足以解决这个问题。

回答

1

您可以尝试创建一个custom action,它停止您的应用程序(由您编写的自定义EXE或DLL)。例如,您可以将WM_CLOSE发送到主应用程序窗口(您的应用程序应处理此消息)。

此自定义操作应该安排在InstallExecuteSequence表中的InstallValidate操作之前。

+0

谢谢,根据我的编辑,这个答案是不够的。但是,它直接回答了我原来的问题,这里有一个+1。下一次,我会专注于我的问题,而不是关于我的想法。 – servermanfail 2011-02-28 08:00:29

3

您应该将MsiRMFilesInUse Dialog广告给您的安装人员。

+0

这会检测我的帮助文件是否打开? – servermanfail 2011-02-28 08:01:15

+0

如文档中所述:“可以创建MsiRMFilesInUse对话框,以显示当前正在运行的文件需要被安装覆盖或删除的进程列表。”您可以依赖RestartManager发布的事件来安全关闭您的应用。但是,此对话框可以用于Windows Installer 4.0或更高版本。对于较低版本,您可以使用FilesInUse对话框。 – Ciprian 2011-02-28 11:03:04

+0

我已到处寻找,但我无法找到一些关于如何将内置对话框添加到设置的帮助。你能帮我吗 ?我在说VS安装程序 – 2016-05-24 09:40:23

0

您可以编写一个自定义操作来关闭您的应用程序以及您的帮助文件。

你应该能够找到的窗口句柄的这两种使用FindWindow函数: http://msdn.microsoft.com/en-us/library/ms633499(v=vs.85).aspx

为可执行文件,你应该能够使用适当的窗口类或为标题FindWindow函数。 对于帮助文件,您应该能够为FindWindow使用适当的帮助窗口标题。

我希望这有助于!