3

我正在使用 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

4 回答 4

3

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

如果您对即使已被编辑过的文件也应该被替换的问题,您可以使用RemoveFile 表来安排在安装期间删除文件(然后将重新安装)。

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

在这里查看我的答案

于 2009-07-03T18:21:05.193 回答
2

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

这样做的主要问题是安装程序需要更长的时间才能运行。我也认为你不能将它作为一个补丁发布,但我在这方面可能是错误的。

于 2009-09-18T17:09:30.023 回答
1

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

于 2009-06-03T03:13:11.130 回答
1

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

于 2009-06-03T03:18:45.330 回答