我有一个在多个安装程序项目中使用的 Wix 自定义操作 DLL。我想将此 DLL 部署到我们的 nuget 存储库,以便更容易共享。但是,
dotnet pack
命令不会将正确的 DLL 放入包中。该项目构建了 2 个 DLL。 WixInstallTools.dll
和WixInstallTools.CA.dll
。我实际上不确定安装程序项目是否需要这两个 DLL,但它们肯定需要 WixInstallTools.CA.dll
。如何将此 CA DLL 放入 nuget 包中。我在 Visual Studio 2022 环境中使用 Wix4。以下是我的项目文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<OutputPath>bin\$(Configuration)\$(Platform)</OutputPath>
<Version>1.0.0.0</Version>
<Authors>author</Authors>
<Company>company</Company>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
<DebugType>embedded</DebugType>
<PackageId>WixInstallTools</PackageId>
<PackageDescription>Wix Custom Action Library</PackageDescription>
<PackageTags>WixInstallTools;Wix Install Tools;Wix;Install;Tools</PackageTags>
<RepositoryUrl>https://github.com/company/nuget</RepositoryUrl>
</PropertyGroup>
<ItemGroup>
<Content Include="CustomAction.config" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="WixToolset.Dtf.CustomAction" Version="4.0.4" />
<PackageReference Include="WixToolset.Dtf.WindowsInstaller" Version="4.0.4" />
</ItemGroup>
<ItemGroup>
<Reference Include="PresentationFramework" />
<Reference Include="System.DirectoryServices.AccountManagement" />
</ItemGroup>
</Project>
.CA.dll(本机 PE)包含 .DLL(.NET Framework 程序集)。这将被视为本机运行时依赖项。
如果可能的话...本页将解释如何实现。
https://learn.microsoft.com/en-us/nuget/create-packages/native-files-in-net-packages
现在您还可以将自定义操作转变为完整的 WiX 扩展。它们作为托管 DLL 进行分发,并且是编译器的构建时参考。查看 IIS、Util 等扩展的存储库。