构建未打包的WinUI3程序

我希望编译出来的WinUI3程序可以双击exe文件直接运行。
测试的空模板
本文分成C++工程与C#工程两部分。

C++

创建一个空的已打包的WinUI3 C++工程,编译能跑,关掉工程(这里如果保持VS打开,可能下面修改完会报错),接下来修改.vcxproj文件。

找到<PropertyGroup>标签(应该很靠前),找到Appx打包<AppxPackage>,默认的状态是true,把值改成false

1
<AppxPackage>false</AppxPackage>

接着在<PropertyGroup>的末尾添加

1
2
<!-- 不打包 -->
<WindowsPackageType>None</WindowsPackageType>

这样设置为不打包。

这样就可以编译出未打包的WinUI3程序了,目前程序有两个特征:
1.体积小(VS默认模板生成的Release大小为59.8MB)
2.需要设备安装Windows App SDK才能运行

换个设备就要装SDK太麻烦,所以我们编译的时候就带上SDK:

1
2
<!-- 自包含 Windows App SDK Runtime -->
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>

这样就能随时随地运行,但是体积庞大(VS默认模板生成的Release大小为159MB)

C#

C#的工程我拿手头微软给的WinUINote项目测试,关掉工程(不关掉也可能报错),接下来修改.csproj文件。

<PropertyGroup>标签的末尾添加这两句:

1
2
3
4
<!-- 不打包 -->
<WindowsPackageType>None</WindowsPackageType>
<!-- 自包含 Windows App SDK Runtime -->
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>

写完之后打开工程,把生成切换为Unpackage:
生成
不然会出现如下报错:
报错

和C++工程一样,生成不需要设备安装Windows App SDK就能直接双击运行的程序。

测试了一下,包含SDK的程序目录大小为207MB,打包生成的大小为26.3MB。

【本文完】

参考资料:
KaranocaVe’s Blog
一些记录(博客园)
小扳手咔咔(Bilibili)
WinUI 3 踩坑记


构建未打包的WinUI3程序
https://mrwei95.github.io/2026/01/03/WinUI-NoPackage/
作者
Tommy Wei
发布于
2026年1月3日
更新于
2026年1月3日