2012-06-28 40 views
3

我有一個Inno Setup安裝程序,在我的機器上運行良好(Win 7 32位),但在測試機器上(Win 7 32位)完全沒有工作。經過一番調查,我發現原因是當UAC設置爲任何不是的東西時出現問題千萬不要通知我。但是,如果我右鍵單擊安裝程序,並選擇以管理員身份運行,安裝程序工作正常。如何修改Inno Setup Installer的嵌入式清單?

然後,我試着修改安裝程序的嵌入式清單(下面描述的方法),以便它始終以admin身份運行,但這不按我的意願工作。我已經獲得使用命令

mt.exe -inputresource:installer.exe -out:installer.exe.manifest 

I,然後,打開原始艙單所提取的清單使用文本編輯器,並改變了線

<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> 

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel> 

我然後,試圖通過運行命令應用結果清單

mt.exe -manifest installer.exe.manifest -updateresource:installer.exe;#1 

但清單工具給我的錯誤

mt.exe:清單創作錯誤c1010001:在不同的清單片段屬性的值「級別」不相等。

我也試圖改變命令

mt.exe -manifest installer.exe.manifest -outputresource:installer.exe;#1 

但是這導致了整個安裝程序的無非是更多的資源(即實際安裝程序丟失了)被覆蓋。

我也嘗試使用Visual Studio(資源編輯器)打開安裝程序可執行文件,修改了清單並保存了文件,但這給出了與第二個mt.exe命令相同的結果。

有人知道我做錯了什麼,或者我錯過了什麼嗎?

+1

如果您執行「以管理員身份運行」或更改清單,那麼它會破壞Inno的一些功能。 Inno(應該)提升自己,並依靠最初的EXE運行未被升級。如果你解釋你的設置的實際問題,我可以保證有一個更好的解決方案。 – Deanna

+1

給他人的提示:在[Inno新聞組]上也提到了這個問題(http://news.jrsoftware.org/read/article。php?id = 96418&group = jrsoftware.innosetup#96418)提供有關實際問題的信息。 – Deanna

+0

@Deanna,好點!答案很可能是 - 使用InnoSetup的最新版本,因爲我個人沒有注意到,當我沒有明確指定「PrivilegesRequired」而不是'admin'時,管理員標高將不會被詢問。 – TLama

回答

5

由於Inno對PrivilegesRequired指令進行任何提升,您不應該修改生成的Inno設置的清單。

如果您修改清單,或手動執行「以管理員身份運行」,那麼它將打破所有...AsOriginalUser功能,最重要的是,postinstall flag

mt.exe和類似的資源編輯器也很可能會將安裝數據從安裝文件中除去,因爲它會附加到二進制文件的末尾。