Windows installer Windows安装程序/安装程序项目:强制安装到";“程序文件”;,不是x86?

Windows installer Windows安装程序/安装程序项目:强制安装到";“程序文件”;,不是x86?,windows-installer,setup-project,Windows Installer,Setup Project,我的老板需要一个安装程序将软件安装到我们客户的一台机器上。他希望软件专门安装在“C:\Program Files\HisApplicationName”中,而不是“C:\Program Files(x86)\HisApplicationName”中。我知道正确的答案是重写软件以容纳用户选择安装到的任何目录,但不幸的是,这是非常旧的软件&需要明天安装,所以我们只想强制安装程序指向客户端的“程序文件”目录 但是,我的问题是,当我将文件路径硬编码到安装程序的“DefaultLocation”属性中时,

我的老板需要一个安装程序将软件安装到我们客户的一台机器上。他希望软件专门安装在“C:\Program Files\HisApplicationName”中,而不是“C:\Program Files(x86)\HisApplicationName”中。我知道正确的答案是重写软件以容纳用户选择安装到的任何目录,但不幸的是,这是非常旧的软件&需要明天安装,所以我们只想强制安装程序指向客户端的“程序文件”目录

但是,我的问题是,当我将文件路径硬编码到安装程序的“DefaultLocation”属性中时,安装程序仍然尝试指向ProgramFiles(x86)目录

有没有办法强制windows安装程序/安装程序包指向程序文件而不是“程序文件(x86)”


谢谢。

除了一个不受支持的颠覆性黑客之外,Windows Installer根本无法满足您的要求

INSTALLDIR
设置为
C:\Progra~1\..…

请参阅,MSI具有向后兼容性功能,当MSI标记为32位时,它会自动将
C:\Program Files\
的任何硬编码引用“修复”到
C:\Program Files(X86)
。它无法计算shortname版本并重定向它,因此我的黑客程序无法正常工作。假设他们没有禁用短文件名系统

安装到
C:\Program Files
的唯一正确方法是将MSI标记为64位,并使用
ProgramFiles64Folder
属性而不是
ProgramFilesFolder
属性


顺便说一句,如果你的老板不相信你,那么我建议找一个新老板。我写安装程序已经16年了,我从来没有让一些人做出这样的决定。我是Windows安装专家,而不是他。

它进入“程序文件(x86)”,因为它是一个32位应用程序。这就是它的归属,除非机器的所有者自己更改策略。试图克服这一点就像90年代的主页上有关于如何更改浏览器主窗口大小和默认字体和颜色以适应网站的说明。感谢回复Marcelo。不幸的是,这不是一个选择。老实说,这是一个可怕的软件,专门查找“Program files”目录中的文件。查找任何其他目录都将抛出错误。如果我有时间重写这个,我会的,但不幸的是,这个客户端明天就需要它。如果这是一个特定客户端的一次性操作,也许创建一个链接(假设Vista/Win7)可以解决这个问题。谢谢。这成功了!我知道这是一种黑客行为,我永远不会在典型的安装中采用这种方法,但为了安装这个旧的、笨重的软件……它成功了!回答得好!(特别是最后一点!!)很有魅力,我怎么没早点发现呢!谢谢你为点燃PHB投票,哈哈。而且,这似乎很有用。我现在已经写安装程序25年了!:)谢天谢地,PHB已经很久没有成为问题了。事实上,我已经在一个地方(家得宝)工作了10年了。为之工作的好公司。