[英]Delphi app manifest file problems under WinXP and Win7
我的最后一個問題“在Win-7下列出服務和服務狀態”使我開始研究一種解決方案,該解決方案基於.manifest文件為我的應用程序提供Windows Vista以后的管理員權限。
我不確定繼續上一個問題,因為它們不一樣所以這是另一個問題:
我的應用程序現在在Win 7下運行正常,無論我是否因為清單文件而“以管理員身份”運行它。 我的清單文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.6.0.5" processorArchitecture="X86" name="ServiceMonitorPro" type="win32"/>
<description publisher="Powershield Ltd" product="Powershield Service Monitor">Powershield Service Monitor</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
當應用程序在Windows 7或Vista上運行時,UAC會出現如下對話框: alt text http://www.freeimagehosting.net/uploads/39787fd3dd.jpg
如何替換“未知”發布者?
另一個也是最大的問題是,即使你的應用程序在Win7或Vista下運行沒有問題,在WinXP下它現在崩潰的消息:“此應用程序無法啟動,因為應用程序配置不正確。重新安裝應用程序可能會修復此問題問題。”
我要添加的另一件事:如果我向XPMan添加引用(使用子句),那么應用程序在WinXP上工作正常,但是我的.manifest文件在Vista或Win7下沒有任何區別。
我要感謝所有人,評論或回答讓我繼續挖掘...... :)我去搜索文件WindowsXP.res。 該文件的內容是:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="DelphiApplication"
version="1.0.0.0"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
</assembly>
解決方案:我已將我的.manifest文件與添加了依賴項部分的WindowsXP.Res xml混合。 如果有人知道為什么它現在正在工作,我會很高興聽到 - 但這是解決方案 - 到目前為止測試了幾個虛擬機,在我的電腦和其他幾個......工作:)
您需要使用代碼簽名證書對代碼進行簽名。 這里應該有很多例子。 我用“代碼簽名”重新標記了您的問題,您還可以查找“證書”。
我自己使用Comodo證書,並使用令人敬畏的,精彩的Visual Build Pro v6簽名,這是SO的廣告客戶。
您還可以在清單中指明與各種Windows版本的兼容性。 我知道有與Vista和Win7兼容的條目; 不確定XP。
有關清單兼容性部分的信息可從MSDN獲得 。 這也可能有助於 - 從鏈接頁面:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
在較新版本的Delphi(我認為7及以上版本)中,您還需要確保在項目選項對話框中取消選中“使用運行時主題”選項,否則Delphi將自動鏈接到其自己的默認清單文件(這就是它的啟用方式) “主題支持”),您將收到有關應用程序配置不正確的運行時錯誤,因為會有沖突的條目。
這是Delphi2007應用程序的完整清單文件,需要在Windows 7中以管理員模式運行,還包括“依賴”部分以啟用運行時主題支持:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="11.0.2902.10471"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.