【问题标题】:WiX Bundle not displaying MSIs in Programs and FeaturesWiX Bundle 未在程序和功能中显示 MSI
【发布时间】:2017-01-19 15:32:50
【问题描述】:

我的捆绑包安装中出现了新的、奇怪的行为:以前出现在“程序和功能”中的 MSI 已停止出现在“程序和功能”中(以下简称为 P&F)。

喜欢的行为是让我作为 MSI 安装的程序出现在 P&F 中,让用户有机会单独卸载它们。

我尝试过/注意到的:

  • 如果我安装 MSI 而不捆绑它们:
  • 它们出现在 P&F 中,并且可以卸载
  • 此外,我可以通过将 ARPSYSTEMCOMPONENT 属性设置为 1 来控制它们是否出现在 P&F 中(默认为 0,表示“确实出现在 P*F 中),即: <Property Id="ARPSYSTEMCOMPONENT" Value="1"/>

  • 这些更改会反映在注册表中。检查密钥 HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/{GUID} 时,如果我将属性设置为 1,它会显示(当我将其设置为 0 时它不会显示,但我认为这是因为默认值不显示)。

但是,当我将 MSI 放入一个 Bundle 中时,bingo-bango-bongo 它们从 P&F 中消失了!而且,如果我检查注册表,每个 MSI 的 SystemComponent 属性都设置为 1。

我得出的结论是,不知何故,在我的引导程序中,我的 MSI 的 SystemComponent 属性被设置为 1。但是这些属性可以在哪里设置呢?不用说,我从来没有在我的 WiX XML 中设置它们(至少,我认为我没有这样做)。我没有任何用于引导程序的特殊 UI(只是一个许可证),并且 MSI 本身可以安静地安装,没有 UI。

我被困住了!任何人都可以对此有所了解吗?

我使用的是 Visual Studio 2015,WiX 版本 3.10。这是我的完整引导程序代码:

 <?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:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
    <Bundle Name="****"
            Version="1.0.5.0"
            Manufacturer="****"
            UpgradeCode="7be91f26-93f8-400c-9eac-e69383454e03"
            IconSourceFile="src\****.ico" DisableModify="yes" DisableRemove="yes"
            AboutUrl="****.com"
            Copyright="Copyright 2017, ****">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
            <bal:WixStandardBootstrapperApplication LicenseFile="src\****_License.rtf" 
                                                    SuppressOptionsUI="yes"/>
        </BootstrapperApplicationRef>

        <!-- The two registry serarches provide a variable, what version of .NET is installed on the target machine.  One search
           is for x86, the other for x64. -->
        <util:RegistrySearch Root="HKLM"
                             Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                             Value="Version"
                             Variable="Net452FullVersion"/>
        <util:RegistrySearch Root="HKLM"
                             Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                             Value="Version"
                             Variable="Net452x64FullVersion" 
                             Win64="yes"/>

        <Chain>
            <ExePackage
                Id="Microsoft_dot_Net_4.5.2" 
                Name="Microsoft 4.5.2 Setup"
                Cache="no"
                Compressed="yes"
                PerMachine="yes"
                Permanent="yes"
                SourceFile="executables\NDP452-KB2901907-x86-x64-AllOS-ENU.exe" 
                InstallCommand="/q"
                DetectCondition="(Net452FullVersion = &quot;4.5.51209&quot;) AND (NOT VersionNT64 OR (Net4x64FullVersion = &quot;4.5.51209&quot;))"
                InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Net452FullVersion = &quot;4.5.51209&quot; OR Net452x64FullVersion = &quot;4.5.51209&quot;))"/>
            <ExePackage Id="Microsoft_Visual_C_plus_plus_Redistributable_2015" 
                        InstallCommand="/q" 
                        SourceFile="executables\vc_redist.x86.exe"/>
            <RollbackBoundary/>                    
            <MsiPackage SourceFile="$(var.****.TargetPath)"/>
            <MsiPackage SourceFile="$(var.****.TargetPath)"/>
            <ExePackage SourceFile="executables\****.exe" InstallCommand="/S"/>
            <ExePackage SourceFile="executables\****.exe"/>
        </Chain>
    </Bundle>
</Wix>

【问题讨论】:

    标签: wix uninstallation


    【解决方案1】:

    MsiPackage/@Visible 属性控制 MSI 包是否显示在 ARP 中。

    【讨论】:

    • 大脸掌!谢谢。这是我真的,​​真的不应该浪费三个小时的事情(至少我学到了关于注册表的东西)。
    猜你喜欢
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多