我试图构建一个安装程序,它只捆绑了Dotnet Framework 4.81和一个简单的测试应用程序。
我一直得到一个错误,说"wix.exe:错误WIX0001:System.ArgumentNullException:值不能为空。"
我创建了一个Bundle(Wix v4)项目,下面是Bundle. wxs文件。
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
<Bundle Name="TestBundleInstaller" Manufacturer="TODO Manufacturer" Version="1.0.0.0" UpgradeCode="d090a306-15fc-4e04-985e-83cbb3a2cf5f">
<BootstrapperApplication>
<bal:WixStandardBootstrapperApplication LicenseUrl="https://www.example.com/license" Theme="hyperlinkLicense" />
</BootstrapperApplication>
<Chain>
<!-- TODO: Define the list of chained packages. -->
<ExePackage DetectCondition="WIX_IS_NETFRAMEWORK_48_OR_LATER_INSTALLED" InstallArguments="/q" UninstallArguments="/q">
<Payload SourceFile="DirectoryTo\NDP481-x86-x64-AllOS-ENU.exe"/>
</ExePackage>
<!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
<MsiPackage SourceFile="DirectoryTo\TestSetup.msi" />
</Chain>
</Bundle>
</Wix>
下面是TestBundle.wixproj文件。
<Project Sdk="WixToolset.Sdk/4.0.0">
<PropertyGroup>
<OutputType>Bundle</OutputType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutputPath>bin\x64\Debug</OutputPath>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<None Include="NDP481-x86-x64-AllOS-ENU.exe" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="WixToolset.Bal.wixext" Version="4.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TestSetup\TestSetup.wixproj" />
</ItemGroup>
</Project>
阅读了许多Wix教程和文档,我仍然不理解我遇到的错误。任何帮助都非常感谢。
构建输出:
生成已开始...
1>------跳过的构建:项目:测试,配置:调试x64-
1>未选择要为此解决方案配置生成的项目
2>--跳过的构建:项目:测试设置,配置:调试x64-
2>未选择要为此解决方案配置生成的项目
3>--Build started:项目:测试包,配置:调试x64-
已恢复C:\Users\JJacobs\source\repos\TestBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBundleBund
3> wix. exe:error WIX0001:System.ArgumentNullException:值不能为空。
3>完成构建项目"TestBundle.wixproj"--FANUC。
== 0成功,1失败,0最新,2跳过=
5条答案
按热度按时间balp4ylt1#
ArgumentNullException
是WiX中的一个bug。请提交一个问题:https://wixtoolset.org/docs/gethelp/#bugsgojuced72#
根本问题是
ExePackage
需要一个SourceFile
属性。在这种情况下,将Payload元素移动到ExePackage中,如下所示:WiX v4 * 应该 * 将其作为错误捕获,而不是崩溃。WiX中的代码由于远程有效载荷而变得复杂。
我看到一个问题已经打开,所以它可以在WiX中得到修复。
rqmkfv5c3#
为了完整起见,这里是新的Bundle.wxs文件。
mitkmikd4#
以下是如何在v4捆绑包项目中使用注册表搜索。
3npbholx5#