文件
PazeE-Language/src/PazeE.Installer/PazeE.Installer.Msi.wixproj
T
JGZ_YES 2ed6aa24e3 installer: multi-language support (zh-CN/en-us/zh-tw)
WixLocalization + Cultures in .wixproj + 3 .wxl files + dialog_bg optimized
2026-08-02 18:06:48 +08:00

67 行
3.2 KiB
XML

<Project Sdk="WixToolset.Sdk/6.0.2">
<PropertyGroup>
<OutputName>PazeE-0.1.0-alpha-win-x64</OutputName>
<OutputType>Package</OutputType>
<!-- MSI 作为中间产物输出到 obj(不单独发布,仅供 Bundle 内嵌) -->
<OutputPath>obj\Release\</OutputPath>
<!-- MSBuild 属性(供 HarvestDirectory 引用) -->
<PublishBinDir>..\..\publish\0.1.0-alpha\bin</PublishBinDir>
<!-- 同时作为 WiX 预处理器变量传入 .wxs -->
<DefineConstants>PazeEVersion=0.1.0-alpha;MsiVersion=0.1.0;PublishBinDir=$(PublishBinDir)</DefineConstants>
<!-- x64 平台:使 heat 生成的组件标记为 64 位,匹配 ProgramFiles64Folder -->
<Platform>x64</Platform>
<!-- 抑制 .NET 自包含运行时常见的 ICE 校验警告 -->
<SuppressIces>ICE60;ICE61</SuppressIces>
<TreatValidationWarningsAsErrors>false</TreatValidationWarningsAsErrors>
<!-- 两个项目共享同一目录:排除 Bundle.wxs,SDK 自动包含 Product.wxs + heat 生成文件 -->
<DefaultItemExcludes>$(DefaultItemExcludes);Bundle.wxs</DefaultItemExcludes>
<!-- MSI 输出目录(同时发布 MSI 到 installer 目录,与 .exe 并列) -->
<PublishDir>..\..\publish\0.1.0-alpha\installer\</PublishDir>
<!-- 多语言构建:简体中文(默认) + English + 繁體中文 -->
<Cultures>zh-cn;en-us;zh-tw</Cultures>
<DefaultCulture>zh-cn</DefaultCulture>
</PropertyGroup>
<ItemGroup>
<!-- heat 任务宿主:提供 HarvestDirectory item 处理 -->
<PackageReference Include="WixToolset.Heat" Version="6.0.2" />
<!-- WixUI 扩展:提供 WixUI_InstallDir 对话框集(许可协议/路径选择) -->
<PackageReference Include="WixToolset.UI.wixext" Version="6.0.2" />
</ItemGroup>
<!-- 本地化文件:三种语言的 UI 字符串 -->
<ItemGroup>
<WixLocalization Include="en-US.wxl" Culture="en-us" />
<WixLocalization Include="zh-CN.wxl" Culture="zh-cn" />
<WixLocalization Include="zh-TW.wxl" Culture="zh-tw" />
</ItemGroup>
<ItemGroup>
<!-- 自动收割 publish\0.1.0-alpha\bin 下全部文件为 ComponentGroup -->
<HarvestDirectory Include="$(MSBuildProjectDirectory)\$(PublishBinDir)">
<ComponentGroupName>PazeEBinFiles</ComponentGroupName>
<DirectoryRefId>INSTALLFOLDER</DirectoryRefId>
<PreprocessorVariable>var.PublishBinDir</PreprocessorVariable>
<SuppressCom>true</SuppressCom>
<SuppressRegistry>true</SuppressRegistry>
<SuppressRootDirectory>true</SuppressRootDirectory>
<KeepEmptyDirectories>false</KeepEmptyDirectories>
<AutogenerateGuids>true</AutogenerateGuids>
<GenerateGuidsNow>true</GenerateGuidsNow>
</HarvestDirectory>
</ItemGroup>
<!-- 构建后复制 MSI 到 publish 目录(与 Bundle .exe 并列) -->
<!-- 多语言构建:每个 culture 生成独立 MSI,复制默认语言(zh-cn)到 publish -->
<Target Name="PublishMsi" AfterTargets="Build" Condition="'$(PublishDir)' != ''">
<ItemGroup>
<_MsiFiles Include="$(OutputPath)$(DefaultCulture)\*.msi" />
</ItemGroup>
<Copy SourceFiles="@(_MsiFiles)"
DestinationFolder="$(MSBuildProjectDirectory)\$(PublishDir)"
SkipUnchangedFiles="true" />
</Target>
</Project>