从x86 msi将文件安装到x64“Program Files”

时间:2009-09-30 12:18:37

标签: reporting-services installer windows-installer installshield x86-64

我正在使用具有两个功能的InstallShield 2010(基本MSI)创建安装程序。

第一个功能包括:

  • 主要的.NET应用程序编译为x86,
  • 主应用程序使用的一些本机x86第三方dll(x64版本不可用)。

第二个功能包含单个组件,它是编译为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)”。

有没有可能的解决方案来解决这个问题?

3 个答案:

答案 0 :(得分:3)

如果需要安装到64位ProgramFiles文件夹,请使用64位MSI。

答案 1 :(得分:0)

最后我自己解决了这个问题,而没有使用InstallScript自定义操作创建64位MSI。

要安装的第一个自定义操作:

  • 将所需文件手动复制到所需位置(InstallScript可以访问x64程序文件)
  • 将此位置保存在注册表中,作为此功能在卸载期间使用的关键组件

要卸载的第二个自定义操作:

  • 从注册表中读取已安装的位置(不要使用系统搜索获取此值,因为它将由WindowsInstaller自动翻译为“ProgramFiles(x86)”)
  • 删除文件

答案 2 :(得分:0)

您可以将 INSTALLDIR 属性更改为ProgramFile64而不是ProgramFiles,这将帮助您在所需的路径上安装,因为您的应用程序是32位,因此路径将是C:\ ProgramFiles(x86) )\您的公司名称\您的产品名称以及您是否已将您的组件与64位兼容?