2017-02-05 2 views
0

InstallShield 2015 Basic MSIでセットアップを作成しました。
このセットアップでは、クライアントまたはサーバーをインストールするかどうかをユーザーが選択できるとします。 の各セットアップの種類(クライアントまたはサーバー)には、インストールすることができるいくつかの機能があります。
クライアントセットアップのインストールを選択し、その下に2つの機能を追加しました。 UIで設定をもう一度実行すると、メンテナンスモードに入り、クライアントにさらに機能を追加できます。InstallShieldコマンドラインから同じMSIを2回インストールすることをブロックします

私の問題は、同じセットアップをコマンドライン(msiexec/I)から再度実行して、サーバーセットアップタイプをインストールしようとしましたが、現在のセットアップではブロックされないため、クライアントセットアップが破損する可能性がありますすでにインストールされています。

現在のセットアップがインストールされているかどうかを確認し、コマンドラインから実行しようとしているアクションを確認し、アンインストールしない場合は(まだコマンドラインからアンインストールを実行する必要がある) )。

この論理は正しいですか?コマンドラインからコマンドを実行するユーザーは何ですか?彼はmsiexec/Iを実行し、コマンドラインからアンインストールを試みないことを意味します。

同じMSIをコマンドラインから2回インストールするのを防ぐためにInstallShield \ MSIが\プロパティでビルドされているのだろうか?

+0

サーバーとクライアントの機能をUIとコマンドラインの両方から排他的にしたいとしますか? –

+0

正しい、ユーザーはUIからクライアントまたはサーバーをインストールできますが、コマンドラインからはインストールできないようにできますが、コマンドラインから実行しているアクションを確認する方法がわかりません。そうではありません。 – Epligam

+0

ユーザーが2つの競合する機能をインストールすることを要求しているか、またはインストールされている別の機能と競合する1つの機能をインストールするよう要求している場合に、インストールをブロックするタイプ19のエラーカスタムアクションを記述します。条件式に機能要求とインストールされた状態演算子を使用し、CostFinalizeの後にスケジュールします。 –

答えて

0

私はあなたを理解するのに苦労しています。私の答えがあなたのニーズに合っていることを願っています。

MSIを初めて実行すると、インストールモードになります。もう一度実行すると、メンテナンスモードになります。インストーラをどのように作成したかによって、修復、変更、または削除ボタンを含むダイアログが表示されます。変更ボタンを使用して、ユーザーが追加機能を追加したり、機能を削除したりすることができます。これは、ADDLOCALおよびREMOVEプロパティを使用してコマンドラインからも実行できます。プロパティには、フィーチャー名の区切りリストがあります。

人が間違っているのは、インストールされていない状態| REMOVE = "ALL"をカスタムアクションに追加します。これは、複数の機能を持ち、メンテナンスモード中に戻ってアプリケーションを再構成する可能性があるという事実を考慮に入れません。 MSIには、このジョブに適した条件で使用できる機能とコンポーネントのインストールとアクション状態の評価があります。

更新:

私は、ユーザーがインストールするために、2つの相反する機能を要求しているか、ユーザーが他の機能と競合することをインストールするために一つの特徴を要求している場合、ブロックのインストールというタイプ19エラー、カスタムアクションを記述しますインストールされています。条件式に機能要求とインストールされた状態演算子を使用し、CostFinalizeの後にスケジュールします。

+0

私は自分の質問を更新しました。 – Epligam

関連する問題