2010-12-04 65 views
1

我有一個程序,解壓到TEMP目錄,運行自己,然後從TEMP目錄中刪除自己。當我使用NSIS生成的單文件可執行文件嘗試運行時,UAC詢問:「您是否允許來自未知發佈者的以下程序修改您的計算機?」NSIS安裝程序要求修改計算機

澄清:安裝程序只解壓縮到TEMP目錄,並且包含的​​程序不會觸發UAC。我認爲這與NSIS做的事情有關,但我無法弄清楚什麼或如何阻止它。我已經刪除了我的NSIS腳本的幾乎所有的行,並且它仍然憤怒UAC。

如果有問題,我在python2 python2.5上使用py2exe和pymunk和pygame庫。 (但是,它再次通過NSIS運行時觸發UAC。)

我該如何讓它不觸發UAC的任何操作?我需要簽名密鑰嗎?

回答

5

RequestExecutionLevel用戶

這是因爲NSIS是(錯誤地)通過窗口爲需要管理員權限的安裝程序檢測。 MS甚至沒有要求NSIS開發者加入這種檢測!

您可能需要使用$ PLUGINSDIR,它是通過自動刪除NSIS:

Section 
InitPluginsDir 
SetOutPath $pluginsdir 
File myapp.exe 
ExecWait '"$pluginsdir\myapp.exe"' 
SetOutPath $temp ;make sure pluginsdir is not locked 
SectionEnd 
+0

哇,謝謝!不是我正在尋找的答案,但是然後stackoverflow總是教我新的東西。 – 2010-12-05 05:17:57

0

Windows有 「安裝程序檢測」 啓發式。你可以通過添加一個清單來壓制他們,或者嵌入到exe中,或者坐在它旁邊稱爲whatever.exe.manifest,它說「我不需要提升」。 How to prevent Vista from requiring elevation on patch.exe?是我發現的很多很多問題中的第一個。

安裝程序檢測啓發法幾乎完全基於文件的名稱,因此如果由於某種原因您不想使用清單,請嘗試重命名該文件以避免包含字符串設置,更新,修補程序,等等。

+0

該名稱只是其中的一部分,他們還檢查應用程序/公司名稱,甚至簽名檢查 – Anders 2010-12-05 18:48:15