0

ユーザーが「キャンセル」をクリックしたときにInstallAwareにデータベースのロールバックをさせる方法を知っている人はいますか? InstallShield とは異なり、個々のスクリプトをいつ実行するかを指定する方法はありません。

4

1 に答える 1

1

InstallAwareがデータベーストランザクションをロールバックできるとは思いません。MSSQLServerコマンドでSQLServerロールバックの本質的なサポートは見られませんでした。可能であれば、独自のロールバックスクリプトをコーディングする必要があります。

通常、ユーザーが最初のダイアログでインストールをキャンセルした場合、MSICodeにはIFブロックを持つセクションがあります。こんな感じ

if variable WIZARD Equals CANCEL
    Terminate Installation
end

これは、Windowsインストーラエンジンが実際にインストールを実行する前に発生します。データベーススクリプトを実行していない場合は、アクションは不要です。この時点より前にデータベーススクリプトを適用したことがある場合は、ロールバックスクリプトを提供し(可能な場合)、そのブロックで実行する必要がありますが、インストールを終了する前に実行してください。

インストール中にインストールをキャンセルすると、変更をロールバックする別のショットが表示されます。インストールプロセスの実行中(つまり、ユーザーが選択を行った後)にユーザーがキャンセルボタンを押すと、InstallAware変数SUCCESSがCANCELに設定されます。その状態を確認して、ロールバックスクリプトを実行できます。通常、SUCCESSの値に基づいてさまざまなことを行うコードのブロックがあり、そこにコードを追加できます。

SQLスクリプトは、インストールの一部としてInstallAwareによって実行される最後のコマンドにすることができます。これにより、キャンセルを処理する必要がなくなります。

于 2010-05-17T18:36:47.857 に答える