windows-installer - Windows 安装程序/安装程序项目 : Forcing installation into "Program Files", 不是 x86?

标签 windows-installer setup-project

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

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

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

谢谢。

最佳答案

除了一个不受支持的颠覆性黑客攻击外,Windows Installer 根本无法实现您的要求。

设置 INSTALLDIRC:\Progra~1\.....
看,MSI 具有向后兼容性的功能,可以自动“修复”C:\Program Files\ 的任何硬编码引用。至 C:\Program Files (X86)当 MSI 标记为 32 位时。它无法计算短名称版本并将其重定向,因此我的 hack 有效。假设他们没有禁用短文件名系统。

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

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

关于windows-installer - Windows 安装程序/安装程序项目 : Forcing installation into "Program Files", 不是 x86?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712909/

相关文章:

windows - MessageBox.Show 在安装项目中不是模态的

wix - comctl32.msm(合并模块)在 Vista 上失败

wix - MSI 安装程序使用 WiX 在静默模式下调用另一个 MSI 安装程序

WIX根据注册表项动态设置安装路径

visual-studio - 如何在 VS 设置和部署项目中创建名称设置为 [PRODUCTNAME] 的快捷方式?

batch-file - 如何在安装过程中运行 ".bat"文件?

visual-studio-2005 - Visual Studio 安装项目 - 排除 web.config 文件(如果存在)

.net - 使用 SQL Server Express 部署桌面应用程序

c# - 通过 `Configuration.Install.Installer` 安装长期运行的服务时如何将参数传递给 `installutil`

WiX - 在两个不同的位置安装相同的文件