2013-06-06 86 views
2

當我嘗試在創建InternetShortcut時創建自定義圖標時,創建的InternetShortcut中不存在particulat圖標。默認圖標正在提供。nsis創建InternetShortcut不顯示圖標

這裏是代碼:

WriteINIStr "$SMPROGRAMS\Launch_APP.url" "InternetShortcut" "URL" "http://localhost:9080/myapp/index.php" 
WriteINIStr "$SMPROGRAMS\Launch_APP.url" "InternetShortcut" "IconFile" "$ReadmePath\A.ico" 
+1

嗯......有功能CreateShortCut(http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.3.4)...爲什麼你不使用它? –

+1

@HX_unbanned:你應該讓它成爲答案... – Seki

+0

明白了,關! ;) –

回答

0

感謝您使用NSIS。

所以 - 有功能CreateShortCut(nsis.sourceforge.net/Docs/Chapter4.html#4.9.3.4)。它旨在創建Windows支持的任何快捷方式。你應該使用它。如果您發現某些不適用的特定情況,請隨時向NSIS聯繫人列表中的Devs發送郵件,或者在其錯誤跟蹤器中創建故障單。

+0

當我用$ STARTMENU替換$ SMPROGRAMS時,上面的代碼開始工作。不知道爲什麼.... –

+0

好吧,是的,這很奇怪......但是 - 但是 - 你正在以非常非常討厭的方式創建快捷方式。即使它是INI半結構化文件.. :) –

+0

CreateShortcut是針對.lnk文件,這個問題是關於.url文件的... – Anders

1

CreateShortcut使用IShellLink創建快捷方式,不應該用於創建Internet快捷方式。你應該用來創建互聯網快捷方式的文檔界面是IUniformResourceLocator。 NSIS沒有一個本地指令,但它可以被系統插件使用它的COM語法調用。要將圖標設置爲IPropertySetStorage的QueryInterface並設置PID_IS_ICONFILE。最後你最終會得到同樣的.ini文件,這就是爲什麼很多示例(NSIS和其他東西)只是使用.ini API編寫的原因。

您可以嘗試將IconIndex = 0添加到.ini,但我的猜測是圖標路徑錯誤或者圖標緩存受阻。

你有沒有嘗試清除圖標緩存或在不同的機器上測試?

+0

任何有關3.0支持Anders的URL支持的CreateShortcut計劃? –

+0

HX_unbanned:不,這將意味着嗅探計劃前綴或類似的東西... – Anders

+0

也許然後某種類型的鏈接到COM示例代碼爲* .url創建wuold是CreateShortCut功能文檔的良好編輯? :) –