【问题标题】:How should my program decide to install under "Program Files (x86)"?我的程序应该如何决定安装在“Program Files (x86)”下?
【发布时间】:2011-05-20 06:56:52
【问题描述】:

出于好奇,如果我正在创建程序安装程序,我应该如何决定安装到哪个“程序文件”目录?在 32 位系统上,环境变量“%programfiles%”就足够了。但是,在 64 位系统上,32 位程序不应安装到该文件夹​​,而应安装到“%programfiles(x86)%”,据我了解,它指向“C:\Program Files (x86)”。我的问题是:安装程序应该如何决定使用哪个环境变量?对于 32 位应用程序,“%programfiles%”的值会发生变化,还是我应该在使用“%programfiles%”之前始终先检查“%programfiles(x86)%”是否存在,还是应该做一些完全不同的事情?

谢谢!这只是出于我自己的好奇心,因为我正在尝试习惯 64 位操作系统。

【问题讨论】:

    标签: windows installation 64-bit


    【解决方案1】:

    当 32 位程序(在您的情况下为安装程序)要求系统解析 ProgramFilePath 常量(检查 MSDN 中的确切名称)时,系统不会返回 C:\Program 文件,而是 C:\Program文件(x86)。所以决定的是系统,而不是应用程序。

    【讨论】:

      【解决方案2】:

      我很确定我在某处读到 Windows 会自动为您执行此操作。换句话说,如果您的安装程序是 32 位的,即使您尝试安装到 Program Files,它也会被路由到 x86 目录变体。

      我确定我在 The Old New Thing 上读到了这篇文章,但 here's a link 支持争用,直到我找到那个。


      啊,是的,here it is,来自永远有用的Raymond Chen

      评论者 Koro 正在编写一个 32 位程序形式的安装程序,该程序检测到它在 64 位系统上运行,并希望将文件(并且可能设置注册表项和执行其他安装程序)复制到 64-位目录,但仿真层将操作重定向到 32 位位置。问题是“从 32 位应用程序中找到 x64 Program Files 目录的方法是什么?”

      答案是“与系统合作比反对它更好”。如果您是一个 32 位程序,那么每次您尝试与外部世界交互时,您都将与模拟器作斗争。相反,只需将您的安装程序重新编译为 64 位程序。让 32 位安装程序检测到它在 64 位系统上运行,然后启动 64 位安装程序。 64 位安装程序不会在 32 位仿真层中运行,因此当它尝试复制文件或更新注册表项时,它会看到真正的 64 位文件系统和真正的 64 位注册表。

      【讨论】:

        猜你喜欢
        • 2017-02-01
        • 2010-11-05
        • 1970-01-01
        • 2016-10-25
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 2010-09-22
        • 1970-01-01
        相关资源
        最近更新 更多