2009-09-10 82 views
3

我們爲我們的應用程序提供了一個安裝程序,必須下載並使用管理員權限運行,就像許多其他安裝程序一樣。但是,安裝程序未命名爲「setup.exe」,因此Windows不會自動檢測到它需要提升才能運行。如何爲Windows安裝程序創建清單?

坦率地說,改變安裝程序的名稱以使東西正確提升聽起來相當凌亂。 This article談了很多關於UAC和海拔的信息,它說你可以使用清單來做一些需要授權的事情。

所以,我們只是想爲我們的安裝程序創建一個清單。但是,我們如何確保清單存在?如果用戶只是下載our_application_v13.exe,我們如何確保他們獲得清單呢? AFAIK清單必須是一個名爲「our_application_v13.exe.manifest」的文件。

由於他們只是從我們的網站下載文件,我們如何確保他們獲得清單呢?我們能否以某種方式將其構建到可執行文件中,或者將可執行文件標記爲需要提升?我們正在使用數百年前的安裝工具,我們無法更改,因此它沒有任何與此相關的功能。

謝謝!

回答

3

如果安裝程序工具允許您更改/附加/編輯生成的EXE文件的資源,則可以將清單文件添加爲資源類型爲24(Windows標頭中的RT_MANIFEST)和資源ID爲1.

如果安裝程序工具沒有內置工具來插入資源,那麼您可能必須編寫一個工具來後處理install.exe文件以插入資源。查找Windows API BeginUpdateResouce和EndUpdateResource。他們有一些限制 - 如果EXE根本不包含任何資源文件,他們往往不工作,但大多數安裝工具生成的exe文件至少包含版本信息資源。

另外,如果安裝是數字簽名的,必須在插入清單資源之後完成。


此外,mt.exe附帶平臺SDK和Visual Studio的大多數版本有一些選項可以嵌入,提取和合並清單資源。

1

清單還可以位於應用程序的本地資源部分(在EXE內部)。

相關問題