2017-04-20 10 views
0

基本MSIタイプのInstallShieldプロジェクトで作業しています。最後のSetupCompleteダイアログにReadmeチェックボックスがあります。私は、チェックボックスと関連するラベルのためにREMOVE<>"ALL"という条件をShowの条件に追加しようとしました。アンインストール中にReadmeチェックボックスが表示されないようには機能していません。 REMOVEプロパティにバインドされたテキストボックスを同じダイアログに追加しました。アンインストール後は空です。MSIアンインストール後にSetupComplete中にREMOVEプロパティが設定されない

  1. アンインストール後も、SetupComplete中にREMOVEプロパティが空であるのはなぜですか?
  2. アンインストール後にReadmeボックスが表示されないようにするにはどうすればよいですか?

答えて

0

アンインストール後も、SetupComplete中にREMOVEプロパティが空であるのはなぜですか?

REMOVE=ALLは、installvalidateシーケンスの前に利用できません。それ以上のことはここにあります:Conditioning Actions to Run During Removal

アンインストール後に表示されないようにするにはどうすればよいですか?

あなたのアプローチは正しいです。チェックボックスと対応するテキストShowの条件をNOT Installed(初回インストール)に設定します。さまざまな種類の条件の詳細を参照してくださいCommon MSI Conditions Cheat Sheet

+0

私はこの問題がInstallValidateの前に起こっているとは思わない。私はそれがInstallFinalizeの後で起こっていると思う(全体のexecシーケンスの後)。 Exec Sequenceの実行後にREMOVEが設定されないのはなぜですか?また、アンインストール後、この時点でInstalledプロパティが設定されていることを確認しました。ただし、アップグレード後にreadmeファイルを表示したい場合もあります。その場合、Installedプロパティを使用しても機能しません。 – BlueMonkMN

+0

UIシーケンスは、実行シーケンス中のInstallValidate(1400シーケンス番号)の前に発生します。例えば、SetupProgressダイアログは1240です(REMOVEは使用できません)。さて、SetupCompleteSuccess(-1)は、実行シーケンス(InstallFinalize)の後に何か起こります。ここでは、ほとんどの変数がガベージコレクトされ、利用できません。 –

0

http://www.itninja.com/question/remove-the-setupcompletesuccess-dialogから、SetupCompleteSuccessダイアログが他のシーケンスで使用可能な変数を多く受け取らない独自の順序であることがわかりました。 ( - > ExecuteActionメソッドLaunchConditions) - >即時 "がInstallExecuteSequence"(

InstallUISequence:そのページから、誰かがコメント:

は私が標準インストール 中にMSIの実行順序を信じているが、このようになりますLauchConditions - > InstallFinalizeの) - > 繰延 "がInstallExecuteSequence"(InstallInitialize - > InstallFinalizeの) - >即時 "のInstallExecuteSequence" (InstallFinalizeの - >エンド) - > InstallUISequence(ExecuteActionメソッド - >終了)

"InstallExecuteSequence"の間に設定されたプロパティは、 "InstallUISequence"の最後の(ExecuteAction後の)部分では利用できないようです( )。

このページでは、_IsMaintenanceプロパティを使用すると、その段階では使用できないREMOVEプロパティの代わりに機能することも示唆されています。だから私は使用している_IsMaintenance <> "Remove"

関連する問題