現在、クライアントソフトウェアには4つのインストーラーがあります。
- ClientSetupTest
- ClientSetupProduction
- ClientUpdateTest
- ClientUpdateProduction
それらの唯一の違いは、セットアップにはCrystal Reportsの再配布可能なファイルが含まれ、アップデートには含まれないことです。Test and Productionは、それらが実行される環境を指定するだけであり、唯一の違いはClient.exe.configファイルに1行あります。
ばかげている、私は知っている、それが私がCrystalReportsを取り除いた後にそれらすべてを1つのインストーラーに置き換えた理由です。新しいインストーラーは、選択した環境をsetup.configに書き込みます。これは、file属性によって参照されます(ここを参照)。
「file」属性は、この新しいインストーラーを使用した構成ファイルの新機能です。私が遭遇している問題は、古いインストールでClient.exe.configファイルを変更してから新しいインストーラーを実行すると、構成ファイルが「file」属性で更新されないことです。
ファイルを強制的に更新する方法はありますか?RemovePreviousVersionsは、私が何かを誤解していない限り、別のインストーラーであるため、正確には機能しません。おそらく機能する私の現在のアイデアは、OnBeforeInstallメソッドにコードを追加して、古いClient.exe.configの名前をバックアップファイルに変更することです。これにより、常に新しいファイルが書き込まれます。ただし、インストーラー自体にはもっと簡単な解決策があるはずです。何か案は?
編集:base.OnBeforeInstall()を呼び出す前に、古い構成ファイルの名前をClient.exe.config.oldに変更しても機能しませんでした。ファイルの名前を変更しましたが、新しいファイルを作成することはありませんでした。