2012-06-21 149 views
6

我是wix新手。需要創建一個本地網站的快捷方式。wix - 網站的快捷方式圖標

它工作正常,並創建shorcuts,但它不顯示任何圖標在開始菜單和桌面上...該網站有favicon文件,當我打開該網站,我可以看到它完美 - 我只是不在快捷方式中看到它。我試圖谷歌,但我沒有找到util的一個很好的答案:InternetShortcut ..

我的代碼是:

<DirectoryRef Id="ApplicationProgramsFolder"> 
    <Component Id="ApplicationShortcutBBBApp" Guid="---"> 
    <util:InternetShortcut Id="ApplicationStartMenuShortcutBBBApp" 
        Name="BBB" 
        Target="http://localhost/BBB"/> 
    <util:InternetShortcut Id="ApplicationDesktopShortcutBBBApp" 
        Name="BBB" 
        Directory="DesktopFolder" 
        Target="http://localhost/BBB"/> 
    <RegistryValue Root="HKCU" Key="Software\Microsoft\BBB" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
    </Component> 
</DirectoryRef> 

回答

1

InternetShortcut不支持指定像一個正常的快捷方式的圖標。有一個open feature request。從技術上講,Windows中的IUniformResourceLocator快捷方式不支持圖標,儘管IShellLink快捷方式可以。

+0

是否有任何其他方式來定義網站快捷方式的圖標? (With wix) – TamarG

+1

可能的解決方法似乎在提到的功能請求@BobArnson中進行了描述。 –

+0

謝謝大家,它的工作:) – TamarG

0

有點晚回答這個,但只需要做同樣的事情。我採用的方法是使用iniFile元素寫出一個url文件。

兩點這種方法的興趣:

  1. 由於該快捷方式是在桌面上的圖標文件所在的文件系統上的其他地方,我需要創建單獨的組件部署圖標文件。
  2. 如果MSI在UAC打開的情況下以普通用戶身份運行,則不會爲該快捷方式設置圖標。一旦我在安裝之前禁用了UAC,圖標就被正確設置了。

    <Fragment> 
    <DirectoryRef Id="DesktopFolder"> 
        <Component Id="ProductInternetShortcut" Guid="{YOUR_GUID_HERE}" > 
         <IniFile Id="url_name" 
          Action="addLine" 
          Directory="DesktopFolder" 
          Section="InternetShortcut" 
          Name="ProductInternetShortcut.url" 
          Key="URL" 
          Value="https://my.url.com/" /> 
    
         <IniFile Id="url_target" 
          Action="addLine" 
          Directory="DesktopFolder" 
          Section="InternetShortcut" 
          Name="ProductInternetShortcut.url" 
          Key="Target" 
          Value="https://my.url.com/" /> 
    
         <IniFile Id="url_idlist" 
          Action="createLine" 
          Directory="DesktopFolder" 
          Section="InternetShortcut" 
          Name="ProductInternetShortcut.url" 
          Key="IDList" 
          Value=" " /> 
    
         <IniFile Id="url_HotKey" 
          Action="addLine" 
          Directory="DesktopFolder" 
          Section="InternetShortcut" 
          Name="ProductInternetShortcut.url" 
          Key="HotKey" 
          Value="0" /> 
    
         <IniFile Id="url_icon" 
          Action="addLine" 
          Directory="DesktopFolder" 
          Section="InternetShortcut" 
          Name="ProductInternetShortcut.url" 
          Key="IconFile" 
          Value="PATH_TO_ICON_FILE_ON_WORKSTATION" /> 
    
         <IniFile Id="url_iconIndex" 
          Action="addLine" 
          Directory="DesktopFolder" 
          Section="InternetShortcut" 
          Name="ProductInternetShortcut.url" 
          Key="IconIndex" 
          Value="0" /> 
    
         <RegistryValue Root="HKCU" Key="Software\COMPANY\PRODUCT" Name="installed" Type="integer" Value="1" KeyPath="yes" /> 
        </Component> 
    </DirectoryRef> 
    <DirectoryRef Id="ProductFolder"> 
        <Component Id="ShortcutIcons" Guid="{YOUR_GUID_HERE}"> 
         <File Id="filProductIcons" KeyPath="yes" Source="PATH_TO_ICON_FILE_ON_DEVELOPER_MACHINE" /> 
        </Component> 
    </DirectoryRef> 
    </Fragment> 
    
13

沒有爲這個問題的簡單的解決方案。而不是使用InternetShortcut,你可以使用正常的快捷方式,並使用技巧來設置目標是一個URL。

<SetProperty Id="URL" Value="http://yourpage.com" Sequence="execute" Before="CreateShortcuts" /> 


<Shortcut Directory="DesktopFolder" Id="WebShortcut" Name="Your Page" Description="Your Page Description" Target="[URL]" Icon="IconDesktop"> 
    <Icon Id="IconDesktop" SourceFile="images\icon.ico" /> 
</Shortcut> 

「SetProperty」可以放置在產品標籤的某個位置。 應該放置「Shortcut」而不是「InternetShortcut」。 將屬性[URL]作爲目標非常重要。作爲一個屬性,它可以是一個網址。直接寫它doese不工作。 可能會有警告在加熱/蠟燭/燈光下,可以忽略。

+0

爲我工作,看起來像最簡單的解決方案。 –

+0

愛這真的很簡單的解決方案,謝謝! – Anheledir

+0

太棒了。謝謝。這種方法比我剛剛殺死30分鐘的'util:InternetShortcut'更清晰,試圖瞭解它爲什麼不創建任何URL快捷方式。 – c00000fd