2012-07-30 67 views
3

我想发布Setup.msi Setup.msi输出的Setup.msi Setup.BootStrapper项目的Setup Project和setup.exe输出。因为我想发布两个(setup.msi & setup.exe)所以,安装的顺序是不可预知的。如果用户首先安装setup.exe,然后安装setup.msi,则工作正常。它提供了“删除”和“修复”选项。但如果先安装msi然后使用exe,那么它也会安装setup.exe。所以,它显示了ARP中的两个设置。我怎样才能解决这个问题?我可以发布msi和exe吗?

+1

“我想发布setup.msi和setup.exe” - 为什么? – 2012-07-30 10:37:06

+0

只需使用像Inno Setup这样的工具即可。 Visual Studio中的Winows Installer功能正在被删除。 – 2012-07-30 11:09:42

+4

@Ramhound - Windows Installer不是Visual Studio的一个功能,它是Windows Platform SDK的一部分。你在说的是Visual Studio部署项目。这是一个编写Windows Installer数据库的Visual Studio功能。他们正在被删除,因为他们在编写适当的MSI数据库方面做得如此糟糕。海报并没有使用这个工具,这让我感到震惊,你敢推荐一个工具,甚至没有对这个空间有一个基本的了解。 – 2012-07-30 11:59:46

回答

1

在ARP中看到2个条目表示MSI和EXE具有不同的ProductCode值。您可能将Product @ Id属性设置为*。通常这是正确的,但在你的情况下它不是。 MSI和EXE可能也有不同的PackageCode值。 (包@ Id)的

两个解决方案:

1)构建EXE,然后使用postbuild事件提取MSI

2)构建EXE和MSI两次,但把GUID生成到您的构建自动化并将它作为变量传递给WiX构建,以使它们都获得相同的值。

+0

但Wix捆绑软件不能拥有产品标签。那么,我如何提供产品ID? – AArora 2012-07-30 12:21:28

+0

这里我使用Setup.Bootstrapper项目来刻录setup.msi来获取Setup.exe。 – AArora 2012-07-30 12:31:25

+0

我还没玩过WiX的bootstrapper部分。不过,这些症状告诉我,您正在使用不同的ProductCode属性构建MSI。 – 2012-07-30 15:31:36

0

把这个语句放到你的MSI项目中,这将阻止MSI表单在ARP中创建ICON。

<Property Id="ARPSYSTEMCOMPONENT" Value="1" /> 
+1

我还没有测试过,但这听起来像是会破坏海报的最终用户只安装MSI版本的情况;在这个MSI专用的情况下,应该有一个ARP图标。此外,也许这个答案可以防止任何图标出现在ARP中,防止卸载产品? – 2012-11-03 09:20:02

相关问题