Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 防止Burn卸载.NET软件包_Wix_Burn - Fatal编程技术网

Wix 防止Burn卸载.NET软件包

Wix 防止Burn卸载.NET软件包,wix,burn,Wix,Burn,我正在使用WiX引导程序安装.NET和我的应用程序。NET安装是使用以下语句在链中指定的 <PackageGroupRef Id="NetFx40Redist"> 当我使用引导程序卸载时,.NET包也会被卸载。我如何修改上面的语句来告诉引导程序不要删除.NET包 编辑:下面是我最后编写的代码。如果有什么我应该做的不同,欢迎评论 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://s

我正在使用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>

是否尝试在EXEPackage元素中使用“Permanent”属性


很高兴您解决了问题,但是,正如您所提到的,您没有任何检测条件设置,所以这可能就是为什么每次运行安装程序时都会看到.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> 


谢谢您的指导。我已经编辑了我的问题,以显示我是如何创建ExePackage的。这样做对吗?我看不出这个问题有任何改变。对不起,我应该先做些改变。他们现在在那里。看起来不错,你能运行这个并测试上面的场景吗?是的,它不再卸载.NET。每次我运行安装程序时,它都会花费大量时间在.NET安装程序上,就像每次都在安装.NET一样,即使它已经安装好了。不知道为什么会这样。但我原来的问题解决了。