Wix 3.14真的支持ARM64和ARM64自定义操作吗?

问题描述 投票:0回答:1

这么简单的问题?正确的?似乎不是...不同的网站都说在 3.14 的某个版本之后可以。我已经下载了最新版本(3.14.1.8722)并执行

candle.exe -v
给出了
x86, x64, or ia64 (default: x86)
支持的拱形标志,因此,看不到 ARM64 或 arm64。 我目前在 3.14 中使用 .wixproj,它可以很好地为 x64 和 x64 构建和安装 - 并且已经这样做了很多年。如果我在 Orca 中打开 MSI 文件,它会说它是 Arm64...

我不想升级工具,因为它似乎表明 3.14 和 4.0 在同一台机器上不兼容(它说删除 Wix 的 VS 2022 插件才能使用 Wix 4.0)。我正在进行测试构建,并且我还有其他项目使用 3.14。

我已在 ARM64 上记录了我的安装,但在尝试加载我的 ARM64 CustomAction DLL 时它正在崩溃。它有某种系统负载问题。我最后查看了生成的自定义操作 DLL 的 PE 头,它是 32 位的。我的 x64 配置和 ARM64 配置完全相同,只是一个平台是 x64,另一个平台是 ARM64。 x64 生成 64 位 CustomAction DLL,ARM64 生成 32 位 CustomAction DLL。

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <OutputPath>$(OutDir)</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM64'">
    <OutputPath>$(OutDir)</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>ARM64</PlatformTarget>
    <LangVersion>7.3</LangVersion>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>

参考资料为:

  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.Deployment.WindowsInstaller">
      <Private>True</Private>
    </Reference>
  </ItemGroup>

而且,Wix 的东西是:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(WixCATargetsPath)" Condition=" '$(WixCATargetsPath)' != '' " />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.CA.targets" Condition=" '$(WixCATargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.CA.targets') " />
.net windows-installer wix3
1个回答
0
投票

是的,核心工具集中支持 Arm64。不,托管代码自定义操作不支持 Arm64。

© www.soinside.com 2019 - 2024. All rights reserved.