2

アプリケーションを作成し、WiX を使用してパッケージ化しました。ただし、このアプリケーションには、SQL CE 3.5 などの前提条件が必要です。次に、Burn を使用してブーストラップを作成しました。ユーザーのコンピュータに 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()
  }
}
4

1 に答える 1

3

パッケージの永続を「はい」に設定します

<MsiPackage SourceFile="Enclosing1_1.msi" Id="Enclosing" Permanent="yes" Vital="no" Visible="yes">
于 2013-08-13T12:32:34.247 に答える