2011-04-05 46 views
3

使用Installshield 2010和Basic MSI项目。使Windows Installer忽略正在运行的进程

我有一个以前由我的安装程序安装的exe文件。该exe文件需要在安装程序升级过程中运行。有没有办法保证安装程序不会尝试关闭进程?基本上,我想要的行为是:如果文件不存在,放下它,否则忽略它。

我已经在组件中创建了一个关键文件,并将其'永不覆盖'设置为true。这应该给我我想要的行为?

+0

如果你能解释为什么EXE文件必须被使用,那将会很棒。这听起来像是一个非常奇特的部署策略。 – 2011-04-26 00:39:28

回答

2

未来的安装程序将使用Never Overwrite来确定文件是否被其他MSI软件包覆盖。基本上,应该为安装的EXE设置此属性。

一个好方法是使用file search来确定EXE是否存在。然后可以使用搜索属性来调整新组件。

Windows安装程序不会自动关闭应用程序,但会显示一个FilesInUse对话框,该对话框向用户提供此选项。

+0

所以基本上我试图禁用显示FilesInUse对话框的特定应用程序的用户。可能吗? – Web 2011-04-06 11:15:17

+1

仅当没有正在运行的应用程序需要替换文件时,才会显示FilesInUse。因此,您可以尝试我建议的方法,以查看在EXE条件未满足时是否仍显示该方法。如果这不起作用,唯一的解决办法是手动处理该文件,而不是让Windows Installer处理它(将其存储在某处,在安装过程中将其提取出来)。 – 2011-04-06 11:31:46

+0

根据您的升级模型,您可能还需要将该文件标记为永久,以便卸载不会尝试删除它。 – 2011-04-26 01:29:36