6

次のコンポーネントを使用するアプリケーションのP&D用の標準MSIインストーラーを作成しました。

  • WindowsサービスとしてホストされているWCFサービス。
  • そのサービスと通信するGUIアプリケーション。
  • シェル拡張DLL。

インストーラーは非常にうまく機能しており、問題はありません。この問題は、ユーザーがMSIインストーラーを使用して既存のアプリケーションにアプリケーションを再度インストールしようとすると発生します。現在、「修復」と「削除」の2つのオプションが表示された画面が表示されます。これらのオプションは両方とも機能せず、インストールされたアプリケーションを破損します。

この画面をスキップして、アプリケーションがすでにインストールされていることを示すメッセージボックスのようなものを表示したいのです。ユーザーに修理オプションを提供することは私にとって必須ではないので。そして、少なくとも、私は隠すことができるか、どういうわけか修理オプションを提供できないはずです。

私のための助けや提案はありますか?これまで、ORCA add NotRepairプロパティなどを使用して多くのことを試しましたが、どれも機能しませんでした。

4

6 に答える 6

5

これらの2つのプロパティについては、MSDNのWindowsインストーラガイドを参照してください。

于 2009-05-04T18:25:18.963 に答える
4

受け入れられた答えは、インストールの経験があまりない人のためにいくつかのことを残しています。

これを行うには、.NETインストールビルドによって作成された後、.MSIを編集する必要があります。これを行うためのMicrosoftがサポートする簡単な方法はOrcaです。Orcaは.NETFrameworkSDKからインストールできます。すでにSDKを使用していると思われるが、スタートメニューにOrcaが含まれていない場合は、マシンで「Orca.exe」または「Orca.msi」を検索してください。

Orcaをインストールしたら、実行するだけです。OrcaUIを使用してMSIファイルを開きます。左側に「テーブル」のリストが表示されます。テーブルプロパティを選択します。右側のペインで、右クリックして追加します。。という名前のノードを追加しますARPNOREPAIR。値を空の文字列に設定してください""ARPNOMODIFYまた、プログラムのウィンドウに変更オプションを表示したくない場合は、ノードを追加します。

于 2011-06-24T18:57:17.050 に答える
2

この問題はもう数年経っていますが、私のような人々はまだこの問題に取り組んでいると思います。Sumeetは、受け入れられたソリューションへのコメントで、ユーザーは「修復」と「削除」の両方のオプションが表示された状態でも画面にアクセスできると述べています。

実際、ユーザーがアプリケーションのインストーラーにアクセスできる3つの異なる方法があるようです。

1つ:すでに回答済みのARPNOMODIFYおよびARPNOREPAIRは、[プログラムの追加と削除]でのみ問題を修正します。これは、「Orca.exe」を使用して実行できます。

2:msiのインストーラーを右クリックします。残念ながら、これは、すべてのmsiファイルに対してコンピューター全体で調整を行わずに両方のオプションを回避する方法がないように思われる1つの場所です。

3:インストーラーをダブルクリックすると、既にインストールされている場合は、[修復]と[削除]のラジオボタンが表示された画面が表示されます。

http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-で、アクセスの3番目のポイントを解決するためのこの巧妙な適応を以下で見つけました。ヘルプ-49010162.html。修復オプションを許可するという選択をグラフィカルに削除します。これについてはPaulBrunに感謝します。

  1. Orca.exeでmsiファイルを開きます。
  2. テーブル「プロパティ」に移動します。
  3. キー「ARPNOMODIFY」に値を追加します1
  4. キー「ARPNOREPAIR」に値を追加します1
  5. プロパティ'MaintenanceForm_Action'の値をからに変更しRepairますRemove
  6. テーブル「コントロール」に移動します。
  7. Dialog_'MaintenanceForm'およびControl'BodyText'を使用してエントリを検索します。
  8. 'Text'プロパティを次のように変更します。 {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Dialog_'MaintenanceForm'およびControl'RepairRadioGroup'を使用してエントリを検索します。
  10. 'Control_Next'プロパティをからCancelButtonに変更しFinishButtonます。
  11. Dialog_'MaintenanceForm'およびControl'RepairRadioGroup'を使用してエントリを検索して削除します。

上記の手順の実行に関連するのは、手順を1回だけ実行することで得られる変換を使用してmsiを適応させるプロセスを自動化することです。これを行う方法の詳細については、こちらをご覧ください:Orcaを使用してコマンドラインからmsiを編集しますか?

于 2013-03-19T08:52:46.337 に答える
2

私はヘンリックに同意しますが、私の場合は最後のステップです

Dialog_'MaintenanceForm'およびControl'RepairRadioGroup'を使用してエントリを検索して削除します。

2814エラーを引き起こします。
したがって、私の提案は、RepairRadioGroupを非表示にすることです。これを行うには、属性を0に設定するだけです。

UPDATEコントロールSET属性=0WHEREコントロール='RepairRadioGroup'

于 2014-06-11T08:02:53.520 に答える
1

installshieldを使用してISMファイルを編集する場合、これは今日の時点ではるかに簡単です。Changeプログラムの追加と削除画面でandボタンを無効にするにはRepair、以下の設定をYesタブInstallation Designer>Installation InformationナビゲーションペインのGeneral Informationノード>ナビゲーションペインのノード>Add or Remove Programs詳細ペインのセクションに設定します。

  1. Disable Change Button
  2. Disable Repair Button

ここに画像の説明を入力してください

2番目の問題に対処するにはMaintenanceWelcome、installshieldの組み込みダイアログ画面を変更するだけです。

  1. ウェルカムメッセージラベルのテキストを、「この製品の別のバージョンがすでにインストールされています。インストールを続行できません」などのエラーメッセージに変更します。
  2. ボタンをクリックしたときの動作では、イベントNextを追加するだけです。EndDialog常に実行されるように実行条件をに設定し1ます。に設定しValueますExit
  3. プッシュボタンのテキストNextを「完了」に変更します。
  4. 必要に応じて、プッシュボタンを無効または非表示にしCancelます。

準備万端です!

于 2017-05-09T12:08:12.800 に答える
0

setup.exeとMSIをEXEファイルにまとめました。クリックするとファイルが抽出され、Setup.exeがトリガーされます。そのexeファイルに、アプリケーションがすでにマシンにインストールされているかどうかを確認するコードを追加しました。インストールされている場合は、ユーザーにプロンプ​​トを表示して終了します。このように、アプリケーションがすでにインストールされている場合、MSIが開始されることはないため、[修復と削除]画面が表示されることはありません。[追加/削除]画面の[変更]ボタンについては、「CheGueVerra」が提供するソリューションを使用しました。おかげさまで。

于 2009-11-25T06:58:45.540 に答える