Wix 设置中的警告

Posted

技术标签:

【中文标题】Wix 设置中的警告【英文标题】:Warning in Wix Setup 【发布时间】:2014-04-09 09:25:42 【问题描述】:

我是 Wix 工具包的新手。我正在为我的应用程序使用 Wix Toolkit 创建一个设置。 但是当我尝试使用 Wix 构建它时。它显示此警告。

C:\Users\BNK\Desktop\wix - popup\setup.wxs(60):警告 LGHT1076: ICE69:不匹配的组件参考。条目“FCONStartMenuShortcut” 快捷方式表属于组件“FCONShortcut”。然而, 列“Tar get”引用文件中的格式化字符串 属于组件“FCONUCClient .exe”的“FCONUCClient.exe”。 组件具有相同的功能。

谁能告诉我我的代码有什么问题? 这是 Wix 设置代码...

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' >

  <Product Name='FCON UC Client 1.0.9' Id='PUT-GUID-HERE' 
          UpgradeCode='PUT-GUID-HERE'
          Language="'1033'" Codepage='1252' Version='1.0.9' 
          Manufacturer='BNK Systems JLT' >
    <!-- Product Info-->

    <Package Id='*' Keywords='Installer' Description="FCON UC Client 1.0.9"
      Comments='All Rights Reserved BNK Systems JLT.' 
      Manufacturer='BNK Systems JLT' InstallerVersion='100' Languages='1033'
      Compressed='yes' SummaryCodepage='1252' />
    <!-- Package Info-->
    <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt='CD-ROM #1' />
    <!-- Setup is CDROM Installer Package-->
    <Property Id='DiskPrompt' 
              Value="BNK Systems JLT FCON UC Client Installation" />
    <!-- Definition for DiskPrompt used in Media above -->

    <Directory Id="TARGETDIR" Name="SourceDir">
      <!--  Directory Structure Root -->
      <Directory Id="ProgramFilesFolder">
        <!-- Install the Package in Program Files Folder -->
        <Directory Id="APPLICATIONROOTDIRECTORY" Name="BNK Systems">
          <!-- Create a Folder namely BNK Systems  inside Program Files ; Id APPLICATIONROOTDIRECTORY can be defined later-->
          <Directory Id="APPLICATIONFILEDIRECTORY" Name="FCON UC Client">
            <!-- Create a Folder namely FCON UC Client inside BNK Systems; Id APPLICATIONFILEDIRECTORY can be defined later -->

          </Directory>
        </Directory>
      </Directory>

      <Directory Id="ProgramMenuFolder">
        <!-- Program Files StartMenu Folder-->
        <Directory Id="FCONStartMenuFolder" Name="BNK Systems"/>
      </Directory>
    </Directory>

    <DirectoryRef Id="APPLICATIONFILEDIRECTORY">
      <!-- Definition of Directory APPLICATIONFILEDIRECTORY  -->
      <Component Id="FCONUCClient.exe" Guid="*">
        <!-- Application files & settings to be installed goes here-->
        <File Source="FCON UC Client.exe" KeyPath="yes" Checksum="yes"/>
        <File Source="Asterisk.NET.dll" />
        <File Source="Dotnetrix.TabControl.dll" />
        <File Source="FCON UC Client.exe.manifest" />
        <File Source="jabber-net.dll" />
        <File Source="muzzle.dll" />
        <File Source="netlib.Dns.dll" />
        <File Source="zlib.net.dll" />
        <File Source="inittrial.exe" />
     </Component>
    </DirectoryRef>

    <DirectoryRef Id="FCONStartMenuFolder">
      <Component Id="FCONShortcut" Guid="*">
        <Shortcut Id="FCONStartMenuShortcut"
                     Name="FCON UC Client 1.0.9"
                   Description="FCON UC Client 1.0.9"
                    Target="[#FCONUCClient.exe]"
                          WorkingDirectory="APPLICATIONFILEDIRECTORY"/>
       <RemoveFolder Id="FCONStartMenuFolder" On="uninstall"/>

       <RegistryValue Root="HKCU" Key="Software\Microsoft\FCONUCClient" 
                      Name="installed" Type="integer" Value="1" KeyPath="yes"/>

      </Component>
    </DirectoryRef>

    <!-- Step 3: Tell WiX to install the files -->
    <Feature Id="InstallFCON" Title="FCON UC Client 1.0.9" Level="1">
      <ComponentRef Id="FCONUCClient.exe" />
      <!--<ComponentRef Id="documentation.html" />-->
      <ComponentRef Id="FCONShortcut" />
    </Feature>

  </Product>
</Wix>

【问题讨论】:

【参考方案1】:

一些建议来自经验:

每个组件使用一个文件,这样可以避免各种问题(例外:多文件 .net 程序集应该放在一个组件中。也可能有其他例外,但作为一般规则:每个组件一个文件) . 将快捷方式添加到它们引用的文件所在的同一组件。 在您的情况下,这意味着将 FCONStartMenuShortcut 移动到 FCONUCClient.exe 组件。 仅检查每个组件的密钥文件以确定是否应安装整个组件。当您将多个文件放在同一个组件中时,这意味着如果未升级密钥文件,则不会在升级中更新任何文件。这违反了 Microsoft 的最佳实践规则(组件规则)。

请浏览一下这些网站,以帮助您评估技术:

http://wix.tramontana.co.hu/ http://wixtoolset.org/documentation/manual/v3/main/wix_learning.html http://www.codeproject.com/Tips/105638/A-quick-introduction-Create-an-MSI-installer-with(很好的基于代码的,让“修补匠”有一个良好的开端)

【讨论】:

您好,我尝试了您的建议。第一个,警告没有任何区别......在第二个我有一些疑问,如果我将快捷方式移动到应用程序文件组件,快捷方式将放置在哪里?我想要它在开始菜单中,谢谢 您需要在 Shortcut 元素中添加“Directory”属性并指定快捷方式的位置。请参阅:wixtoolset.org/documentation/manual/v3/howtos/… 和 wixtoolset.org/documentation/manual/v3/xsd/wix/shortcut.html 好的,所以,我在开始菜单中使用Directory创建目录,并使用Directory属性指定快捷方式内的路径? 快捷方式实际上会指向 Target。尝试在您的 Wix 二进制文件文件夹中搜索 WiX.chm。搜索 Shortcut 元素,您应该可以轻松访问所需的属性信息

以上是关于Wix 设置中的警告的主要内容,如果未能解决你的问题,请参考以下文章

使用 WiX 中的在线设置安装 .NET 框架

如何根据wix中的条件设置功能级别?

在自定义对话框中自定义 Wix 安装程序中的图像

自定义 Wix UI 中的 InstallScopeDlg 不起作用

如何在每次创建 msi 期间动态更改 wix 中的产品版本

拆分 WIX 文件