我正在为我的.NET应用程序构建一个Windows安装程序,看起来InstallShield(2012 Spring - Premier Edition)正在向我的图标添加Windows Common-Controls清单,将它们转换为DLL。
当操作系统遇到页面错误时,这会影响我的应用程序性能,因为它会在启动时尝试解析图标图像。
这是IS附加的清单。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>InstallShield Icon Res</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="<>"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
答案 0 :(得分:1)
首先简要介绍一下为什么会这样。 Icon table,其中需要存储图标以支持Windows Installer广告,要求“与快捷方式关联的图标文件必须采用EXE二进制格式,并且必须命名为其扩展名与目标的扩展名匹配”。因此InstallShield构建正确的格式文件。通过“构建”,我的意思是它将图标数据填充到模板EXE文件的资源中。
结果是什么?您可以通过编辑模板来更改生成的清单。模板存储在...\Support\_IsIcoRes.exe
中,如果您在Visual Studio或其他资源编辑器中打开该模板,则可以在RT_MANIFEST (24) \ 1
中检查甚至编辑清单。此文件尚未签名,因为构建过程必须对其进行修改,从而使任何签名无效,因此您的编辑应该是安全的。也就是说,如果出现问题,请备份原件。