MSIインストーラーから修復オプション画面を削除
-
03-07-2019 - |
質問
次のコンポーネントを使用するアプリケーションの P&D 用の標準 MSI インストーラーを作成しました。
- Windows サービスとしてホストされる WCF サービス。
- そのサービスと通信する GUI アプリケーション。
- シェル拡張 DLL。
インストーラーは非常にうまく動作しており、問題はありません。この問題は、ユーザーが MSI インストーラーを使用して既存のアプリケーションの上にアプリケーションを再度インストールしようとすると発生します。現在、「修復」と「削除」の2つのオプションがある画面が表示されます。これらのオプションは両方とも機能せず、インストールされているアプリケーションが破損します。
私が望むのは、この画面をスキップして、アプリケーションがすでにインストールされているというメッセージボックスのようなものを表示することです。ユーザーに修復オプションを提供することは必須ではないためです。そして、少なくとも、修復オプションを非表示にするか、何らかの方法で提供しないようにする必要があります。
何か助けや提案はありますか?それで、これまでのところ、ORCAを使用してNotRepairプロパティを追加するなど、多くのことを試してきました。しかし、どれもうまくいきませんでした。
解決
これら2つのプロパティについては、MSDNの Windowsインストーラガイドをご覧ください。
他のヒント
受け入れられた答えは、インストールの経験があまりない人のためにいくつかのことを残しています。
これを行うには、.NETインストールビルドによって作成された後に.MSIを編集する必要があります。 マイクロソフトがこれをサポートする簡単な方法は、 Orcaです。 。 Orcaは .NET Framework SDK からインストールできます。 。すでにSDKを使用しているが、スタートメニューにOrcaがない場合は、マシンで" Orca.exe"を検索してください。または" Orca.msi"。
Orcaをインストールしたら、実行するだけです。 Orca UIを使用してMSIファイルを開きます。左側には、「テーブル」のリストが表示されます。テーブル Property を選択します。右側のペインで、右クリックして追加します。 ARPNOREPAIR
という名前のノードを追加します。値を空の文字列""
に設定してください。プログラムのウィンドウに変更オプションを表示したくない場合は、 ARPNOMODIFY
のノードも追加します。
この問題は数年前に認識されていますが、私のような人々はまだこの問題にまだ乗り込んでいると思います。 Sumeetは、受け入れられたソリューションへのコメントの中で、ユーザーが両方のオプション「修復」で画面にアクセスできることを述べています。 "削除&quot ;、表示。
実際には、ユーザーがアプリケーションのインストーラーにアクセスできる3つの異なる方法があるようです。
1つ: 既に回答したように、ARPNOMODIFYおよびARPNOREPAIRは、プログラムの追加と削除のみで問題を修正し、" Orca.exe"で実行できます。
2つ: msiのインストーラーを右クリックします。残念ながら、これはすべてのmsiファイルに対してコンピューター全体で調整を行わずに両方のオプションを回避する方法がないように思われる1つの場所です。
3: インストーラーをダブルクリックすると、既にインストールされている場合は、ラジオボタン「修復」が付いた画面が表示されます。 "削除"。
アクセスの3番目のポイントを解決するための以下のこのきちんとした適応を見つけました。ここで、いくらか書き直しました: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project -properties-help-49010162.html 。修復オプションを許可する選択をグラフィカルに削除します。このことに感謝します。
- Orca.exeでmsiファイルを開きます。
- 「プロパティ」テーブルに移動します。
- キー「ARPNOMODIFY」を値
1
で追加します。 - キー「ARPNOREPAIR」を値
1
で追加します。 - プロパティ 'MaintenanceForm_Action'の値を
Repair
からRemove
に変更します。 - テーブル「Control」に移動します。
- Dialog_ 'MaintenanceForm'およびControl 'BodyText'でエントリを検索します。
- 「Text」プロパティを次のように変更します。
{\ VSI_MS_Sans_Serif13.0_0_0} [完了]を選択します; [ProductName]を削除するには
- Dialog_ 'MaintenanceForm'およびControl 'RepairRadioGroup'でエントリを検索します。
- 「Control_Next」プロパティを
CancelButton
からFinishButton
に変更します。 - Dialog_ 'MaintenanceForm'およびControl 'RepairRadioGroup'でエントリを見つけて削除します。
上記の手順の実行に関連するのは、1回だけ手順を実行して得られた変換でmsiを適応させるプロセスを自動化することです。これを行う方法の詳細については、次を参照してください: Orcaを使用して編集するコマンドラインからのmsi?
Henrikに同意しますが、私の場合は最後のステップ
Dialog_ 'MaintenanceForm'およびControl 'RepairRadioGroup'でエントリを見つけて削除します。
原因2814エラー。
だから私の提案は:RepairRadioGroupを非表示にします。設定するには、属性から0
UPDATEコントロールSET属性= 0 WHEREコントロール= 'RepairRadioGroup'
これは、installshieldを使用してISMファイルを編集する場合、今日の時点ではるかに簡単です。 [プログラムの追加と削除]画面の[変更
および修復
]ボタンを無効にするには、 Installation Designer
で以下の設定を Yes
に設定しますタブ>ナビゲーションペインのインストール情報
ノード>ナビゲーションウィンドウの[一般情報
]ノード>詳細ペインのプログラムの追加と削除
セクション
-
変更ボタンを無効にする
-
修復ボタンを無効にする
2番目の問題に対処するには、installshieldの組み込みの MaintenanceWelcome
ダイアログ画面を変更するだけです。
- ウェルカムメッセージラベルのテキストをエラーメッセージに変更します。 "この製品の別のバージョンはすでにインストールされています。インストールを続行できません。"
-
Next
ボタンをクリックしたときの動作に、EndDialog
イベントを追加します。常に実行されるように、実行条件を1
に設定します。Value
をExit
に設定します
-
Next
プッシュボタンのテキストを" Finish"に変更します。 - 必要に応じて、
Cancel
プッシュボタンを無効または非表示にします。
準備完了です!
setup.exe と MSI を EXE ファイル内にまとめました。クリックするとファイルが抽出され、Setup.exe が起動されます。その exe に、アプリケーションが既にマシンにインストールされているかどうかを確認するコードを追加しました。インストールされている場合は、ユーザーにプロンプトを表示して終了します。この方法では、アプリケーションがすでにインストールされている場合は MSI が起動されないため、「修復と削除」画面が表示されることはありません。追加と削除画面の変更ボタンについては、「CheGueVerra」が提供するソリューションを使用しました。おかげさまで。