我正在使用InstallShield Pro X创建一个安装包。升级工作正常。但是,产品经理希望升级替换升级时的所有文件,即使文件上的创建日期!=修改日期也是如此。
我知道,要做到这一点,我需要设置REINSTALLMODE=vamus而不是vomus。但是,我不知道如何告诉InstallShield我希望它使用该设置。默认情况下,setup.exe总是将vomus传递给windows安装程序。
在InstallShield项目中有一个名为ReinstallModeText的属性,我将其从omus更改为amus,但这似乎没有任何效果。
那么,如何在安装项目中设置什么,以便在setup.exe检测到要运行升级时发送REINSTALLMODE=vamus?谢谢。
更新:尝试将以下内容添加到Release部分的MSI命令行值中:
REINSTALLMODE=vamus
这不起作用。我这样做时,Setup.exe没有在命令行中设置REINSTALL=ALL。我将其添加到MSI命令行中,升级工作如预期的那样进行。但是,问题不是如果它是一个新的安装,这些属性仍在设置中,安装程序失败。
发布于 2009-07-03 18:21:05
Don't将REINSTALLMODE设置为amus或vamus (强制覆盖文件)。这些设置适用于MSI中的所有组件,因此在理论上可能会降级系统文件或至少是共享文件-这通常涉及通过合并模块包括的文件。通常,将设置为emus (替换版本号低于或等于的文件)是安全的。如果您尝试在具有Windows Resource Protection (wikipedia) (Windows Server2008和Vista更高版本)的较新版本的Windows上覆盖系统保护的文件,即使这样也会触发文件替换错误。在较旧的Windows版本中,文件可能会被覆盖,然后通过Windows File Protection feature从dllcache恢复到正确的版本,前提是该功能运行良好。曾经(现在也是)有一个用于系统文件检查的相关工具:System File Checker。
如果文件在编辑后仍需替换,则可以使用RemoveFile表安排在安装期间删除该文件(然后将重新安装)。
真正的解决方案将%ProgramFiles%中的安装文件夹视为只读,并且不让应用程序保存任何设置或更改任何文件。所有配置文件应转到用户配置文件或alluser配置文件,应用程序EXE文件应负责复制到配置文件位置。
https://stackoverflow.com/questions/935834
复制相似问题