2010-04-11 94 views
0

我創建了一個安裝程序,以使用Visual Studio 2008部署我的VBNet程序。在此安裝程序中,我創建了一個「主要輸出」安裝在用戶桌面上。從VS 2008創建msi創建時,在桌面快捷方式圖標上缺少UAC遮罩圖層

現在,一切工作正常。該程序安裝在「C:\ Program Files」下,並在桌面上創建快捷方式。另外,當我使用這個快捷方式時,UAC會提示您以管理員身份自動運行此程序。到目前爲止,這麼好...

但是!即使程序是使用清單聲明必須以管理員身份運行的編譯方式編譯的,我的桌面圖標也沒有UAC屏蔽層。另外,如果我在安裝後手動在桌面上創建一個新的快捷方式到相同的可執行文件,這個新的快捷方式將具有屏蔽覆蓋!

我試圖重新啓動並刪除iconCache.db文件,但它不起作用。

所以我的問題是:我怎樣才能讓我的桌面快捷方式出現與最初安裝UAC盾疊加。

謝謝!

+0

也許你可以告訴你使用的代碼創建快捷方式? – Anders 2010-04-11 22:05:56

+0

沒有代碼。我正在使用Visual Studio 2008附帶的msi構建器來創建快捷方式。 – 2010-04-12 02:27:59

回答

0

沒有更多的細節,我唯一的猜測是你在目標存在之前創建快捷方式,以便Windows無法看到清單。

+0

那麼,我正在使用Visual Studio 2008附帶的msi構建器。我認爲它實際上在創建快捷方式之前創建了程序文件夾(因此是可執行文件),但我無法確定。 – 2010-04-12 02:27:09

0

我會建議由安裝程序創建的圖標不指向.exe文件,而是指向註冊表項。打開快捷方式屬性,如果目標字段上快捷方式選項卡被禁用幷包含應用程序的名稱,那麼情況就是這樣。

您可以讓您的圖標不被廣告,然後創建的快捷方式將指向.exe文件。但是,在這種情況下,如果缺少.exe,安裝將無法自動修復。

+0

感謝您的反饋。這實際上是有道理的,但是如何讓我的圖標不被VS 2010廣告? – 2011-01-18 03:08:59

2

您可以通過使用Orca更改msi文件中的一個表格行或使用後期構建事件自動由visual studio更改您的快捷方式non-advertised

轉到項目的屬性,並輸入以下PostBuildEvent

cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)" "INSERT INTO Property(Property, Value) VALUES ('DISABLEADVTSHORTCUTS', '1')" 

的WiRunSql.vbs文件可從microsoft

問候 魯磨

相關問題