始终在次要升级中更新文件(如何)

时间:2009-06-01 17:33:03

标签: installer windows-installer installshield

我正在使用InstallShield Pro X创建安装包。升级正常。但是,即使文件上的创建日期!=修改日期,产品经理也希望升级替换升级中的所有文件。

我看到要做到这一点,我需要设置REINSTALLMODE = vamus而不是vomus。但是,我没有看到如何告诉InstallShield我希望它使用该设置。默认情况下,setup.exe始终将vomus传递给Windows安装程序。

InstallShield项目中有一个名为ReinstallModeText的属性,我将其从omus更改为amus,但似乎没有效果。

那么,我如何在安装项目中设置如何在setup.exe检测到运行升级时发送REINSTALLMODE = vamus?感谢。

更新:尝试将以下内容添加到“发布”部分中的“MSI命令行”值:

重建= vamus

这不起作用。 Setup.exe没有在命令行上设置REINSTALL = ALL我做了什么。我将其添加到MSI命令行,升级按预期工作。但是,问题不在于,如果它是新安装,那么仍然会设置这些属性并且安装程序失败。

4 个答案:

答案 0 :(得分:3)

不要将REINSTALLMODE设置为 amus vamus 强制覆盖文件)。这些设置适用于MSI中的所有组件,因此理论上可以降级系统文件或至少共享文件 - 这通常涉及通过合并模块包含的文件。将REINSTALLMODE设置为 emus 替换版本号较低或相同的文件)通常是安全的。如果您尝试在具有Windows Resource Protectionwikipedia)的较新版本Windows上覆盖受系统保护的文件,则可能会触发文件替换错误(Windows Server 2008和Vista以后版本) 。在较旧的Windows版本上,该文件可能会被覆盖,然后通过Windows File Protection feature从dllcache以正确的版本恢复,前提是该功能有一个美好的一天。有(并且是)用于系统文件检查的关联工具:System File Checker

如果您对已经编辑过的文件有疑问,可以使用 RemoveFile表在安装过程中安排删除文件(然后重新安装)。

真正的解决方案是将%ProgramFiles%中的安装文件夹视为只读,而不是让应用程序保存任何设置或更改任何文件。所有配置文件都应该转到用户配置文件或alluser配置文件,应用程序EXE文件应该负责复制到配置文件位置。

my answer here

答案 1 :(得分:2)

在进一步调查此问题并测试更多选项时,我认为最佳答案是修改产品代码以及产品版本,并将其作为主要升级,先删除以前的版本,然后再安装新文件。

这个问题的主要问题是安装程序运行需要更长的时间。我也认为你不能发布这个补丁,但我可能错了。

答案 2 :(得分:1)

我没有IS X方便,但在更高版本的InstallShield中你会转到“Releases”,突出显示你的版本,转到“Setup.exe”部分,这里有一个名为“MSI Command Line Arguments”的字段。在那里,您将指出您希望Setup.exe传递给Windows Installer的任何命令行参数。例如。重建= vamus

答案 3 :(得分:1)

您提到您使用ReinstallModeText和“amus”。你有没有尝试过ReinstallModeText等于“vamus”。 “v”导致安装程序运行源包而不是缓存包,这可能是您的问题。