0

我有一个使用 C++/ATL 构建的自定义安装程序应用程序。该应用程序的目标平台是XP3,VS解决方案由静态库和exe项目组成。应用程序始终以提升权限启动,即以管理员身份启动

当我从 Visual Studio 运行它(VS 本身以管理员身份启动)时,一切都很好,PCA 永远不会显示。当我从 Explorer 在同一台机器上运行它时,PCA 也永远不会显示。

但是,当我在新的 Windows 7 机器上运行它时,无论我是从提升的资源管理器还是非提升的资源管理器启动它,都会始终显示 PCA。

项目属性中与清单相关的部分设置如下:http ://screencast.com/t/70GOcbf243

为了摆脱第二台机器上的 PCA,我该怎么做?谢谢!

4

1 回答 1

4

我认为您应该重命名您的应用程序。有一些硬编码的名称会强制 PCA ......比如:

  • 产品名称包含“<em>instal”或“<em>setup”或“<em>update”</li>
  • 公司名称包含“<em>instal”或“<em>setup”或“<em>update”</li>
  • 内部名称包含“<em>instal”且应用未命名为“TrustedInstaller.exe”</li>
  • 原始文件名包含“<em>instal”且应用未命名为“TrustedInstaller.exe”</li>
  • 文件描述包含“<em>instal”且应用未命名为“TrustedInstaller.exe”</li>
  • 文件名包含“<em>instal”且未命名为“TrustedInstaller.exe”</li>
  • 导出名称包含“setup.exe”或“install.exe”或“stub32”或“stub32.exe”或“signstub.exe”</li>
  • 文件名包含“<em>patch”或“<em>setup”或“<em>uninst”或“<em>update”或“lhaca*.exe”</li>
  • 文件描述包含“<em>instal”或“<em>setup”或“<em>update”或“<em>uninst”</li>
  • 原始文件名包含“<em>setup”或“<em>update”</li>
  • 原始文件名包含“<em>setup”或“<em>update”</li>

另请参阅:没有警告对话框的自定义安装程序... (TrustedInstaller.exe)

作为替代方案,您可以在应用程序清单中添加操作系统兼容性部分以防止 PCA。将以下内容添加到您的应用程序清单中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <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>
</assembly>

有关详细信息,另请参阅应用程序清单

于 2013-07-15T19:21:40.000 回答