我正在使用具有两个功能的InstallShield 2010(基本MSI)创建安装程序。
第一个功能包括:
第二个功能包含单个组件,它是编译为AnyCPU的MS Reporting Services的扩展。
在UI序列中,我使用InstallScript自定义操作来枚举x86和x64注册表树中的所有可用Reporting Services实例。
提示用户选择他想要部署我们的扩展程序的实例。
基于所选实例,我在文件系统中查询Reporting Services的实际位置,这通常类似于“C:\ Program Files \ Microsoft SQL Server \ MSSQL.2 \ Reporting Services”,并将此值存储在MSI Property。
然后通过使用Set Directory操作,我将组件的目标目录(我们的扩展名)设置为该MSI属性的值。
除非您尝试为x64 Reporting Services安装它,否则一切都安装得非常好,因为扩展文件安装在错误的位置。即使您将MSI属性设置为正确的路径“C:\ Program Files \ MicroSoft ...”(我已经检查了msi日志)它看起来系统自动重定向到“Program Files(x86)”。
有没有可能的解决方案来解决这个问题?
答案 0 :(得分:3)
如果需要安装到64位ProgramFiles文件夹,请使用64位MSI。
答案 1 :(得分:0)
最后我自己解决了这个问题,而没有使用InstallScript自定义操作创建64位MSI。
要安装的第一个自定义操作:
要卸载的第二个自定义操作:
答案 2 :(得分:0)
您可以将 INSTALLDIR 属性更改为ProgramFile64而不是ProgramFiles,这将帮助您在所需的路径上安装,因为您的应用程序是32位,因此路径将是C:\ ProgramFiles(x86) )\您的公司名称\您的产品名称以及您是否已将您的组件与64位兼容?