2012-04-04 4 views
1

Inno Setupでアプリケーションインストーラを作成し、アプリケーション用に複数のバイナリとサポートファイルを展開しています。Inno Setupで再起動するまでファイルの置換をすべて延期します

アップグレードインストールを実行すると(たとえば、バージョン1.0がインストールされているときにsetup-1.5.exeを実行すると)、以前のバージョンのファイルの一部が頻繁に使用され、次回の再起動時に交換することはできません。それはいいです、イノはその事件を正しく処理します。

しかし、私が本当に欲しいのは、次の再起動までにファイルを置き換えることができない場合は、すべてファイルを次回の再起動時に置き換えることです。そうしないと、使用中のバイナリは置き換えられませんが、一部のサポートファイルが存在する可能性があります。アプリケーションを再起動する前に不安定な状態にしておきます。

これを達成する明確な方法はありますか?私は明らかにすべてのサポートファイルを自分自身で明示的にロックするのではなく、非常に醜いものを見つけることができませんでした。

ありがとうございます!

答えて

1

Innoはこれをネイティブに行うことはできません。これがAppMutexと友人たちにすべてのことを確実にするためのものです。何か残っていると、再起動する必要があることをユーザーに伝えます。

あなたのアプリでこれを展開して、リスタートリプレースメントアクションが保留中の場合は開始を拒否することができます。

+0

ディアナありがとうございますが、これは本当に私の要件を満たしていません。 AppMutexは、アプリケーションの実行中にInnoがインストール/アンインストールを拒否できるように使用されていますが、本当に必要なのは、アプリケーションが「トランザクション的に」インストール/アンインストールすることです。私が見る限り、AppMutexを使ってその動作を一緒にハックする方法はありません。 – DSII

+0

私が思うことができるのは、アプリケーションのインストールに含まれるすべてのファイルを明示的にロックして、リブート時にすべてが置き換えられるようにすることだけです。これはちょっと迷惑なことであり、今後は規模が拡大せず、レジストリデータにも同様の機能は提供されません。自分の目標を達成する別の方法はありますか?ありがとう! – DSII

+0

ミューテックスを使用する場合、ミューテックスを使用する場合は、ミューテックスをロックした状態でこれらのファイルを自由に更新できることを保証する必要があります。 (より良い言葉の欠如のための相互排除:)。 – Deanna

関連する問題