Ben*_*Key 6 .net wix burn wix3.10
我在让面向 .NET 4.5 的 WiX 自定义引导程序应用程序工作时遇到困难。
我的 Bundle.wxs 中有以下行。
<PackageGroupRef Id="NetFx45Web" />
Run Code Online (Sandbox Code Playgroud)
我的 BootstrapperCore.config 如下。
<configuration>
<configSections>
<sectionGroup name="wix.bootstrapper" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section name="host" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<wix.bootstrapper>
<host assemblyName="FSCustomBA" />
</wix.bootstrapper>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了多种变体。
例如,我还尝试了以下方法。
<host assemblyName="FSCustomBA">
<supportedFramework version="v4\Full" />
<supportedFramework version="v4\Client" />
</host>
Run Code Online (Sandbox Code Playgroud)
而以下。
<host assemblyName="FSCustomBA">
<supportedFramework version="v4.5\Full" />
<supportedFramework version="v4.5\Client" />
</host>
Run Code Online (Sandbox Code Playgroud)
而以下。
<host assemblyName="FSCustomBA">
<supportedFramework version="v4.5" />
</host>
Run Code Online (Sandbox Code Playgroud)
而以下。
<host assemblyName="FSCustomBA">
<supportedFramework version="v4.5\Full" />
</host>
Run Code Online (Sandbox Code Playgroud)
而以下。
<host assemblyName="FSCustomBA">
<supportedFramework version="v4.5\Client" />
</host>
Run Code Online (Sandbox Code Playgroud)
无论我尝试过什么,当我在没有安装 .NET 4.5 的系统上运行我的安装包时,都会提示我安装 .NET 4.5。一旦我按下同意并安装按钮,安装包就会崩溃。当我尝试再次运行安装包时,它在显示按钮之前挂起。即使在我重新启动后它也会挂起。我需要从系统映像恢复我的系统,然后它才能再次运行。
谁能告诉我我做错了什么?
我正在使用 WiX 3.10。
到目前为止,我关于发生了什么的唯一线索是结果日志文件中的以下行。
[1A14:1778][2016-06-28T10:01:17]i000: The prerequisites were already installed. The bootstrapper application will not be reloaded to prevent an infinite loop.
Run Code Online (Sandbox Code Playgroud)
这在 Stack Overflow 上的另一个问题中提到,前提条件引导程序应用程序无法安装 .NET 4.5。这个问题的答案之一表明答案是在 BootstrapperCore.config 文件的 supportedRuntime 元素中设置 sku 值。不过,我已经做到了。还有其他事情正在发生。
我发布了我自己问题的答案,希望它能让遇到类似问题的其他人受益。
事实证明,问题不在于我的 BootstrapperCore.config 文件的内容,而在于我的 BootstrapperCore.config 文件的名称。也就是说,我的 BootstrapperCore.config 文件的最终内容与我在问题中指出的完全相同,如下所示。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="wix.bootstrapper" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section name="host" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<wix.bootstrapper>
<host assemblyName="FSCustomBA" />
</wix.bootstrapper>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我尝试多个涉及使用 supportedFramework 元素的变体时,我走错了路。结果证明问题与此无关。相反,问题是我遵循了作为 WiX 一部分的 WixBA 和 TestBA 应用程序的示例,即以 ${ProjectName}.BootstrapperCore.config 模式命名 BootstrapperCore.config 文件。因为我的项目被命名为 FSCustomBA,所以我的 BootstrapperCore.config 文件被命名为 FSCustomBA.BootstrapperCore.config。
这可以。它可以工作。但是,我没有意识到该文件必须在运行安装包时创建的 .ba 目录的上下文中命名为 BootstrapperCore.config。由于我不知道这一点,我将文件包含在我的包中,如下所示。
<Payload SourceFile="$(var.FSCustomBA.TargetDir)FSCustomBA.BootstrapperCore.config" />
Run Code Online (Sandbox Code Playgroud)
这是行不通的。以下将。
<Payload Name="BootstrapperCore.config" SourceFile="$(var.FSCustomBA.TargetDir)FSCustomBA.BootstrapperCore.config" />
Run Code Online (Sandbox Code Playgroud)
请注意在 Payload 元素中使用 Name 属性。这表示在 .ba 目录中命名文件 BootstrapperCore.config。
解决该问题后,接下来遇到以下错误:“0x80131040:定位的程序集的清单定义与程序集引用不匹配。” 在日志文件中,这被记录为无法加载托管引导程序应用程序。
为了解决这个问题,我只是将与我的自定义 BA 关联的 Payload 元素的 SuppressSignatureVerification 属性设置为 yes。例如,我使用的 Payload 元素如下。
<Payload SourceFile="$(var.FSCustomBA.TargetDir)FSCustomBA.dll" SuppressSignatureVerification="yes" />
Run Code Online (Sandbox Code Playgroud)
我认为这只是由于我使用的代码签名证书而有必要。
我的雇主使用 VeriSign 的官方代码签名证书进行所有官方构建。但是,即使对于大多数开发人员,此证书的详细信息也是保密的。开发人员在日常工作中使用自签名证书。这适用于大多数事情,但显然不适用于此。
现在我已经解决了这些问题,我的自定义引导程序应用程序正在加载,除了一个小错误外,按预期工作。
我希望通过记录我的发现,我可以避免其他人为解决这个问题而头痛。
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |