Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 将文件安装到x64“;“程序文件”;来自x86 msi_Reporting Services_Installation_Windows Installer_Installshield_X86 64 - Fatal编程技术网

Reporting services 将文件安装到x64“;“程序文件”;来自x86 msi

Reporting services 将文件安装到x64“;“程序文件”;来自x86 msi,reporting-services,installation,windows-installer,installshield,x86-64,Reporting Services,Installation,Windows Installer,Installshield,X86 64,我正在使用InstallShield 2010(基本MSI)创建安装程序,它有两个特性 第一个特点包括: 编译为x86的主.NET应用程序 主应用程序使用的某些本机x86第三方DLL(x64版本不可用) 第二个特性包含单个组件,它是编译为AnyCPU的MS Reporting Services的扩展 在UI序列期间,我使用InstallScript自定义操作枚举x86和x64注册表树中的所有可用Reporting Services实例 系统会提示用户选择要在哪个实例上部署我们的扩展 根据所选

我正在使用InstallShield 2010(基本MSI)创建安装程序,它有两个特性

第一个特点包括:

  • 编译为x86的主.NET应用程序
  • 主应用程序使用的某些本机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属性中

然后,通过使用Set Directory操作,我将组件(我们的扩展名)的目标目录设置为该MSI属性的值

除非您尝试为x64 Reporting Services安装扩展文件,否则安装时一切都很正常。在这种情况下,扩展文件安装到错误的位置。即使您的MSI属性被设置为正确的路径“C:\Program Files\MicroSoft…”(我已经检查了MSI日志),看起来系统正在自动重定向到“Program Files(x86)”


是否有任何可能的解决方案来解决此问题?

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

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

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

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

  • 从注册表读取安装位置(不要使用系统搜索获取此值,因为WindowsInstaller会将其自动转换为“ProgramFiles(x86)”)
  • 删除文件

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

有人有解决这个问题的办法吗?