【问题标题】:How to prevent "This program might not have installed correctly" messages on Vista如何防止在 Vista 上出现“此程序可能未正确安装”消息
【发布时间】:2009-05-22 14:42:15
【问题描述】:

我有一个产品设置可执行文件,可以将一些文件复制到用户的硬盘上。它不是一般意义上的典型安装程序(它不会向“开始”菜单或“程序文件”文件夹添加任何内容)。

每次在 Vista 上运行安装程序,exe 终止后,Vista 都会生成一个任务对话框:

  • 此程序可能未正确安装
  • 使用推荐的设置重新安装
  • 此程序安装正确

我需要从 exe 或注册表项中调用一个函数来设置,以向操作系统指示程序安装正确(或至少抑制此消息)?

相关问题: "This program might not have installed correctly" message in Windows 7 RC(针对特定于 Windows 7 的问题)

【问题讨论】:

    标签: windows-installer installation uac windows-appcompat-platform


    【解决方案1】:

    将此部分包含在程序的清单文件中:

    <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}"/>
        <!--The ID below indicates application support for Windows 8 -->
          <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
        <!--The ID below indicates application support for Windows 8.1 -->
          <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
        <!--The ID below indicates application support for Windows 10 -->
          <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
    
      </application>
    </compatibility>
    

    它会通过声明您的应用与 Vista 和 Win 7 兼容来禁止程序兼容性助手。

    【讨论】:

    • 仅适用于从未使用过任何“清单”的其他人:转到您的 Visual Studio 项目 > 属性 > 应用程序 > 查看 Windows 设置 > 关于第 26 行
    • Windows 8 的 GUID 是 {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38},但似乎没有必要禁止 PCA 提示。
    • Windows 8.1 GUID 是
    • Windows 10 GUID 是
    • 如果您的项目不是 Visual Studio 项目,而是使用 INSTALLSHIELD 创建的 setup.exe(我有 12 版),请执行以下操作:manfiest 文本文件位于 C:\Program Files (x86 )\Macrovision\IS12\Support,称为 SetupExe..manifest,其中 是 Admin、Highest 或 Invoker 之一。使用哪一个取决于您在发布选项中选择的内容。这将更改您在此产品下构建的所有未来 setup.EXE,但这是一个很好的 hack。
    【解决方案2】:

    您需要在注册表的 AppCompat 部分中添加一些信息。

    请参阅this link 并查找“如何禁用程序兼容性助手警告”。

    显然还有a method 涉及将清单文件添加到您的安装程序可执行文件以将其标记为“Vista-aware”。

    【讨论】:

    • 对于 IT/管理员来说,安装程序弄乱 AppCompatFlags 可能不是一个好主意
    • 在我的情况下,当我的安装程序运行以执行添加/删除功能安装时,有时我会收到“此程序可能未正确卸载”。由于 setup.exe 在我的情况下是由 InstallShield 提供的库存 EXE,因此清单选项不适合我。至于注册表选项,我也不确定它是否适用。那篇文章中没有任何内容特别适用于此特定消息。而且我的安装程序无法在兼容模式下运行,因为它需要知道它是否在 Vista 中运行才能在 Vista 中执行正确的操作。
    • 您可以使用免费的 XN 资源编辑器 (wilsonc.demon.co.uk/d10resourceeditor.htm) 等资源编辑器来编辑其他应用程序生成的 exe 文件的清单。 (但是,如果 exe 内置了任何类型的校验和或验证逻辑,则更改其资源可能会使其无效。)
    • IN 另外,这个决定似乎是在你的exe运行之前做出的,事后添加似乎没有效果(这里是Win7)
    【解决方案3】:

    您应该尝试的第一件事是添加一个带有 requestedExecutionLevel 的“Vista 清单”

    如果这还不够(在卸载 UAC 时单击取消等),您需要使用未记录的内容,例如将 PE 标头中的图像版本字段设置为 6.0

    【讨论】:

      【解决方案4】:

      弹出此消息的原因之一是系统认为您正在运行安装程序,但在添加/删除程序列表中找不到该应用程序的条目。

      我不知道您的应用是否属于这种情况,但值得一试。

      【讨论】:

      • 谢谢,拉里。安装程序实际上确实在“添加/删除程序”列表中添加了一个条目,这很奇怪。不过,我通过在安装程序中嵌入清单解决了这个问题。
      【解决方案5】:

      这似乎有更多的原因。 如果您重命名了您的应用程序,还请记住程序集信息中的名称,它们都必须相同,否则可能会弹出“此程序可能未正确安装”的 nag-screen :-P

      也可以直接在AssemblyInfo.vb/.cs文件中修改

      【讨论】:

        【解决方案6】:

        我通过更改程序集标题解决了这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多