Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 msi安装程序将运行两次_Visual Studio 2008_Windows Installer_Custom Action - Fatal编程技术网

Visual studio 2008 msi安装程序将运行两次

Visual studio 2008 msi安装程序将运行两次,visual-studio-2008,windows-installer,custom-action,Visual Studio 2008,Windows Installer,Custom Action,我有一个通过msi安装的程序。msi是使用VS2008部署项目构建的,安装完成后有一个自定义操作来运行该程序 一旦运行了msi,我只需更新版本号,生成新的产品代码,msi就可以在同一台电脑上再次运行。然而,我想要的是能够在同一台电脑上再次运行msi(无需使用msi修复),并让它重新安装软件(即使没有任何更改)。这可能吗?编辑:我看错了 一次性的不,这是不可能的。即使您更改了ProductCode和ProductVersion,它第二次运行时也将始终以修复模式运行。甚至修补方法也在实现修复模式,基

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


一旦运行了msi,我只需更新版本号,生成新的产品代码,msi就可以在同一台电脑上再次运行。然而,我想要的是能够在同一台电脑上再次运行msi(无需使用msi修复),并让它重新安装软件(即使没有任何更改)。这可能吗?编辑:我看错了


一次性的

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

实现这一点的唯一方法是以某种方式防止应用程序进入ARP,但我怀疑这会破坏应用程序的弹性,在这种情况下,您可能不想使用MSI作为交付系统


我过去使用纯InstallScript设置完成了这项工作。一旦安装完成,我将删除与ARP相关的注册表项,这样另一次安装将像新安装一样进行

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

MSDN:

第二次安装时使用实例转换

谢谢,效果很好!AdvtExecuteSequence表中也有一些条目需要删除。