如果需要安装,我正在尝试创建用于安装.NET Framework 4.0的软件包。我意识到有类似的问题,但所有的答案都只是片段,并没有描述它们进入的文件,以及它们是如何导入.wxs文件的。
这是我在Bundle.wxs文件中的内容。我收到有关多个输入部分的编译器警告。
错误2找到了多个输入部分“{CF06625F-7B6B-4B6E-A24E-FDDCA7CFFFF4}”和“{0D1EE60A-FC4F-4083-8B1E-311E75A67B4C}”。单个目标中可能只存在一个输入部分。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle UpgradeCode="{C6FF478E-C3DA-4D78-929D-24C3F3307356}" Version="4.0">
<Chain>
<PackageGroupRef Id="NetFx40Redist"/>
</Chain>
</Bundle>
</Wix>
WiX页面上的大多数链接都已损坏,并且未提及有关要在Bundle标记上使用的属性的任何内容,并且似乎要交换包/产品。我在Wix页面上找不到关于为Bundles设置GUID的提及。这对Wix 3.7来说是新鲜事吗?
http://wix.sourceforge.net/manual-wix3/install_dotnet.htm
答案 0 :(得分:19)
该错误表示您的项目正在构建包含多个元素的文件:Product
,Module
,Patch
,PatchCreation
,{{1} }。在您的情况下,听起来您已将具有Bundle
元素的文件添加到已具有Bundle
元素的项目中。今天的WiX工具集不支持这种功能。您需要将Product
元素放在单独的项目中。
因此,在创建引导程序和MSI时,您将拥有两个.wixproj文件。第一个.wixproj将包含您的Bundle
信息。第二个.wixproj将包含您的Product
信息,并具有对第一个.wixproj的项目引用,以便构建顺序正确。
答案 1 :(得分:10)
Wix/Bundle
元素是Bootstrapper项目的根。它与Product.wxs不在同一个项目中。在Visual Studio中,有一个用于新Wix Bootstrapper项目的模板。你可能还没有创建一个。
然后在你的bundle的链中,你将需要.NET和你的应用程序的MSI,如例子中所示。要使用NetFx40Web,您必须引用WixNetfxExtension。引用其他Wix项目的Wix项目具有预定义变量,因此您可以使用其属性(如TargetPath)。该示例假定此Bootstrapper项目引用了名为MyApplicationSetup的安装项目。
<Chain>
<PackageGroupRef Id="NetFx40Web"/>
<MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/>
</Chain>