【问题标题】:Do I need 2 WIX projects when creating WiX Bootstrapper in visual studio?在 Visual Studio 中创建 WiX Bootstrapper 时是否需要 2 个 WIX 项目?
【发布时间】:2017-01-17 07:51:28
【问题描述】:

刚刚开始在 Visual Studio 中使用 WiX。找不到很多引导程序项目模板的文档。

我创建了一个空白的 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>

然后我创建了一个引导程序项目...

<?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 个安装程序项目似乎有点过头了。我可以简单地拥有一个包含所有需要的引导程序项目吗?

【问题讨论】:

    标签: visual-studio wix


    【解决方案1】:

    是的,这是正确的方法。

    一般来说,VS 项目产生一个主要输出(.exe、.dll、.netmodule、.lib、.msi 等),wixprojs 也不例外。对此没有任何规定;这只是 MSBuild .targets 文件及其相关 VS 项目设计器的设计。

    如果它分散了不同开发人员的注意力,您可能会采用包含不同项目子集的不同解决方案。 (一个解决方案包含零个或多个项目。一个项目包含在零个或多个解决方案中。)

    【讨论】:

      【解决方案2】:

      这取决于你想要实现什么,包的数量,UI 等。

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

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

      如果您有一个 msi 包,并且不需要复杂的 UI,而只使用 MSI 项目。 如果您有多个包或想要 WPF UI,则必须像现在一样使用引导程序。

      【讨论】:

      • 确实如此。除了我想要一个 .exe,而不是 .msi。 WiX 安装项目有一个创建 exe 的选项,但这似乎不起作用。我认为这是一个错误。我还想要显示许可证文件等的引导程序中的 UI。所以看来我确实需要 2 个 WiX 项目来完成这项工作。
      • 如果你需要一个 exe,你必须像上面那样制作一个包。此外,MSI 有一个选项来显示许可证和其他 Build in 对话框。 wixtoolset.org/documentation/manual/v3/wixui/… 。如果我的回答有帮助,请标记为已回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多