Visual studio 2017 用于构建Surface Pro X的WiX工具集中的ARM64支持?
随着微软发布Surface Pro X,我希望为ARM系统创建一个MSI安装程序。我一直在四处寻找,似乎WiX工具集v3不支持ARM设置项目。然而,看起来WiX v4确实有支持 我使用官方WiX站点上的安装程序安装了WiX工具集v4。然而,尽管我已经安装了,Visual Studio 2017仍然没有给我选择WiX工具集v4安装项目的选项。我只有v3的选项: 我确实通过Visual Studio安装程序验证是否安装了WiX v4架构: 我知道,Visual studio 2017 用于构建Surface Pro X的WiX工具集中的ARM64支持?,visual-studio-2017,arm,wix,windows-installer,wix4,Visual Studio 2017,Arm,Wix,Windows Installer,Wix4,随着微软发布Surface Pro X,我希望为ARM系统创建一个MSI安装程序。我一直在四处寻找,似乎WiX工具集v3不支持ARM设置项目。然而,看起来WiX v4确实有支持 我使用官方WiX站点上的安装程序安装了WiX工具集v4。然而,尽管我已经安装了,Visual Studio 2017仍然没有给我选择WiX工具集v4安装项目的选项。我只有v3的选项: 我确实通过Visual Studio安装程序验证是否安装了WiX v4架构: 我知道,v4选项可以通过other的Visual Stu
v4
选项可以通过other的Visual Studio设置获得。例如,Nick Nolan对on StackOverflow的回答链接到一个屏幕截图,您可以看到他在“新建项目”对话框浏览器下列出了v3
和v4
选项
如何将WiX工具集v4支持添加到Visual Studio 2017?换句话说,如何在“新建项目”资源管理器窗口的“WiX工具集”下添加v4
选项,如图所示?,似乎WiX v4实际上已从Visual Studio扩展中删除:
老实说,WIX4.0还需要几年的时间。我现在一点也不担心。事实上,WixV4模板最近从Voctive(VisualStudioExtension)中删除了,因此应该可以让您了解它有多远
经过进一步调查,VisualStudio扩展的提交历史记录证实了这一点。删除v4选项
我将查看是否可以重新启用它,以查看是否可以为ARM系统创建设置*.MSI
编辑1-2/24/2020 如果安装了以前版本的WiX扩展,则可以再次访问
v4
选项,而无需重新编译整个扩展。启用了v4
选项的最新版本为。但是,在安装之前,请确保卸载可能已安装的任何现有扩展
一旦安装了这个旧的扩展,就必须安装v4构建工具。剩下要做的唯一一件事就是打开VisualStudio并创建一个新的WIXV4项目
现在,我正在玩WiX v4,即使
标记中的平台
字段允许值arm
,它也不会成功编译。我一直得到以下错误:
ICE39:摘要信息流中的PID_模板值无效。其形式必须为“平台,平台,…;LangID,LangID,…”
(我确保按说明将InstallerVersion设置为500。)
我认为这是因为WIXV4还没有完全实现ARM支持,我认为这种情况可能会持续一段时间。同时,只需将安装程序编译为x86
,因为Windows for ARM内置了x86仿真
编辑2-2020年5月27日
ARM支持最终添加到WiX v3工具集
对ARM(32位)和ARM64(64位)的支持似乎刚刚添加到WiX v3中,如和所述。如本期所述,您必须安装。如果有任何打开的Visual Studio项目,请确保它们都已关闭。此外,一旦安装了WiX v3.14,请确保单击“更新可用”按钮以获得任何更新
现在,构建配置仍然不允许您选择arm
或arm64
。您必须手动将平台配置添加到*.wixproj
文件中。出于某种原因,如果您为ARM
(即32位ARM)构建安装程序,Surface Pro X上的“Windows For ARM”将向您的安装程序抛出错误,而不会为arm64
构建安装程序。因此,下面是我添加到*.wixproj
文件中的arm64
构建配置:
<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>
(其中!(loc.ProductNameFolder)
是在我的WiX本地化文件中定义的区域设置常量,并定义我的程序的安装文件夹的名称。)
在Surface Pro X上,新的ARM64
程序文件文件夹名为“程序文件(Arm)”
最后,在
定义中,确保将installervision
设置为500
<代码>平台可以保留为$(var.Platform)
,也可以手动键入arm64
。对于两个平台
输入,intellisense将在其下方加下划线,但这可以忽略
完成所有这些之后,您现在应该能够为Surface Pro X机器创建ARM64 MSI安装程序了
<Directory Id="ProgramFilesArm64Folder" Name="Program Files (Arm)">
<Directory Id="INSTALLFOLDER" Name="!(loc.ProductNameFolder)" />
</Directory>