我的老板需要一个安装程序来将软件安装到我们客户的一台机器上。他希望将软件专门安装到“C:\Program Files\HisApplicationName”,而不是“C:\Program Files (x86)\HisApplicationName”。我知道正确的答案是重写软件以适应用户选择安装的任何目录,但不幸的是,这是非常旧的软件,明天需要安装,所以我们只想强制安装程序指向客户端的“程序文件”目录。
但我的问题是,当我将文件路径硬编码到安装程序的“DefaultLocation”属性中时,安装程序仍然尝试指向 Program Files (x86) 目录。
有没有办法强制 Windows 安装程序/安装程序包指向程序文件而不是“程序文件(x86)”?
谢谢。
最佳答案
除了一个不受支持的颠覆性黑客攻击外,Windows Installer 根本无法实现您的要求。
设置 INSTALLDIR
至 C:\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/