0

私のInnoSetupでは、InstallRunセクションでいくつかのファイルアクションを使用しています。それらが問題なく正しく実行された場合は、特定の一時フォルダーが削除されているはずです。

何かがうまくいかなかった場合、一時フォルダはまだそこにあります。その場合、選択したエラーメッセージを表示するメッセージボックスでセットアップをキャンセルしたいと思います。

私は(まだ)Pascalスクリプトの経験がないので、これを行うためのサンプルスクリプトを提供してください。

前もって感謝します!

追加:これが必要な理由を説明します。シナリオは、Windowsサービスアプリケーションである既存のバージョンを更新することです。これらのファイルを更新する前に、まずサービスをアンインストールする必要があります。このために、インストールパッケージに含まれている独自のコマンドラインを使用します。その他の新しいファイルは、一時フォルダー(アプリフォルダーのサブフォルダー)に一時的に解凍されます。Windowsサービスがアンインストールされた後、新しいファイルは一時フォルダーからアプリフォルダーに移動されます。ここで問題が発生した場合は、セットアップをキャンセルして、ユーザーにエラーメッセージを表示したいと思います。一時フォルダがまだそこにあるかどうかを確認することで、問題が発生したかどうかを最もよく知ることができます。

4

1 に答える 1

2

セクションを意味すると仮定すると[Run]、プロセスの後半でインストールをキャンセルすることはできません。

代わりに、の使用を検討する必要がありますPrepareToInstall。ここで必要なのは、API を介して直接、または選択した古いサービス EXE でコマンドを呼び出すことによって、古いサービスを停止して登録解除することだけです。(新規インストールの場合、サービスがまだ存在しない場合の処理​​を忘れないでください。)

これ[Files]により、通常どおりファイルが置き換えられ、[Run]コードを使用して (実行したい時間に応じてAfterInstallまたはを介し​​て)、サービスを再登録して開始することができます。CurStepChanged(ssPostInstall)

一時フォルダーをいじる必要はありません。これは良いことです。これは、アンインストールでも問題が発生する可能性があるためです。

于 2012-10-05T22:26:03.797 に答える