使用 WiX 创建 Windows 安装程序"MSI"第 2 部分

页面创建日期 :

入门

上次,我准备了所需的文件并设置了项目。 这一次,您将编辑"产品.wxs"以设置安装程序的各种设置。

编辑安装设置 (Product.wxs)

产品.wxs 文件的内容以 XML 格式描述。 有许多参数,但首先,我们将进行最少的设置,以确保安装程序可以创建。 如果您想进行更详细的设置,请访问其他文章或官方网站。

在创建项目时,代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="SetupLittleSaviorTrial_x86" Language="1033" Version="1.0.0.0" Manufacturer="" UpgradeCode="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

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

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

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="SetupLittleSaviorTrial_x86" />
      </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"> -->
      <!-- TODO: Insert files, registry keys, and other resources here. -->
      <!-- </Component> -->
    </ComponentGroup>
  </Fragment>
</Wix>

下面介绍了需要更改的位置。 添加不存在的标记和属性。

Wix/Product/@Id

设置标识应用程序的 GUID。

有许多工具可以生成 GUID,但使用视觉工作室附带的工具非常快。 从菜单中选择"工具"和"创建 GUID"。

image

获取包含连字符的 36 位代码,并将其设置为"Wix/产品/@Id"。

<Wix>
  <Product Id="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" />

Wix/Product/@Name

这是安装程序屏幕各部分中显示的应用程序名称。 它还是"添加或删除程序"列表中显示的名称。

<Wix>
  <Product Name="リトルセイバー 体験版" />

image

image

Wix/Product/@Manufacturer

输入制造商的名称。 它将显示在安装程序作者和程序列表的发布者中。

<Wix>
  <Product Manufacturer="ソーサリーフォース">

image

image

Wix/Product/UIRef/@Id

输入标识安装向导显示屏幕的 ID。 这一次,我指定"WixUI_Minimal",因为它是只显示和安装许可证的最小配置。

<Wix>
  <Product>
    <UIRef Id="WixUI_Minimal" />

我认为以下网站将帮助您指定哪些内容。

使用 WixUI 对话框集

