相关疑难解决方法(0)

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万
查看次数

Wix:错误 LGHT0204:ICE80:这个 32BitComponent xxx 使用 64BitDirectory yyy

我想为我的应用程序创建一个安装程序 (msi)。我想添加一个包含大量文件的文件夹。所以我使用 heat 为文件夹创建 wxs 文件。创建的 wxs 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="INSTALLDIR">
            <Directory Id="dirD443000E4EC0AE53948090C1CD372519" Name="www">
                <Component Id="cmp258C40B6C01189153117075B9889DA7C" Guid="{23189859-29AE-46E6-A940-0B2307344910}">
                    <File Id="fil0DE52257C6EF99D33B0974915A17454E" KeyPath="yes" Source="$(var.WwwPath)\3rdpartylicenses.txt" />
                </Component>
                <Component Id="cmp85367E8DB342884A004620F1E4153AE4" Guid="{00EBB07A-6178-4072-B47C-2D9130CB96A7}">
                    <File Id="filB62696889B5411543CB3DFD6E2A1270D" KeyPath="yes" Source="$(var.WwwPath)\color.c7a33805ffda0d32bd2a.png" />
                </Component>
                ...
                ...
Run Code Online (Sandbox Code Playgroud)

当我运行我的命令灯时,我收到了很多这样的错误(每个文件一个):

error LGHT0204 : ICE80: This 32BitComponent cmp258C40B6C01189153117075B9889DA7C uses 64BitDirectory dirD443000E4EC0AE53948090C1CD372519
Run Code Online (Sandbox Code Playgroud)

但是创建的 msi 似乎按预期工作。但如果可以的话,我想了解并消除该错误。

任何的想法 ?谢谢

windows-installer wix heat

6
推荐指数
1
解决办法
3995
查看次数