在visual studio中创建WiX Bootstrapper时是否需要2个WIX项目?

时间:2017-01-15 22:05:05

标签: visual-studio wix

刚开始使用Visual Studio中的WiX。找不到bootstrapper项目模板的大量文档。

我创建了一个空白的WPF应用程序。然后我创建了一个安装项目...

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="WiXBenchInstaller" Language="1033" Version="1.0.0.0" Manufacturer="None" UpgradeCode="9d845a6d-3e16-45d6-b0c4-7e818e465bfe">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate EmbedCab="yes"/>

    <Feature Id="ProductFeature" Title="WiXBenchInstaller" Level="1">
        <ComponentGroupRef Id="ProductComponents" />
    </Feature>
</Product>

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="WiXBench" />
        </Directory>
    </Directory>
</Fragment>

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
        <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
         <Component Id="ProductComponent">
     <File Source="$(var.WiXBench.TargetPath)"/>
         </Component> 
    </ComponentGroup>
</Fragment>

然后我创建了一个bootstrapper项目......

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="WixBenchBootstrap" Version="1.0.0.0" Manufacturer="None" UpgradeCode="4b1049ed-38ba-4289-8d8d-e291160201e0">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

    <Chain>
  <MsiPackage SourceFile="$(var.WiXBenchInstaller.TargetPath)"/>
    </Chain>
</Bundle>

一切运转良好。我的问题是这是否是正确的方法。对于一个简单的应用程序来说,拥有2个安装程序项目似乎有些过分。我可以简单地使用包含所需内容的单个引导程序项目吗?

2 个答案:

答案 0 :(得分:1)

这取决于你想要达到的目标,包的数量,UI等。

http://wixtoolset.org/documentation/manual/v3/bundle/

“bundle是在单个用户体验中链接在一起的安装包的集合。在应用程序的.MSI文件之前,Bundle通常用于安装先决条件,例如.NET Framework或Visual C ++运行时。允许将非常大的应用程序或应用程序套件分解为更小的逻辑安装包,同时仍然向最终用户呈现单个产品“

如果您有一个msi软件包,并且您不需要复杂的UI,那么仅仅使用MSI项目。 如果您有多个软件包或者您想要一个WPF UI,则必须使用现在使用的引导程序。

答案 1 :(得分:1)

是的,这是正确的方法。

通常,VS项目会生成一个主输出(.exe,.dll,.netmodule,.lib,.msi等),而wixprojs也不例外。对此没有规定;它只是MSBuild .targets文件及其相关VS项目设计者的设计。

如果它分散了不同的开发人员,您可以拥有包含不同项目子集的不同解决方案。 (解决方案包括零个或多个项目。项目包含在零个或多个解决方案中。)