質問

現在、クライアントソフトウェアのインストーラーは4つあります:

  • ClientSetupTest
  • ClientSetupProduction
  • ClientUpdateTest
  • ClientUpdateProduction

これらの唯一の違いは、セットアップにはCrystal Reportsの再配布可能なファイルが含まれ、更新には含まれないことです。 Test and Productionは、実行する環境を指定するだけで、Client.exe.configファイルには1行しかありません。

わかりません。だからこそ、Crystal Reportsを削除した後、すべてを1つのインストーラーに置き換えました。新しいインストーラーは、選択された環境をsetup.configに書き出します。これは、file属性(こちら)を参照してください。

"ファイル"属性は、この新しいインストーラーの構成ファイルにとって新しいものです。私が実行している問題は、古いインストールでClient.exe.configファイルを変更してから新しいインストーラーを実行すると、構成ファイルが" file"で更新されないことです。属性。

ファイルを強制的に更新する方法はありますか? RemovePreviousVersionsは、何かを誤解していない限り、別のインストーラーであるため、正確に機能しません。おそらく動作する私の現在のアイデアは、OnBeforeInstallメソッドにコードを追加して、古いClient.exe.configの名前をバックアップファイルに変更し、常に新しいファイルを書き込むことです。ただし、インストーラー自体にはよりシンプルなソリューションがあるはずです。アイデアはありますか?

編集:base.OnBeforeInstall()を呼び出す前に古い構成ファイルの名前をClient.exe.config.oldに変更しても機能しませんでした。ファイルの名前を変更しましたが、新しいファイルは作成しませんでした。

役に立ちましたか?

解決

Windowsインストーラーは変更されたファイルを更新しません

  

バージョン管理されていないファイルはユーザーデータです—変更日が後の場合   コンピュータ上のファイルの作成日よりも、インストールしないでください   ユーザーのカスタマイズが削除されるため、ファイル。変更された場合   作成日が同じ場合、ファイルをインストールします。作成日   変更日より後、ファイルは変更されていないと見なされ、   ファイルをインストールします。

いくつかのオプションがあります:

  • ファイルを所定の場所に変更するカスタムアクションを含めます。これは、スクリプトまたは.NETコードである可能性があります。

  • あなたが言うように-既存のファイルを邪魔にならないように移動します。インストーラーは停止しません。しかし、あなたが想像している順序でそれが起こることを確認する必要があります。順序を把握するには、 Orca が必要になる場合があります。

  • 作成日を「今日」に設定するカスタムオプションを含めます。これは、を使用して、スクリプト化されたカスタムアクションで非常に簡単になります。 Scripting.FileSystemObject 。その後、Windowsインストーラーによって上書きされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top