没有启动WiX引导程序创建的安装程序
本文关键字:安装 程序 创建 引导程序 启动 WiX | 更新日期: 2023-09-27 18:12:20
我尝试使用Bootstrapper创建一个设置文件,该文件旨在首先运行. net框架设置文件,然后才运行MyApp.exe。完成项目后,我得到了最终的安装文件,但即使双击或选择文件后按enter键也无法启动。我不知道我哪里错了。
这是program.cs
文件:
using Microsoft.Tools.WindowsInstallerXml.Bootstrapper;
namespace testingBoot
{
class Program:BootstrapperApplication
{
static void Main(string[] args)
{
Console.WriteLine("This is tesing for the bootStrapper");
Console.Read();
}
protected override void Run()
{
throw new NotImplementedException();
}
}
}
我的WiX安装文件在这里
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle UpgradeCode="46C265F4-3F60-4781-9EF6-DB889C115D55" Version="1.0.0.0">
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<Payload SourceFile="BootstrapperCore.config" />
<Payload SourceFile="C:'Program Files (x86)'WiX Toolset v3.7'SDK'Microsoft.Deployment.WindowsInstaller.dll" />
</BootstrapperApplicationRef>
<Variable Name="LaunchTarget"
Value="[ProgramFiles64Folder]Folder'Exe Name.exe"/>
<Chain>
<PackageGroupRef Id="Netfx4Full"/>
<ExePackage SourceFile="$(var.PATH)'testingBoot.exe"/>
</Chain>
</Bundle>
<Fragment>
<WixVariable Id="WixMbaPrereqPackageId"
Value="Netfx4Full"/>
<WixVariable Id="WixMbaPrereqLicenseUrl"
Value="NetfxLicense.rtf" />
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE'Microsoft'Net Framework Setup'NDP'v4'Full"
Value="Version"
Variable="Netfx4FullVersion" />
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE'Microsoft'Net Framework Setup'NDP'v4'Full"
Value="Version"
Variable="Netfx4x64FullVersion"
Win64="yes" />
<PackageGroup Id="Netfx4Full">
<ExePackage Id="Netfx4Full"
Cache="no"
Compressed="yes"
PerMachine="yes"
Permanent="yes"
Vital="yes"
Name="dotNetFx40_Full_x86_x64.exe"
SourceFile="dotNetFx40_Full_x86_x64.exe"
DetectCondition="VersionNT64" />
</PackageGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents"
Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<!-- <Component Id="ProductComponent"> -->
<!-- TODO: Insert files, registry keys, and other resources here. -->
<!-- </Component> -->
</ComponentGroup>
</Fragment>
</Wix>
并且我已经将host下的assemblyName更改为配置文件BootstrapperCore.config
中我自己的程序集名称testingBoot.exe
。
这是我的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" />
<supportedRuntime version="v2.0.50727" />
</startup>
<wix.bootstrapper>
<host assemblyName="testingBoot" >
<supportedFramework version="v4'Full" />
</host>
</wix.bootstrapper>
</configuration>
看来您的BootstrapperApplication程序集从BootstrapperApplicationRef
元素中丢失了。我还应该注意到Burn引擎会直接加载你的BA组件。它不会将其作为可执行文件启动。因此,要加载BootstrapperApplication,我认为你需要做以下更改:
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<Payload SourceFile="$(var.PATH)'testingBoot.exe"/>
<Payload SourceFile="BootstrapperCore.config" />
<Payload SourceFile="C:'Program Files (x86)'WiX Toolset v3.7'SDK'Microsoft.Deployment.WindowsInstaller.dll" />
</BootstrapperApplicationRef>
这将添加testingBoot.exe
到BootstrapperApplication,如果你的BoostrapperCore.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" />
</startup>
<wix.bootstrapper>
<host assemblyName="testingBoot">
<supportedFramework version="v4'Full" />
<supportedFramework version="v4'Client" />
</host>
</wix.bootstrapper>
</configuration>
然后Burn引擎将找到一个名为testingBoot
的程序集并加载它。如上所述,将直接加载testingBoot
,并直接调用Run()
方法。Main()
入口点将被跳过,因为Burn引擎不将程序集作为可执行文件运行。