在InstallShield中禁用Windows ComCtrls清单

时间:2015-02-20 07:04:35

标签: installshield installshield-2012

我正在为我的.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>

1 个答案:

答案 0 :(得分:1)

首先简要介绍一下为什么会这样。 Icon table,其中需要存储图标以支持Windows Installer广告,要求“与快捷方式关联的图标文件必须采用EXE二进制格式,并且必须命名为其扩展名与目标的扩展名匹配”。因此InstallShield构建正确的格式文件。通过“构建”,我的意思是它将图标数据填充到模板EXE文件的资源中。

结果是什么?您可以通过编辑模板来更改生成的清单。模板存储在...\Support\_IsIcoRes.exe中,如果您在Visual Studio或其他资源编辑器中打开该模板,则可以在RT_MANIFEST (24) \ 1中检查甚至编辑清单。此文件尚未签名,因为构建过程必须对其进行修改,从而使任何签名无效,因此您的编辑应该是安全的。也就是说,如果出现问题,请备份原件。