ユーザーが「キャンセル」をクリックしたときにInstallAwareにデータベースのロールバックをさせる方法を知っている人はいますか? InstallShield とは異なり、個々のスクリプトをいつ実行するかを指定する方法はありません。
1 に答える
InstallAwareがデータベーストランザクションをロールバックできるとは思いません。MSSQLServerコマンドでSQLServerロールバックの本質的なサポートは見られませんでした。可能であれば、独自のロールバックスクリプトをコーディングする必要があります。
通常、ユーザーが最初のダイアログでインストールをキャンセルした場合、MSICodeにはIFブロックを持つセクションがあります。こんな感じ
if variable WIZARD Equals CANCEL
Terminate Installation
end
これは、Windowsインストーラエンジンが実際にインストールを実行する前に発生します。データベーススクリプトを実行していない場合は、アクションは不要です。この時点より前にデータベーススクリプトを適用したことがある場合は、ロールバックスクリプトを提供し(可能な場合)、そのブロックで実行する必要がありますが、インストールを終了する前に実行してください。
インストール中にインストールをキャンセルすると、変更をロールバックする別のショットが表示されます。インストールプロセスの実行中(つまり、ユーザーが選択を行った後)にユーザーがキャンセルボタンを押すと、InstallAware変数SUCCESSがCANCELに設定されます。その状態を確認して、ロールバックスクリプトを実行できます。通常、SUCCESSの値に基づいてさまざまなことを行うコードのブロックがあり、そこにコードを追加できます。
SQLスクリプトは、インストールの一部としてInstallAwareによって実行される最後のコマンドにすることができます。これにより、キャンセルを処理する必要がなくなります。