Wix 捆绑安装程序如何优雅地退出 'User Cancelled Installation' 0x80070642
Wix bundle installer how to gracefully exit a 'User Cancelled Installation' 0x80070642
我花了很多时间研究这个问题,尽我所能阅读所有内容,但我仍然找不到解决方案。
我正在使用 wix BootstrapperApplicationRef,将几个安装程序捆绑到一个整体安装程序中。
假设在完成第一个安装程序时我决定不同意许可协议,所以我决定取消。
我希望整个捆绑包安装程序能够正常退出,但在从第一个安装程序正常退出后,我看到了这个屏幕。
这看起来像是发生了灾难性的错误,而实际上这是一次故意退出。我怎样才能让这个优雅地退出伙计们?
根据wix项目文件,我使用的是wix 3.10。这是我的捆绑包的代码,其中包含一些识别文本 XXXXXX'd
<?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:bal="http://schemas.microsoft.com/wix/BalExtension">
<?if $(var.Configuration) = "Release" ?>
<?define UpgradeCode = "XXXXXX"?>
<?endif ?>
<?if $(var.Configuration) = "Debug" ?>
<?define UpgradeCode = "XXXXXX"?>
<?endif ?>
<?define EULAPath = XXXXXX ?>
<?define BundleName = "XXXXXX" ?>
<?define VersionNumber = "XXXXXX" ?>
<Bundle Name="$(var.BundleName)"
Version="$(var.VersionNumber)"
Manufacturer="XXXXXX"
AboutUrl="XXXXXX"
UpgradeCode="$(var.UpgradeCode)"
IconSourceFile="XXXXXX" >
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication LicenseFile="$(var.EULAPath)"
LogoFile="XXXXXX"/>
</BootstrapperApplicationRef>
<util:RegistrySearchRef Id="NETFRAMEWORK45"/>
<?define NetFx472MinRelease = 461808 ?>
<?define NetFx472EulaLink = http://referencesource.microsoft.com/license.html ?>
<WixVariable Id="WixMbaPrereqPackageId" Value="NetFx472Redist" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx472EulaLink)" Overridable="yes" />
<WixVariable Id="NetFx472RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx472MinRelease)" Overridable="yes" />
<WixVariable Id="NetFx472RedistInstallCondition" Value="" Overridable="yes" />
<WixVariable Id="NetFx472RedistPackageDirectory" Value="redist\" Overridable="yes" />
<Chain>
<ExePackage SourceFile="..\..\ThirdParty\Net_Framework_4_7_2.exe"
DetectCondition="!(wix.NetFx472RedistDetectCondition)"
InstallCommand="/q /install"
RepairCommand="/repair"
PerMachine="yes"
Vital="yes"
Permanent="yes"/>
<MsiPackage SourceFile="XXXXXX"
ForcePerMachine="yes"
Visible="no"
DisplayInternalUI="yes"
Permanent="no"
Vital="yes" />
<?if $(var.Configuration) = "Release" ?>
<ExePackage SourceFile="XXXXXX"
PerMachine="yes"
Vital="yes"
Permanent="no"/>
<?else?>
<ExePackage SourceFile="XXXXXX"
PerMachine="yes"
Vital="yes"
Permanent="no"/>
<?endif ?>
</Chain>
</Bundle>
<Fragment>
<PropertyRef Id="WIXNETFX4RELEASEINSTALLED" />
<Property Id="WIX_IS_NETFRAMEWORK_472_OR_LATER_INSTALLED" Secure="yes" />
<SetProperty Id="WIX_IS_NETFRAMEWORK_472_OR_LATER_INSTALLED" Value="1" After="AppSearch">
WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx472MinRelease)"
</SetProperty>
</Fragment>
</Wix>
我知道这对您的用户来说是一个令人困惑的场景,但尚不清楚如何修复它。其他用户可能同样感到困惑,取消 MSI 会导致主 window 完全消失。
捆绑包旨在为所有内容提供一个 UI。 DisplayInternalUI
是作为后备实施的,因此用户仍然可以使用他们的 MSI UI,直到他们有时间投资他们的捆绑包 UI。解决此问题的正确方法是停止让单个包显示 UI.
我花了很多时间研究这个问题,尽我所能阅读所有内容,但我仍然找不到解决方案。
我正在使用 wix BootstrapperApplicationRef,将几个安装程序捆绑到一个整体安装程序中。
假设在完成第一个安装程序时我决定不同意许可协议,所以我决定取消。
我希望整个捆绑包安装程序能够正常退出,但在从第一个安装程序正常退出后,我看到了这个屏幕。
这看起来像是发生了灾难性的错误,而实际上这是一次故意退出。我怎样才能让这个优雅地退出伙计们?
根据wix项目文件,我使用的是wix 3.10。这是我的捆绑包的代码,其中包含一些识别文本 XXXXXX'd
<?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:bal="http://schemas.microsoft.com/wix/BalExtension">
<?if $(var.Configuration) = "Release" ?>
<?define UpgradeCode = "XXXXXX"?>
<?endif ?>
<?if $(var.Configuration) = "Debug" ?>
<?define UpgradeCode = "XXXXXX"?>
<?endif ?>
<?define EULAPath = XXXXXX ?>
<?define BundleName = "XXXXXX" ?>
<?define VersionNumber = "XXXXXX" ?>
<Bundle Name="$(var.BundleName)"
Version="$(var.VersionNumber)"
Manufacturer="XXXXXX"
AboutUrl="XXXXXX"
UpgradeCode="$(var.UpgradeCode)"
IconSourceFile="XXXXXX" >
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication LicenseFile="$(var.EULAPath)"
LogoFile="XXXXXX"/>
</BootstrapperApplicationRef>
<util:RegistrySearchRef Id="NETFRAMEWORK45"/>
<?define NetFx472MinRelease = 461808 ?>
<?define NetFx472EulaLink = http://referencesource.microsoft.com/license.html ?>
<WixVariable Id="WixMbaPrereqPackageId" Value="NetFx472Redist" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx472EulaLink)" Overridable="yes" />
<WixVariable Id="NetFx472RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx472MinRelease)" Overridable="yes" />
<WixVariable Id="NetFx472RedistInstallCondition" Value="" Overridable="yes" />
<WixVariable Id="NetFx472RedistPackageDirectory" Value="redist\" Overridable="yes" />
<Chain>
<ExePackage SourceFile="..\..\ThirdParty\Net_Framework_4_7_2.exe"
DetectCondition="!(wix.NetFx472RedistDetectCondition)"
InstallCommand="/q /install"
RepairCommand="/repair"
PerMachine="yes"
Vital="yes"
Permanent="yes"/>
<MsiPackage SourceFile="XXXXXX"
ForcePerMachine="yes"
Visible="no"
DisplayInternalUI="yes"
Permanent="no"
Vital="yes" />
<?if $(var.Configuration) = "Release" ?>
<ExePackage SourceFile="XXXXXX"
PerMachine="yes"
Vital="yes"
Permanent="no"/>
<?else?>
<ExePackage SourceFile="XXXXXX"
PerMachine="yes"
Vital="yes"
Permanent="no"/>
<?endif ?>
</Chain>
</Bundle>
<Fragment>
<PropertyRef Id="WIXNETFX4RELEASEINSTALLED" />
<Property Id="WIX_IS_NETFRAMEWORK_472_OR_LATER_INSTALLED" Secure="yes" />
<SetProperty Id="WIX_IS_NETFRAMEWORK_472_OR_LATER_INSTALLED" Value="1" After="AppSearch">
WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx472MinRelease)"
</SetProperty>
</Fragment>
</Wix>
我知道这对您的用户来说是一个令人困惑的场景,但尚不清楚如何修复它。其他用户可能同样感到困惑,取消 MSI 会导致主 window 完全消失。
捆绑包旨在为所有内容提供一个 UI。 DisplayInternalUI
是作为后备实施的,因此用户仍然可以使用他们的 MSI UI,直到他们有时间投资他们的捆绑包 UI。解决此问题的正确方法是停止让单个包显示 UI.