小编use*_*572的帖子

WiX 3.0中的平台识别

将托管代码从x86迁移到x64平台时,我遇到了问题.我有一个WiX项目来创建一个MSI,它将通过Bootstrapper执行.

在x86平台上,文件将根据Project.wxs文件复制到"Program Files"中.但是如果通过Bootstrapper在x64平台上安装了相同的MSI,则默认情况下会将所有安装文件复制到"Program Files(x86)"中,并且应用程序的功能失败,因为它无法在12-hive层次结构中找到所需的文件.程序文件(对于64位,它是"C:\ Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG").

我尝试使用预处理器变量,如<?if $(var.ProcessorArchitecture)= x64?>,但我需要将项目属性中的此变量硬编码为x86或x64.最后,我最终为两个不同的平台提供了两个不同的MSI,这对我来说不是一个理想的解决方案.

那么,通过WiX,是否可以识别平台以确保在所需位置安装?

cross-platform wix wix3 system-identification

11
推荐指数
2
解决办法
2万
查看次数

禁用x64平台上的注册表项的注册表重定向

在64位平台上,SQL Reporting Services和加载项的安装检查失败.安装程序正在检查路径"HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names"下的注册表项,并且注册表项可用,但由于MS SQL Server是64位应用程序,因此安装程序将重定向到路径"HKEY_LOCAL_MACHINE\Software\WOW6432node\Microsoft\Microsoft SQL Server\Instance Names"并且没有相同的条目.因此安装检查失败.

解决方法:我已经通过在"HKEY_LOCAL_MACHINE\Software\WOW6432node\Microsoft\Microsoft SQL Server\Instance Names\RS"下手动创建条目对其进行了测试,然后安装检查成功.

简而言之,在x64平台上,installed-check指的是来自WOW6432node的注册表项,而不是64位的注册表项.

那么,我如何强制我的32位安装程序访问64位注册表以进行正确的安装检查?

我已经尝试过RegDisableReflectionKey和相关函数作为注册表重定向的替代方法,但它在我的结束时不起作用.

我该如何解决这个问题?

registry 64-bit redirect

5
推荐指数
1
解决办法
2万
查看次数