3

WiX ブートストラップを使用して .NET とアプリケーションをインストールしています。.NET インストールは、ステートメントを使用してチェーンで指定されます。

<PackageGroupRef Id="NetFx40Redist">

ブートストラップを使用してアンインストールすると、.NET パッケージもアンインストールされます。上記のステートメントを変更して、ブートストラッパーに .NET パッケージを削除しないように指示するにはどうすればよいですか?

編集:以下は、これを行うために私が書いたコードです。何か違うことをしなければならない場合は、コメントを歓迎します。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

    <Bundle Name="appName" Version="$(var.Version)" Manufacturer="mfr" UpgradeCode="your-GUID"

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
        <Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]mfrName\appName" />

        <Chain>
            <PackageGroupRef Id="Net4Redist"/>

            <MsiPackage
                    Id="MsiInstaller"
                    Compressed="yes"
                    SourceFile="$(var.SolutionDir)\appName_Installer\bin\$(var.Configuration)\appName_Installer.msi"
                    Permanent="no"
                    Vital="yes">
                <MsiProperty Name="INSTALLLOCATION" Value="[InstallFolder]" />
            </MsiPackage>
        </Chain>
    </Bundle>

    <Fragment>
        <PackageGroup Id="Net4Redist">
            <ExePackage Id="Netfx40Xxx" Cache="no" Compressed="yes" PerMachine="yes"
                 Permanent="yes" Vital="yes" InstallCommand="/q"
                 SourceFile="$(var.SolutionDir)\Bootstrapper\redist\dotNetFx40_Full_x86_x64.exe"
                 InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0)"/>
        </PackageGroup>
    </Fragment> 
</Wix>
4

2 に答える 2

1

EXEPackage 要素で "Permanent" 属性を使用してみましたか?

EXEパッケージ

于 2013-09-18T18:19:46.230 に答える
0

問題を解決してよかったですが、おっしゃったように、検出条件の設定がないため、インストーラーを実行するたびに .NET 処理が表示されるのはおそらくそのためです。次のレジストリ検索と検出条件を例に追加すると、それはもう表示されないはずです。

<Fragment>
    <util:RegistrySearchRef Id="NETFRAMEWORK40"/>

    <PackageGroup Id="Net4Redist">
        <ExePackage Id="Netfx40Xxx" Cache="no" Compressed="yes" PerMachine="yes"
             Permanent="yes" Vital="yes" InstallCommand="/q"
             SourceFile="$(var.SolutionDir)\Bootstrapper\redist\dotNetFx40_Full_x86_x64.exe"
             DetectCondition="NETFRAMEWORK40"
             InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0)"/>
    </PackageGroup>
</Fragment> 
于 2014-01-07T20:40:47.880 に答える