2014-04-09 134 views
1

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

C:\用户\ BNK \桌面\威克斯 - 弹出\ setup.wxs(60):警告LGHT1076: ICE69:不匹配的部件的参考。条目'FCONStartMenuShortcut' 快捷方式表b从组件'FCONShortcut'。但是, “Tar get”列中的格式化字符串引用了文件 'FCONUCClient.exe',它属于组件'FCONUCClient.exe'。 组件具有相同的功能。

有人可以告诉我我的代码有什么问题吗? 这里是维克斯安装程序代码...

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

回答

2

从经验中的一些建议:每个组件

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

请给这些网站脱脂,以帮助您调整了技术:

+0

嗨,我尝试了你的建议。 第一个,没有任何区别警告... 在第二个我有一些疑问,如果我将快捷方式移动到应用程序文件组件,快捷方式将放置在哪里?我想要在开始菜单中, 感谢 –

+1

您需要为您的快捷方式元素添加一个“Directory”属性并指定快捷方式的位置。请参阅:http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_start_menu_shortcut.html和http://wixtoolset.org/documentation/manual/v3/xsd/wix/shortcut.html –

+0

好的,所以,我使用Directory创建startmenu目录,并使用Directory属性右键指定快捷方式内的路径? –