我有一个通过msi安装的程序。 msi是使用VS2008部署项目构建的,并且在安装完成后具有自定义操作来运行程序。
运行msi后,我只需更新版本号,生成新的产品代码,即可在同一台PC上再次运行msi。但是,我想要的是能够在同一台PC上第二次运行msi(不使用msi修复)并重新安装软件(即使没有任何改变)。这可能吗?
答案 0 :(得分:3)
您可以通过从InstallExecuteSequence表中删除RegisterProduct操作,RegisterUser操作,PublishProduct操作和PublishFeatures操作来完成此操作。通过删除这些标准操作,应用程序将不会在系统的MSI数据库中注册,您可以反复运行并重新运行安装,就像它是首次安装一样。
MSDN:
Adding and Removing an Application and Leaving No Trace in the Registry
答案 1 :(得分:0)
单稳
答案 2 :(得分:0)
不,这是不可能的。即使您更改了ProductCode和ProductVersion,第二次运行它也将始终以修复模式运行。甚至修补方法也在实现修复模式,并且基本上使用补丁文件作为转换。
实现此目的的唯一方法是以某种方式阻止应用程序在ARP中的任何输入,但我怀疑这将破坏应用程序的弹性,在这种情况下,您可能不希望使用MSI作为您的传送系统。
我过去使用纯InstallScript设置完成了这项工作。设置完成后,我删除了与ARP相关的注册表项,因此另一个安装将像新安装一样。
答案 3 :(得分:0)