使用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 安裝程式的步驟。 我想在另一篇文章中討論詳細的設置。