Wix/Product/WixVariable/*

指定要在向导 UI 中使用的文件。 最小配置使用三个文件: Id 的值是固定的,并且为值指定文件名。

<Wix>
  <Product>
    <WixVariable Id="WixUILicenseRtf" Value="license.rtf" />
    <WixVariable Id="WixUIDialogBmp" Value="dialog.bmp" />
    <WixVariable Id="WixUIBannerBmp" Value="banner.bmp" />

安装应用程序图标

用于应用程序图标,如"添加或删除程序"。

在图标元素的"源文件"中,指定相对于项目文件夹的路径的 ico 文件。

属性 Id="ARPPRODUCTICON"是图标的关联定义。

<Wix>
  <Product>
    <Icon Id="LITTLESAVIOR.ICO" SourceFile="LittleSaviorTrial\LittleSavior.ico" />
    <Property Id="ARPPRODUCTICON" Value="LITTLESAVIOR.ICO" />

Wix/碎片(配置文件夹)

设置要安装到的文件夹配置。 最初,您将放置文件,但首先只创建文件夹。

"Id="程序菜单"中设置的"名称"值是放置在"开始"菜单快捷方式中的文件夹的名称。 请设置 Guid。

<Wix>
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="SetupLittleSaviorTrial_x86" />
      </Directory>
      <Directory Id="ProgramMenuFolder">
        <Directory Id="ProgramMenuDir" Name="リトルセイバー 体験版">
          <Component Id="ProgramMenuDir" Guid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
            <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
            <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
          </Component>
        </Directory>
      </Directory>
    </Directory>
  </Fragment>

添加安装文件

您可以手动将其添加到产品.wxs 文件中。 由于文件需要 GUID,因此当文件数量增加时,这非常困难。 因此,使用 WixEdit 添加文件。

启动"WixEdit"。

image

打开您的产品.wxs 文件。

image

image

从左侧图标中选择"文件"。 删除"程序文件文件夹"下的文件夹。

image

右键单击"程序文件文件夹"文件夹,然后选择"导入文件夹"。

image

选择要安装的文件所在的文件夹。

image

一系列文件将添加到树中。

image

要与其他参数关联,请选择添加的文件夹,并将"ID"重新设置为"INSTALLFOLDER"。

image

创建"开始"菜单的快捷方式。 从 exe 文件的右键单击菜单中选择"新建"和"短"。

image

添加 Shortcut 后,选择它,然后右键单击空白以添加属性。

image

添加以下参数: (请根据程序重新命名唯一名称。

属性
Id LITTLESAVIORTRIAL. EXE_shortcut
Name 小剑试用版
Directory ProgramMenuDir
WorkingDirectory INSTALLDIR
Icon LITTLESAVIOR. ICO
IconIndex 0
Advertise yes

image

然后,选择"功能"选项卡,右键单击"产品功能",然后选择"选择组件到添加"。

image

选择所有。

image

已添加。

image

保存。

image

产品.wxs 应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" Name="リトルセイバー 体験版" Language="1033" Version="1.0.0.0" Manufacturer="ソーサリーフォース" UpgradeCode="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />
    <UIRef Id="WixUI_Minimal" />
    <WixVariable Id="WixUILicenseRtf" Value="license.rtf" />
    <WixVariable Id="WixUIDialogBmp" Value="dialog.bmp" />
    <WixVariable Id="WixUIBannerBmp" Value="banner.bmp" />
    <Icon Id="LITTLESAVIOR.ICO" SourceFile="LittleSaviorTrial\LittleSavior.ico" />
    <Property Id="ARPPRODUCTICON" Value="LITTLESAVIOR.ICO" />
    <Feature Id="ProductFeature" Title="SetupLittleSaviorTrial_x86" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentRef Id="LITTLESAVIOR.ICO" />
      <ComponentRef Id="LITTLESAVIORTRIAL.EXE" />
      <ComponentRef Id="LITTLESAVIORTRIAL.EXE.CONFIG" />
      <ComponentRef Id="ProgramMenuDir" />
    </Feature>
    <UI />
  </Product>
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="LittleSaviorTrial">
          <Component Id="LITTLESAVIOR.ICO" DiskId="1" Guid="0B4DD82C-C6EF-4299-8EAB-4F9BB35FD952">
            <File Id="LITTLESAVIOR.ICO" Name="LittleSavior.ico" Source="LittleSaviorTrial\LittleSavior.ico" />
          </Component>
          <Component Id="LITTLESAVIORTRIAL.EXE" DiskId="1" Guid="8D805936-A25E-4DA6-9A0A-A5BDB2AD768D">
            <File Id="LITTLESAVIORTRIAL.EXE" Name="LittleSaviorTrial.exe" Source="LittleSaviorTrial\LittleSaviorTrial.exe" KeyPath="yes">
              <Shortcut Id="LITTLESAVIORTRIAL.EXE_shortcut" Name="リトルセイバー 体験版" Directory="ProgramMenuDir" WorkingDirectory="INSTALLDIR" Icon="LITTLESAVIOR.ICO" IconIndex="0" Advertise="yes" />
            </File>
          </Component>
          <Component Id="LITTLESAVIORTRIAL.EXE.CONFIG" DiskId="1" Guid="790C427A-A72C-4444-ACD6-ECF32AA788AD">
            <File Id="LITTLESAVIORTRIAL.EXE.CONFIG" Name="LittleSaviorTrial.exe.config" Source="LittleSaviorTrial\LittleSaviorTrial.exe.config" />
          </Component>
        </Directory>
      </Directory>
      <Directory Id="ProgramMenuFolder">
        <Directory Id="ProgramMenuDir" Name="リトルセイバー 体験版">
          <Component Id="ProgramMenuDir" Guid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
            <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
            <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
          </Component>
        </Directory>
      </Directory>
    </Directory>
  </Fragment>
  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
    </ComponentGroup>
  </Fragment>
</Wix>

生成和运行检查

在视觉工作室中,将解决方案配置设置为"发布"。

image

从生成解决方案开始生成。

image

成功生成后,将在 bin_发布文件夹中生成 msi 文件。

image

运行安装程序时,安装程序将启动。

image

安装完成后,将在"开始"菜单中创建快捷方式。

image

文件放置在"程序文件 (x86)"文件夹中。

image

应用程序也显示在"程序和功能"中。

image

运行应用程序以确保其正常工作。

image

总结

在这里,我们介绍了使用视觉工作室和 WiX 创建 MSI 安装程序的步骤。 我想在另一篇文章中讨论详细的设置。