2012-08-08 30 views
47

Bu kurulum projesini Wix'te kullanıyorum ve masaüstünde kısayol olmasını istedim. Düşünebildiğin kadar kolay olmalı. Ama durum böyle değil. Internet'te bulunan tüm kod parçacıkları çalışmadı. Birkaç saat süren mücadele ve belgeleri okuduktan sonra nihayet doğru anladım, bu yüzden burada sizinle paylaşıyorum.WiX kullanarak masaüstüne kısayol oluştur

+0

şudur ben çok microsoft "teknoloji" bugünlerde ile hissettiklerim: –

cevap

61

Kısayol reklamı olmayan bir tanesidir, umarım bu birilerine yardımcı olur. Bileşeni özellik etiketinize eklediğinizi unutmayın.

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="DesktopFolder" Name="Desktop"> 
     <Component Id="ApplicationShortcutDesktop" Guid="*"> 
      <Shortcut Id="ApplicationDesktopShortcut" 
       Name="Text under your icon" 
       Description="Comment field in your shortcut" 
       Target="[MYAPPDIRPROPERTY]MyApp.exe" 
       WorkingDirectory="MYAPPDIRPROPERTY"/> 
      <RemoveFolder Id="DesktopFolder" On="uninstall"/> 
      <RegistryValue 
       Root="HKCU" 
       Key="Software/MyAppName" 
       Name="installed" 
       Type="integer" 
       Value="1" 
       KeyPath="yes"/> 
     </Component> 
    </Directory> 

    <Directory Id="ProgramFilesFolder" Name="PFiles"> 
     <Directory Id="MyCompany" Name="MyCompany"> 
      <Directory Id="MYAPPDIRPROPERTY" Name="MyAppName"> 
       <!-- main installation files --> 
      </Directory> 
     </Directory> 
    </Directory> 
</Directory> 
+0

Kayıt Defteri Anahtarınızda geriye eğik çizgi gerekir. –

+7

Sert kodlu GUID'ler göndermeyin. Otomatik-oluştur guid için Guid = "*" 'yazın veya {PUT-GUID-HERE} kullanın –

+1

için kayıt defteri değeri nedir? – BatteryBackupUnit

26

benim böylesi daha kolay olduğunu düşünüyorum, bir kayıt defteri anahtarı oluşturmak için gerek: Örneğin

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="DesktopFolder" SourceName="Desktop" /> 
    <Directory Id="MergeRedirectFolder"> 
    <Component Id="MyExeComponent" Guid="{PUT-GUID-HERE}"> 
     <File Id="MyExeFile" Source="$(var.ExeSourcePath)" KeyPath="yes"> 
     <Shortcut 
      Id="DesktopShortcut" 
      Directory="DesktopFolder" 
      Name="$(var.ShortcutName)" 
      WorkingDirectory="MergeRedirectFolder" /> 
     </File> 
    </Component> 
    </Directory> 
</Directory> 
+1

[belgeler] 'den (http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_start_menu_shortcut.html) kayıt defteri anahtarı: _ "Bu, Kısayol olarak, geçerli kullanıcılar için reklamı olmayan kısayolları yüklerken bir bileşen için KeyPath işlevi yapamaz." _ – blins

+0

dosya bileşeninin kendisi anahtar yoldur, kısayol dosya özelliklerini "devralır". Birçok dosya arasında bu masaüstü kısayolunu izlemeye çalıştığınızda, bu şekilde biraz kafa karıştırıcı olabilir.Kompakt ve izlenebilirlik için kullanıcı tercihi bence? –

13

teşekkürler. WIX 3.8'de hala yükseliyor: "Hata 3 ICE43: Bileşen ..., reklamı yapılmamış kısayollara sahiptir. HKCU altında bir kayıt defteri anahtarını, bir dosya değil, KeyPath olarak kullanmalıdır."

Yani özelliklere sahip bir dosyada bu tür bir yol yaptı:

<Component Id="cmp79F6D61F01DD1060F418A05609A6DA70" 
       Directory="dirBin" Guid="*"> 
     <File Id="fil34B100315EFE9D878B5C2227CD1454E1" KeyPath="yes" 
      Source="$(var.SourceDir)\FARMS.exe" > 
     <Shortcut Id="DesktopShortcut" 
        Directory="DesktopFolder" 
        Name="FARMS $(var.FarmsVersion)" 
        Description="Local Land Services desktop application" 
        WorkingDirectory="INSTALLFOLDER" 
        Icon="FARMS.exe" 
        IconIndex="0" 
        Advertise="yes" > 
      <Icon Id="FARMS.exe" SourceFile="$(var.SourceDir)\FARMS.exe" /> 
     </Shortcut> 
     </File> 
    </Component> 

Ve ürün tanımı ile bir dosyada masaüstü klasörü söz: Bu documentation yılında çok daha kolay görünüyor

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="DesktopFolder" Name="Desktop" /> 

     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLFOLDER" Name="FARMS" > 
     </Directory> 
     </Directory> 
    </Directory> 
    </Fragment> 
1

.

Önce,

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="DesktopFolder" Name="Desktop"/> 

O zaman bir kısayol oluşturmak istediğiniz dosya için kısayol bileşenini oluşturmalıdır, sizin DesktopFolder işaret etmek gerekir.

<Component Id="PutYourComponentIdHere" Directory="FileDirectory" Guid="*"> 
    <File Id="NotYourComponentId" KeyPath="yes" Source="..\YourFileSource\YourExecutable.exe"> 
     <Shortcut Id="desktopServer" Directory="DesktopFolder" Name="YourShourtcutName" WorkingDirectory='WhereShouldYourShortcutPoint' Advertise="yes"/> 
    </File> 
    </Component> 

Benim için çalıştı. Simge koymalıyım ama bu kolay kısım. Umarım çalışır.

<Product ...> 
    <Feature Id="ProductFeature" Title="SetupProject" Level="1"> 
     ... 
     ... 
     <ComponentRef Id="cmpDesktopShortcut" /> 
    </Feature> 

    <Component Id="cmpDesktopShortcut" Guid="PUT-GUID-HERE" Directory="DesktopFolder" > 
     <Shortcut Id="MyDesktopShortcut" 
        Name="Setup Project" 
        Description="Opens the program." 
        Directory="DesktopFolder" 
        Target="[INSTALLFOLDER]App.exe" 
        WorkingDirectory="INSTALLFOLDER"/> 
     <RegistryValue Root="HKCU" Key="Software\My Company\Sample Application" Name="installed" Type="integer" Value="1" KeyPath="yes" /> 
    </Component> 
</Product> 
2

çok fazla çaba sonra ben bu şekilde kullandım. Bu yorum neredeyse üç yıl sonra geliyor. öyle ki, tekniğin durumu henüz gelişmemiştir.