WiX安装程序无法在vs 2012上运行

时间:2012-09-27 15:04:11

标签: c# wix windows-installer

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

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

    1. 右键单击安装项目并选择属性
    2. 在安装程序选项卡上>输出类型,将其更改为executablefile.exe
    3. 构建它并转到调试并运行SetupProject1.exe - 仍然无法正常工作
    4. 有什么问题?这是我的安装项目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>
      

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

2 个答案:

答案 0 :(得分:4)

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

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

您需要添加文件...即。取消注释<Component></Component>标记并手动添加文件。每个文件都有一个<Component>标记,这很好。

示例:

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

答案 1 :(得分:0)

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

msiexec MyInstaller.msi

请注意,MSI文件与可执行文件完全不同 - 将安装程序产品的输出名称更改为.exe扩展名,或者将文件重命名为.exe扩展名将无效。

如果要生成基于.exe的安装程序,那么您需要的是一个引导程序。 WiX有一个名为Burn,但如果我是你,我会担心让MSI先行,然后然后担心创建一个可执行的bootstrapper。