2014-07-07 2 views
1

WiX-Installer 내에서 선택한 기능에 따라 바탕 화면 바로 가기를 만드는 데 어려움을 겪고 있습니다. 설치 프로그램을 실행하면 바로 가기가 나타나지 않습니다. 한 가지 기능 만 선택하거나 두 가지 모두 선택하면 문제가되지 않습니다. 거기에 아이디어가 있습니까? WiX 3.8; 선택된 기능에 따른 바탕 화면 바로 가기

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
<Product Id="XXX" Name="MyProduct" Language="1031" Codepage="1252" Version="4.4.0" Manufacturer="MyCompany" UpgradeCode="XXX"> 
    <Package Description="MyProductDescription" Comments="someText" InstallerVersion="400" Compressed="yes" InstallScope="perMachine" Languages="1031"/> 
    <Media Id="1" Cabinet="application.cab" EmbedCab="yes" CompressionLevel="high"/> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder" Name="PFiles"> 
      <Directory Name="LfF" Id="INSTALLDIR"> 
       <Directory Id="BIN" Name="bin"/> 
        <Component Id="App1.exe" Directory="BIN" Guid="XXX"> 
         <File Id="App1.exe" KeyPath="yes" Source="$(var.src)\App1.exe" /> 
        </Component> 
        <wix:Component Id="DesktopShortcutApp1" Directory="DesktopFolder" Guid="" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"> 
         <wix:Shortcut Id="desktopShortcutApp1" Directory="DesktopFolder" Name="App1.exe" Target="[App1.exe]" WorkingDirectory="BIN" Icon="DesktopIconApp1.exe" IconIndex="0" /> 
         <wix:RegistryValue Root="HKCU" Key="Software\[Manufacturer]\App1_Desktop_Shortcut" Name="installed" Type="integer" Value="1" /> 
        </wix:Component> 
        <Component Id="App2.exe" Directory="BIN" Guid="XXX"> 
         <File Id="App2.exe" KeyPath="yes" Source="$(var.src)\App2.exe" /> 
        </Component> 
        <wix:Component Id="DesktopShortcutApp2" Directory="DesktopFolder" Guid="" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"> 
         <wix:Shortcut Id="desktopShortcutApp2" Directory="DesktopFolder" Name="App2.exe" Target="[App2.exe]" WorkingDirectory="BIN" Icon="DesktopIconApp2.exe" IconIndex="0" /> 
         <wix:RegistryValue Root="HKCU" Key="Software\[Manufacturer]\App2_Desktop_Shortcut" Name="installed" Type="integer" Value="1" /> 
        </wix:Component> 
       </Directory> 
      </Directory> 
     </Directory> 
     <Directory Id="DesktopFolder"/> 
     <Directory Id="ProgramMenuFolder"> 
      <Directory Id="ProgramMenuDir" Name="MyProductName"> 
       <Component Id="StartMenuShortcuts" Guid="XXX"> 
        <RemoveFolder Id="ProgramMenuDir" On="uninstall"/> 
        <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value=""/> 
       </Component> 
      </Directory> 
     </Directory> 
    </Directory> 
    <Feature Id="App1" Level="1" Title="App1" TypicalDefault="advertise"> 
     <ComponentRef Id="App1.exe" /> 
     <ComponentRef Id="DesktopShortcutApp1" /> 
    </Feature> 
    <Feature Id="App2" Level="1" Title="App2" TypicalDefault="advertise"> 
     <ComponentRef Id="App2.exe" /> 
     <ComponentRef Id="DesktopShortcutApp2"/> 
    </Feature> 
    <UI> 
    </UI> 
    <WixVariable Id="WixUIBannerBmp" Value="..\src\bannerapp.bmp"/> 
    <WixVariable Id="WixUIDialogBmp" Value="..\src\dialogapp.bmp"/> 
    <UIRef Id="WixUI_FeatureTree_NoLicense"/> 
    <Icon Id="DesktopIconApp1.exe" SourceFile="$(var.src)\App1.exe"/> 
    <Icon Id="DesktopIconApp2.exe" SourceFile=".$(var.src)\App2.exe"/>    
</Product> 

스크립트

는 원래의 단축 된 버전이다. Directory Id="BIN"의 내용은 heat.exe를 통해 생성되고 xslt로 수정됩니다.

답변

0

많은 시도와 오류 후에 해결책을 찾았습니다.

  1. 는 것을 의미한다 (각 기능의 Level="32767"TypicalDefault="install"을 설정 바로 가기 요소
  2. 의 자식에있는 아이콘 요소를 구성하는 파일 요소를 containig 구성 요소의 자식으로 바로 가기 요소를합니다 할 일을 해당 기능을 설치하지 마십시오)

설치 과정에서 설치할 기능을 선택하십시오.이 경우에만 desktopshortcut이 생성됩니다.

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
    <Product Id="XXX" Name="MyProduct" Language="1031" Codepage="1252" Version="4.4.0" Manufacturer="MyCompany" UpgradeCode="XXX"> 
     <Package Description="MyProductDescription" Comments="someText" InstallerVersion="400" Compressed="yes" InstallScope="perMachine" Languages="1031"/> 
     <Media Id="1" Cabinet="application.cab" EmbedCab="yes" CompressionLevel="high"/> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder" Name="PFiles"> 
       <Directory Name="LfF" Id="INSTALLDIR"> 
        <Directory Id="BIN" Name="bin"/> 
         <Component Id="App1.exe" Directory="BIN" Guid="XXX"> 
          <File Id="App1.exe" KeyPath="yes" Source="$(var.src)\App1.exe" /> 
          <Shortcut Id="desktopShortcutApp1" Directory="DesktopFolder" Name="App1.exe" WorkingDirectory="BIN" Advertise="yes"> 
           <Icon Id="DesktopApp1.ico" SourceFile="$(var.src)/App1.ico" /> 
          </Shortcut> 
         </Component> 
         <Component Id="App2.exe" Directory="BIN" Guid="XXX"> 
          <File Id="App2.exe" KeyPath="yes" Source="$(var.src)\App2.exe" /> 
          <Shortcut Id="desktopShortcutApp2" Directory="DesktopFolder" Name="App2.exe" WorkingDirectory="BIN" Advertise="yes"> 
           <Icon Id="DesktopApp2.ico" SourceFile="$(var.src)/App2.ico" /> 
          </Shortcut> 
         </Component> 
        </Directory> 
       </Directory> 
      </Directory> 
      <Directory Id="DesktopFolder"/> 
      <Directory Id="ProgramMenuFolder"> 
       <Directory Id="ProgramMenuDir" Name="MyProductName"> 
        <Component Id="StartMenuShortcuts" Guid="XXX"> 
         <RemoveFolder Id="ProgramMenuDir" On="uninstall"/> 
         <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value=""/> 
        </Component> 
       </Directory> 
      </Directory> 
     </Directory> 
     <Feature Id="App1" Level="32767" Title="App1" TypicalDefault="install"> 
      <ComponentRef Id="App1.exe" /> 
     </Feature> 
     <Feature Id="App2" Level="32767" Title="App2" TypicalDefault="install"> 
      <ComponentRef Id="App2.exe" /> 
     </Feature> 
     <UI> 
     </UI> 
     <WixVariable Id="WixUIBannerBmp" Value="$(var.src)/bannerapp.bmp"/> 
     <WixVariable Id="WixUIDialogBmp" Value="$(var.src)/dialogapp.bmp"/> 
     <UIRef Id="WixUI_FeatureTree_NoLicense"/>  
    </Product> 
</Wix> 
: 여기

그리고

코드입니다
관련 문제