3

将 64 位应用程序放入“Program Files (x64)”并让 32 位应用程序在“Program Files”中运行是否更有意义?

我有一个需要运行Flex编译器的批处理文件。在 x64 中,该程序位于“Program Files (x86)”中。在 Windows Vista 32 位上,它位于“程序文件”中 - 环境变量?核实:

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86) 

我该怎么办?


set mxmlc="%ProgramFiles(x86)%\Adobe\Flex Builder 3\sdks\3.1.0\bin\mxmlc.exe"
if NOT EXIST %mxmlc% set mxmlc="%ProgramFiles%\Adobe\Flex Builder 3\sdks\3.1.0\bin\mxmlc.exe"

tnx

4

7 回答 7

7

没什么。猜猜\Windows\System32包含什么?没错,64 位 DLL 文件。那么他们决定将 32 位旧版 DLL 文件放在哪里呢?\Windows\SysWOW64当然。

问题是,虽然 Windows 应用程序有内置工具来发现系统目录的位置,但许多应用程序并不使用它们。而且由于微软首先是向后兼容性的奴隶,所以我们得到了像这样的愚蠢东西。

于 2008-11-16T02:43:14.703 回答
7

要使其便携:

SET ExecPath=%ProgramFiles(x86)%
IF "%ExecPath%"=="" SET ExecPath=%ProgramFiles%
于 2008-11-16T04:01:59.333 回答
2

x86 通常假定为 32 位,除非您指定 x86-64。为什么他们仍然需要自己的程序文件目录?

于 2008-11-16T02:34:27.093 回答
1

呃...我认为x86是指Intel处理器架构,例如8086、80286、80386、80486和80586。

80386 具有第一个 32 位指令集,请参阅x86(维基百科)。

编辑:啊,问题得到澄清。

请参阅 Stack Overflow 问题C# - How to get Program Files (x86) on Vista x64

于 2008-11-16T02:41:01.200 回答
1

编辑:我有一个需要运行 FLEX 编译器的批处理文件。在 X64 中,该程序位于 Vista 32 位的“程序文件(x86)”中,它位于“程序文件”中。环境变量?.. 核实:

使用 %ProgramFiles% 环境变量并跳过所有这些麻烦。

于 2008-11-16T03:44:05.267 回答
1

a.) 仅仅因为默认安装位置更改并不意味着您必须在那里安装东西。一个简单的注册表更改将使您的新安装到您想要的任何地方。我的都转到一个单独的驱动器,放入我选择的文件夹中。如果应用程序甚至无法通过注册表跟踪其安装路径,那么它可能一开始就不值得安装。

b.) 我假设他们将 32 位应用程序放入 x86 文件夹,因为它不是 32 位操作系统,也就是说,旧的东西放在这里。你不会买新房子让你的狗睡在里面,而你睡在他的旧狗屋里,对吧?如果 64 位是一个进步,那么为什么要将旧版软件放在将继续作为标准安装文件夹的位置?

于 2009-03-22T03:46:11.197 回答
-4

因为微软喜欢让人们的事情变得更复杂。他们没有简化向 64 位的过渡,而是使其变得分裂和困难。

于 2008-11-16T02:40:22.200 回答