代码之家  ›  专栏  ›  技术社区  ›  Marcelo

在高级安装程序中,如何检测64位机器中的32位进程?

  •  2
  • Marcelo  · 技术社区  · 11 年前

    在里面 Advanced Installer ,我如何知道32位进程是否在64位机器中运行?我需要知道这一点,以防止最终用户在给定场景中安装我们的应用程序。我们的方法是使用 custom actions 检测给定进程是否正在运行,但高级安装程序似乎无法识别字符串末尾的“.exe*32”。有人知道在这种情况下如何处理吗?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Bogdan Mitrache    11 年前

    这不是正确的方法。要阻止用户在64位计算机上安装应用程序,您需要转到 启动条件 页面并从列表中取消选中所有64位操作系统。这将使您的软件包停止在64位机器上安装。

    当然,对于运行64位操作系统的客户机,您需要创建一个新的安装包,其中包含64位版本的应用程序。为此包设置包类型 64位AMD 从…起 安装参数 页此外,在 启动条件 页面确保取消选中所有32位操作系统。

        2
  •  0
  •   PhilDW    11 年前

    如果您真的在使用自定义操作来检测特定的32位进程,这与高级安装程序无关。代码枚举进程以找到所需的进程,执行OpenProcess()以获取句柄,然后调用IsWoW64Process,并关闭句柄。如果你有一个x64 MSI文件,它无论如何都不会安装在32位系统上,所以我假设如果某个32位进程正在运行,你正在尝试阻止x64 MSI文件安装在64位系统上。

    推荐文章