Wix:系统找不到文件';SourceDir';
我被诅咒使用wix和wixtoolset3.11构建一个设置。是的,这是地狱。使用此工具集做简单的事情和阅读手册需要花费大量的时间和金钱 我的目标:安装程序应该下载并安装.NETFramework 4.5。声明如下:Wix:系统找不到文件';SourceDir';,wix,windows-installer,wix3.11,Wix,Windows Installer,Wix3.11,我被诅咒使用wix和wixtoolset3.11构建一个设置。是的,这是地狱。使用此工具集做简单的事情和阅读手册需要花费大量的时间和金钱 我的目标:安装程序应该下载并安装.NETFramework 4.5。声明如下: <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microso
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<?include ApplicationData.wxi?>
<Fragment>
<WixVariable Id="NetFx45WebInstallCondition" Value="" Overridable="yes" />
<!-- install dotnet framework -->
<!-- https://stackoverflow.com/questions/42720958/web-download-of-vcruntime140-with-wix-burn/42726779 -->
<PackageGroup Id="NetFx45Web">
<ExePackage
InstallCommand="/q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx45FullLog].html""
RepairCommand="/q /norestart /repair /ChainingPackage "[WixBundleName]" /log "[NetFx45FullLog].html""
UninstallCommand="/uninstall /q /norestart /ChainingPackage "[WixBundleName]" /log "[NetFx45FullLog].html""
PerMachine="yes"
Id="NetFx45Web"
Cache="yes"
Permanent="yes"
Vital="yes"
Protocol="netfx4"
DownloadUrl="https://www.microsoft.com/de-ch/download/confirmation.aspx?id=30653"
DetectCondition="false"
Compressed="no"
InstallCondition="!(wix.NetFx45WebInstallCondition)"
Name="Framework\dotNetFx45_Full_setup.exe"
/>
</PackageGroup>
</Fragment>
</Wix>
我不想将任何.NET Framework安装程序嵌入到我的安装程序中,但出于任何原因,都需要一个属性“Name”或“SourcePath”。我使用属性“SourcePath”或“Name”,这两个声明都需要指向现有文件的路径。是的,当然是这样。那是Wix
当我对路径使用“SourceFile”时,Visual Studio中的编译器会成功运行,但在未安装DotNet Framework 4.5的目标系统上,什么也不会发生。不会安装任何框架。好的,然后我尝试使用属性“Name”,并传递值“Framework\dotNetFx45\u Full\u setup.exe”。编译安装程序时,出现以下错误:
系统找不到文件“SourceDir\Framework\dotNetFx45\u Full\u setup.exe”
嗯。。。到底什么是SourceDir,为什么我需要delcare一个路径,或者我想要安装程序下载文件?很多问题,但让我们从第一个问题开始:
如何解决与错误的“SourceDir”有关的问题?您应该用PackageGroupRef元素替换PackageGroup元素 您需要添加对NetFxExtension(WixNetFxExtension.dll)的引用,因为该扩展在生成时提供此定义。您可以在Visual Studio/Voctive中通过添加对项目的引用或将其添加到light.exe调用来完成此操作。见:
仅替换PackageGroup元素不起作用,因为PackageGroup元素是PackageGroup的子元素。正如您在我声明的第4行中所看到的,wixnetfx扩展已经被使用。从PackageGroupRef到“NetFx45Web”的引用不会触发任何下载。这个答案是错的。答案不是错的,你只是不明白而已。我添加了一个代码片段来向您展示一个工作示例。我已将您的剪贴添加到我的项目中,当我在目标系统上执行msi设置时,不会发生任何事情。安装程序仍然没有下载.NET Framework。当你说“msi安装程序”是什么意思时?你运行的是.exe还是.msi?你是否记录了它并读取了日志文件?所以这可能是你误解的根源。MSI无法安装.NET framework。您必须创建一个“引导程序”(.EXE)。EXE首先运行,安装.net framework,然后安装MSI。
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Bundle Name="ProductName1" Version="1.0.0.0" Manufacturer="ProductName1" UpgradeCode="f6ac65f9-56ca-496c-b04c-b68b37967298">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication LicenseFile="Resources\EULA.rtf" LogoFile="Resources\Icon.png" />
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx45Web"/>
<MsiPackage Id="ProductName1" SourceFile="$(var.ProductName1Setup.TargetPath)" />
</Chain>
</Bundle>
</Wix>