2010-08-04 162 views
3

我有一个通过msi安装的程序。 msi是使用VS2008部署项目构建的,并且具有自定义操作以在安装完成后运行该程序。msi安装程序运行两次

msi运行后,我可以简单地更新版本号,生成新的产品代码,并且可以在同一台PC上再次运行msi。但是,我想要的是能够在同一台PC上运行MSI(不使用msi修复),并重新安装软件(即使没有任何更改)。这可能吗?

回答

3

您可以通过从InstallExecuteSequence表中删除RegisterProduct操作,RegisterUser操作,PublishProduct操作和PublishFeatures操作来完成此操作。通过删除这些标准动作,应用程序不会在系统的MSI数据库中注册,并且您可以反复运行和重新运行安装,就像它是第一次安装一样。

MSDN:
Adding and Removing an Application and Leaving No Trace in the Registry

+0

谢谢,这真是棒极了! AdvtExecuteSequence表中还有一些条目也需要删除。 – 2010-08-09 09:02:35

0

编辑:我看错了。

OneSHOT

0

不,这是不可能的。即使您更改ProductCode和ProductVersion,它第二次运行它也会始终以修复模式运行。即使修补方法是实施修复模式,基本上使用修补文件作为转换。

完成此操作的唯一方法是以某种方式阻止应用程序在ARP中的任何输入,但我怀疑这会打破应用程序的弹性,在这种情况下您可能不希望将MSI用作您的传送系统。

我已经在过去使用纯InstallScript设置完成了此操作。一旦安装完成,我将删除与ARP相关的注册表项,以便另一次安装将像新安装一样。