如何不使用MSIX部署.NET MAUI应用并结合WiX打包
.NET MAUI非打包部署方案(适配WiX Toolset)
问题背景
- 拥有10年WiX Toolset构建安装程序经验,当前需将MAUI应用整合进现有安装程序,但MSIX方案存在以下无法接受的限制:
- MSIX仅支持当前用户安装,无法实现机器范围的全局安装
- MSIX会将应用安装到
C:\Program Files\WindowsApps隐藏目录,无法自主控制安装路径
- 核心需求:以非MSIX方式发布MAUI应用,获取构建后
bin目录下的所有必要文件,通过WiX的HEAT工具生成.wxs文件,最终与其他组件构建WiX Bundle
非打包发布MAUI应用的实现步骤
- 修改MAUI项目配置
在项目的.csproj文件中添加以下配置,启用非打包发布模式:<PropertyGroup> <WindowsPackageType>None</WindowsPackageType> </PropertyGroup> - 构建/发布MAUI应用
使用常规方式针对Windows平台发布应用:- 命令行方式:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release(根据实际.NET版本调整框架参数) - 发布完成后,在项目的
bin/Release/netX.X-windowsXXXX.X/publish/winXX-x64(对应目标架构目录)下即可获取所有运行必需的文件
- 命令行方式:
- 使用WiX HEAT生成组件配置
针对上述发布目录,运行HEAT命令生成WiX的.wxs文件,示例命令:
关键参数说明:heat dir "你的发布目录路径" -cg MauiAppComponents -gg -sfrag -srd -dr INSTALLFOLDER -out MauiApp.wxs-cg:指定组件组名称-gg:自动生成GUID-sfrag:生成片段式组件结构-srd:排除根目录自身的组件定义-dr:指定目标安装目录引用(需与WiX主配置中的安装目录一致)
后续整合
将生成的MauiApp.wxs引入到WiX项目中,与现有组件一起配置到Bundle项目内,即可实现MAUI应用的全局自定义路径安装。
内容的提问来源于stack exchange,提问作者Steve Miller
相关产品推荐
相关产品推荐

