1

私は、MSIファイルと前提条件を管理するブートストラップアプリケーションで構成されるインストーラープロジェクトに取り組んでいます。また、いくつかの前提条件の必要性は、ユーザーがインストールすることを選択した機能に依存するため、ブートストラップアプリはUIも提供します。ユーザーが変更インストールを実行するときに、[プログラムの追加と削除](または[プログラムと機能])コントロールパネル(ARP)でMSIの代わりにブートストラップアプリケーションを実行できるようにしたい。インストーラーのUninstallRegistryキーの下にあるModifyPath値を、ブートストラップアプリケーションのパスに変更しようとしましたが、役に立ちませんでした。ARPの[変更]ボタンをクリックしても、MSIが表示されます。

私がやりたいことをする簡単な方法はありますか?それができない場合、MSIが[変更]ボタンを使用してARPから実行されたことを検出し、代わりにブートストラップアプリを実行するようにユーザーに通知するエラーメッセージを表示できるようにする方法はありますか?(つまり、ARPは、ユーザーがMSIを実行し、UIのメンテナンスページを表示せずに変更インストールを指定するために使用するのと同じコマンドライン引数を使用しますか?そうでない場合は、何を探す必要がありますか?)

Edit Myインストーラーは、1つのアプリケーションだけでなく、一連のアプリケーションをインストールします。各アプリケーションは、ユーザーがインストールしないことを選択できます。(これらのアプリケーションのほとんどは、特にインストールされているアプリケーションの1つに依存しているため、これらのアプリケーションをスイートとしてインストールしています。したがって、ユーザーは、個別のインストーラーではなく、1つのインストーラーですべてを処理する方が簡単です。この新しいインストーラーが置き換えられます。)

スイート内のすべてのアプリケーションが同じ前提条件のセットを必要とするわけではないため、ユーザーがスイート内のどのアプリケーションをインストールするかがわかるまで、MSIが前提条件を確認するのは簡単ではありません。さらに、ユーザーがインストールしたいアプリケーションのすべての前提条件のインストーラーを自動的に起動することで、ユーザーが簡単に起動できるようにします。(これが、インストーラーのUIがブートストラップアプリに実装された主な理由です。)

MSIがブートストラップアプリを起動し、ブートストラップアプリが続行している間すぐにサイレントに終了して、最終的にMSIを再起動することは可能ですか?(ブートストラップアプリがMSIを起動すると、MSIに渡されるコマンドライン引数の1つは、ブートストラップアプリがMSIを起動したことを通知するプロパティです。これは、特に、MSIがエラーを表示できるようにするために現在使用されています。コマンドラインでアンインストールまたは修復インストールが指定されていない限り、ブートストラップアプリを実行するようにユーザーに通知するメッセージ。)

4

3 に答える 3

1

プログラムの追加と削除はMSIのみを実行し、ブートストラッパーアプリの検索または実行はサポートされていません。

実行方法に関係なく、MSIに前提条件チェックを追加することができます(そして実行する必要があります)。そうすれば、現在達成できないことをユーザーが求めていることをユーザーに警告できます(まだ前提条件がない機能を追加します)。

前提条件が欠落している場合は、代わりにブートストラッパーの実行に関するメッセージを追加できます。

于 2009-03-26T19:46:21.637 に答える
0

MSI にブートストラップ アプリを起動させることで、ジレンマを解決することができました。私は単純に、ブートストラップ アプリを起動し、アプリが完了するまで待機しないカスタム アクションを作成しました。最初に、カスタム アクションを UI シーケンスに入れようとしましたが、そのようにエラーを生成せずにインストールを終了することはできませんでした。

私の目標は、インストールの変更に対してのみブートストラップを実行することだったので、メンテナンス ダイアログの [次へ] ボタン (ユーザーが [変更]、[修復]、[削除] のいずれかを選択する場所) にいくつかの新しいコントロール イベントを配置しました。ユーザーが Maintenance (MaintenanceMode ~= "Modify") を選択した場合、カスタム アクションが起動され、Exit を引数として EndDialog アクションを使用してダイアログが閉じられます。(次のダイアログに進む既存の制御イベントの条件を、ブートストラップを起動させるものの否定になるように変更しました。つまり、NOT (MaintenanceMode ~= "Modify")。) ブートストラップ アプリは次のようにプログラムされています。 GUI のメンテナンス ダイアログを飛ばして次のダイアログから始めますが、ユーザーが選択した場合はメンテナンス ダイアログに戻ることができます。(もしそうなら、

私は知っています、それは少し面倒ですが、それは私がする必要があることをします. :-)

于 2009-04-30T17:47:51.257 に答える
0

遅いことは承知していますが、Brad Heath はこのhttp://blogs.msdn.com/b/heaths/archive/2005/08/16/a-reason-for-arpsystemcomponent.aspxについてコメントしています。

于 2011-06-03T14:30:04.690 に答える