【问题标题】:WiX installer does not work on vs 2012WiX 安装程序不适用于 vs 2012
【发布时间】:2012-09-27 15:04:10
【问题描述】:

我想为我的应用程序创建一个安装程序。我已经下载了 WiX 3.6 并将其安装在 vs 2012 上。

  1. 创建简单的 winform 应用程序
  2. 将 WiX 设置项目添加到我的解决方案中
  3. 右键单击参考并将我的 winform 应用程序添加到安装程序的参考
  4. 我构建解决方案并转到安装项目中的调试目录并运行 SetupProject1.exe.msi 它不起作用并关闭安装程序对话框而没有任何错误。

返回设置项目

  1. 右键单击设置项目并选择属性
  2. 在安装程序选项卡 > 输出类型,将其更改为 executablefile.exe
  3. 构建它并去调试并运行 SetupProject1.exe - 仍然无法工作

怎么了?这是我的设置项目product.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="Natiloos" UpgradeCode="cfc2f4dd-2da5-49e2-9099-96968d75aaa4">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

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

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

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="SetupProject1" />
        </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"> -->

        <!-- </Component> -->
    </ComponentGroup>
</Fragment>

如何让安装程序正确构建?

【问题讨论】:

  • 您使用的是什么版本的 WiX?

标签: c# wix windows-installer


【解决方案1】:

问题是您的安装程序没有安装任何东西。添加您的项目作为对安装程序的引用并不意味着安装程序将包含您的项目输出。在您的设置项目中,您有:

<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"> -->

    <!-- </Component> -->
  </ComponentGroup>
</Fragment>

您需要添加文件...即取消注释 &lt;Component&gt;&lt;/Component&gt; 标签并手动添加您的文件。每个文件最好有一个&lt;Component&gt; 标签。

例子:

 <Component Id="MyProgram.exe" Guid="PUT-GUID-HERE">
      <File Id="MyProgram.exe" KeyPath="yes" Source="Path_To_Output_Folder\MyProgram.exe" />
 </Component>

【讨论】:

  • 在 VS2012 中有没有办法完全自动化这个?还是强制输入 XML?
  • 您可以使用工具 Heat:wix.sourceforge.net/manual-wix3/heat.htm 实现自动化。一般来说,我为我的项目手动输入它,但如果某些东西正在开发和不断变化,例如帮助文件或其他补充内容,则使用 Heat。请注意,您 曾经 能够在项目上运行 heat 但这是错误的,因此他们删除了该功能。我通常会编写一个调用 Heat 的包装器,然后将生成的 xml 调整为我想要的。
【解决方案2】:

您所描述类型的 WiX 项目会生成 MSI 文件,扩展名为 .msi。这些安装程序不直接运行,而是使用msiexec.exe 运行。默认情况下,Windows 资源管理器会在您双击它们时为您执行此操作,但是您可以使用如下命令显式调用 msiexec

msiexec MyInstaller.msi

请注意,MSI 文件与可执行文件完全不同 - 将安装程序的输出名称更改为具有 .exe 扩展名,或将文件重命名为具有 .exe 扩展名将不起作用。

如果您想生成基于 .exe 的安装程序,那么您需要一个引导程序。 WiX 有一个叫做 Burn,但是如果我是你,我会担心首先制作一个可以运行的 MSI,然后然后担心创建一个可执行的引导程序。

【讨论】:

  • @motevallizadeh 定义“不起作用”。目前,除了在添加/删除程序列表中添加一个 extry 之外,您的安装程序不会执行任何操作 - 您尚未指定要安装的内容。
  • @motevallizadeh 您错过了该指南中将&lt;File /&gt; 元素添加到&lt;Component /&gt; 的部分
  • 我认为问题在于 WiX 的文档非常糟糕。本教程将他的方法描述为可行的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多