创建安装程序以安装 64 位应用程序
环境
- Visual Studio
-
- Visual Studio 社区 2017
- Visual Studio 社区 2019
- WiX 工具集
- 3.11.2
* 它适用于其他版本,但未经验证
简介
除非 WiX 显式指定,否则它仅作为 32 位应用程序安装。 例如,在 64 位操作系统上安装时,它安装在"C:\程序文件 (x86)"文件夹中。
本节介绍作为 64 位应用程序安装的设置。 假设您已经创建了 WiX 项目,并且安装程序已创建该项目。
顺便说一下,安装 64 位应用程序是 32 位应用程序还是 64 位应用程序? 由于它取决于包含的文件,请认为安装程序端的设置到最后。 通过支持 64 位安装程序,还可以显式防止安装在 32 位操作系统上。
提前准备
- 您现在在 WiX 中创建安装程序。
创建项目
为新的 64 位安装程序创建项目。 如果需要创建 32 位和 64 位安装程序, 将 32 位划分为单独的项目是很有用的,因为它可以同时生成。
创建项目后,可以像 32 位版本一样设置项目, 将 32 位版本中创建的文件复制到 64 位项目。
在 64 位版本中,所需的文件几乎与 32 位版本相同,因此有些文件可以共享。 解释变得有点复杂,所以这次我打折扣。
安装程序项目的 64 位设置
更改项目设置以创建 64 位应用程序安装程序,但 以下 A 或 B 模式都设置为"确定"。
另一种方法是在包的平台属性中指定 x64。 现在,它已弃用,设置不起作用,并且必须为每个要安装的文件设置 64 位参数。 我不推荐它,因为它效率低下。
A. 将 x64 平台添加到项目
添加 x64,因为最初项目中只有 x86 生成配置。
选择"生成"和"配置管理器"菜单。
将解决方案配置保留为发布版本,并从 x64 项目平台中选择"新建"。
避免创建新平台"x64",复制源"x86",不创建新的解决方案平台。
添加后,再次打开平台。 选择"编辑"。 顺便说一下,x64 在添加 x64 后立即不在列表中,但当您关闭屏幕并重新显示时,它可能会添加到列表中。
删除 x86,因为 WiX 项目中的缺陷会导致初始选择不切换到 x64,从而导致 x86。 但是,即使 x86 因故障而关闭,它也可能恢复。 如果要确保删除项目文件"wixproj",可以在文本编辑器中打开并删除代码。
如下图所示,这是可以的。 如果右上方的活动平台保持 x86,因此,如果担心,请重命名它进行编辑。
B. 将"-arch x64"添加到编译参数
右键单击 64 位安装程序项目以打开"属性"。
从左侧选项卡中选择"工具设置",并将配置更改为"发布"。 在"添加参数"中的"比较器"中,输入 -arch x64。
使目标文件夹成为 64 位文件夹
打开产品.wxs。
将以下"目录 ID= 程序文件文件夹"替换为"目录 ID="程序文件 64Folder"。
<Wix>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
更改"开始"菜单快捷方式的文件名或文件夹名称
虽然不是必需的,但如果您按原样复制 32 位设置,请选中 32 位和 64 位应用程序的"开始"菜单。 快捷方式将挂起。
根据需要更改它。
<Wix>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<Directory Id="INSTALLFOLDER" Name="LittleSaviorTrial">
<Component Win64="yes" Id="LITTLESAVIORTRIAL.EXE" DiskId="1" Guid="E382FBDF-73E0-4511-A73D-E9798449F30E">
<File Id="LITTLESAVIORTRIAL.EXE" Name="LittleSaviorTrial.exe" Source="LittleSaviorTrial\LittleSaviorTrial.exe" KeyPath="yes">
<Shortcut Id="LITTLESAVIORTRIAL.EXE_shortcut" Name="ここのファイル名を 64bit 版に変える" Directory="ProgramMenuDir" WorkingDirectory="INSTALLDIR" Icon="LITTLESAVIOR.ICO" IconIndex="0" Advertise="yes" />
<!-- 中略 -->
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuDir" Name="ここのフォルダ名を 64bit 版に変える">
<Component Id="ProgramMenuDir" Guid="5A73CC85-A1B3-4409-8C4F-3E8E888A7167">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
整个产品.wxs
在此状态下生成,并确保创建安装程序没有错误。 在 64 位操作系统环境中安装后,请检查文件夹和文件是否已在 C:\程序文件*中创建。
此外,请确保在尝试在 32 位操作系统环境中安装时出现错误。