我正在使用具有两个功能的 InstallShield 2010(基本 MSI)创建安装程序。
第一个功能包括:
- 编译为 x86 的主 .NET 应用程序,
- 主应用程序使用的一些原生 x86 第三方 dll(x64 版本不可用)。
第二个功能包含单个组件,它是作为 AnyCPU 编译的 MS Reporting Services 的扩展。
在 UI 序列中,我使用 InstallScript 自定义操作从 x86 和 x64 注册表树中枚举所有可用的 Reporting Services 实例。
系统会提示用户选择他想在哪个实例上部署我们的扩展。
基于所选实例,我正在查询注册表以获取文件系统中报告服务的实际位置,该位置通常类似于“C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services”,并将此值存储在 MSI 属性中。
然后通过使用设置目录操作,我将组件(我们的扩展)的目标目录设置为该 MSI 属性的值。
除非您尝试为 x64 Reporting Services 安装它,否则一切都安装得很好,在这种情况下,扩展文件安装到错误的位置。即使您将 MSI 属性设置为正确的路径“C:\Program Files\MicroSoft...”(我已经检查了 msi 日志),看起来系统正在自动重定向到“Program Files (x86)”。
有没有可能的解决方案来克服这个问题?