2016-05-16 8 views
0

プログラムのインストールのキャンセルを確認すると、Inno Setupは一般的なカスタムコントロール(ラベル、ラジオボタンなど)を終了または非表示にします。 WizardFormの存在時にそれらを見えるようにすることは可能ですか?Inno Setup:インストールがロールバックしている間にコントロールが消える(インストーラがフリーズする)

2016-05-16 13:50:01.225 Message box (Yes/No): Are you sure you want to close the installer? You won't be able to recover the data. 
2016-05-16 13:50:02.322 User chose Yes. 
2016-05-16 13:50:02.404 User canceled the installation process. 
2016-05-16 13:50:02.404 Rolling back changes. 
2016-05-16 13:50:02.408 Starting the uninstallation process. 
2016-05-16 13:50:02.408 Uninstallation process succeeded. 
2016-05-16 13:50:03.916 Deinitializing Setup. 
2016-05-16 13:50:11.176 Failed to remove temporary directory: C:\Users\AATASH~1\AppData\Local\Temp\is-N7DAL.tmp 
+0

「OnCancelButtonClick」を意味すると思います。 –

+0

また、私はコントロールが隠されていないと仮定します。インストーラはWindowsメッセージの処理を停止する(=応答を停止する)ため、描画に失敗する可能性があります。どうして?ロールバックしていますか? 2番目のスクリーンショットは実際に何を示していますか?そこには何が起こっているのですか? –

+0

@MartinPrikrylはい、OnCancelButtonClick。 何が起こるのですか: instansceが実行されているときに(テスト目的で)プログラムを再インストールしようとしています。そして、ウィンドウを閉じるボタンをクリックしてインストールを中断しようとすると、ほとんどのラベル、チェックボックス、ラジオボタンが消え、数秒後にウィンドウが閉じます。 コントロールが消えるとウィンドウが混乱して見える –

答えて

0

Inno Setupの中に "ロールバック" の実装は次のとおりです。

ここenter image description here enter image description here

が言うファイルを記録するものである:

私はVCL革新タイラーは、ウィンドウとコントロールのスタイルをカスタマイズするために使用します完璧とはほど遠い。

Innoセットアップは、アンインストール中にウィンドウメッセージキューを処理しません。さらに、1500ミリ秒間明示的にフリーズしても、"というように、ユーザーは「変更をロールバックする」メッセージ「」を読む必要があります。

メッセージキューはポンピングされないため、Windowsでは「描画」要求を処理しないため、一部のコントロール(特に高度なもの)が消えるだけです。 Inno Setupでキューを処理させることはできないので、実際には何もできません。

いくつかの部分的な解決策:

  • はあなたの高度なコントロールを自分で隠すとWizardForm.StatusLabel「ロールバックの変更を...」が表示さメッセージ)を再表示します。メッセージキューがポンピングされない場合、「ラベル」は消えない傾向があります。
  • WizardForm.Hideを使用してインストーラがキャンセルされたときに、ウィンドウ全体を非表示にします。
+0

ありがとう。 私はこれらの解決策を考えました。 –

関連する問題