根据 Christopher Painter的说法,WiX v4 似乎实际上已从 Visual Studio 扩展中删除:
老实说,WiX 4.0 还需要几年的时间。我现在完全不会担心它。事实上,WiX v4 模板最近已从 Votive(Visual Studio 扩展)中删除,因此您应该知道它有多远。
经过进一步调查,Visual Studio Extension 的提交历史证实了这一点。提交 #886a974删除了 v4 选项。
我会看看我是否可以重新启用它,看看我是否可以*.MSI
为 ARM 系统创建设置。
编辑 1 - 2/24/2020
如果您安装以前版本的 WiX 扩展,您将能够再次访问该v4
选项,而无需重新编译整个扩展。v4
启用该选项的最新版本是v0.9.28.58839。但是,在安装之前,请确保卸载您可能已安装的任何现有扩展。
安装此旧扩展后,您必须安装位于此处的 v4 构建工具。剩下要做的就是打开 Visual Studio 并创建一个新的 WiX v4 项目。
现在,我在玩 WiX v4,即使标签Platform
中的字段<Package .../>
允许 value arm
,它也不会成功编译。我不断收到以下错误:
ICE39:摘要信息流中的 PID_TEMPLATE 值无效。它必须是“Platform,Platform,...;LangID,LangID,...”的形式。
(我确保按照这里的InstallerVersion
描述设置为 500。)
我将此归结为尚未完全实现 ARM 支持的 WiX v4,我认为它可能会保持这种状态一段时间。同时,只需编译您的安装程序,x86
因为 Windows for ARM 内置了 x86 仿真。
编辑 2 - 2020 年 5 月 27 日
ARM 支持终于添加到 WiX v3 工具集中
如issue #6137和PR #503所述,对 ARM(32 位)和 ARM64(64 位)的支持似乎刚刚添加到 WiX v3 中。如问题中所述,您必须安装WiX v3.14.0.3910。如果您有任何打开的 Visual Studio 项目,请确保它们都已关闭。此外,一旦您安装了 WiX v3.14,请务必单击“可用更新”按钮以获取任何更新的更新。
现在,构建配置仍然不允许您选择arm
或arm64
。您必须手动将平台配置添加到您的*.wixproj
文件中。出于某种原因,如果您为(即 32 位 arm)构建 Surface Pro X 上的“ Windows for ARM ”,则安装程序会引发错误,arm
而不会为arm64
. 因此,这是arm64
我添加到*.wixproj
文件中的构建配置:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|arm64' ">
<DefineConstants>Debug</DefineConstants>
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|arm64' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
现在,在我结束之前有几点说明。似乎没有像 for和builds那样的工作ProgramFilesArm64Folder
或ProgramFilesArmFolder
全局常量(例如和分别)。因此,您将不得不像这样手动定义它:x64
x86
ProgramFiles64Folder
ProgramFilesFolder
<Directory Id="ProgramFilesArm64Folder" Name="Program Files (Arm)">
<Directory Id="INSTALLFOLDER" Name="!(loc.ProductNameFolder)" />
</Directory>
(!(loc.ProductNameFolder)
在我的 WiX 本地化文件中定义的语言环境常量在哪里,它定义了我的程序的安装文件夹的名称。)
在 Surface Pro X 上,新的ARM64
程序文件文件夹名为“ Program Files (Arm) ”。
最后,在您的<Project />
定义中,确保将 设置InstallerVersion
为500
. Platform
可以保留原样$(var.Platform)
,也可以arm64
手动输入。对于两个Platform
输入,智能感知都会在其下划线,但这可以忽略。
完成所有这些之后,您现在应该可以为 Surface Pro X 机器创建 ARM64 MSI 安装程序了!