带有Burn的条件卸载包

时间:2013-08-13 11:25:55

标签: wix windows-installer burn

我创建了一个应用程序并使用WiX将其打包。但是这个应用程序需要一个先决条件,比如SQL CE 3.5。然后我用Burn创建了一个boostrapper。要求是,如果先前未在用户的计算机中安装SQL CE,它将仅安装SQL CE。

我遇到的问题是,即使它没有安装(因为它已经安装),如果我卸载我的应用程序,它会卸载SQL CE。我该如何解决这个问题?

以下是代码:

<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Classes\Installer\Products\PACKED_GUID" Value="Version" Variable="SQLCE_Installed" Result="exists" />

<Chain>
  <MsiPackage Id="PkgA" SourceFile="PkgA.msi" DisplayInternalUI="yes" Visible="yes" InstallCondition="SQLCE_Installed" />

修改

只有在自行安装的情况下,引导程序才应删除先决条件SQL CE。这种方式(伪代码):

function install() {
  if isPrereqInstalled = false {
     call installPreReq()
     boolean bootstrapperInstalledApp = true
  }
}
function uninstall() {
  if bootstrapperInstalledApp = true {
     call uninstallPreReq()
     call uninstallMyApp()
  } else {
     call uninstallMyApp()
  }
}

1 个答案:

答案 0 :(得分:3)

将Package上的Permanent设置为“yes”

<MsiPackage SourceFile="Enclosing1_1.msi" Id="Enclosing" Permanent="yes" Vital="no" Visible="yes">