.msi 内の Access ファイルにバージョン番号を追加する方法
-
01-07-2019 - |
質問
VS 2003 を使用してインストールをビルドしています。インストールには Excel ワークブックと 2 つの Access データベースが含まれます。ユーザーのコンピュータ上の既存のデータベースの作成日/変更日とは無関係に、Access ファイルを強制的に読み込む必要があります。現在、ORCA を使用して 2 つのファイルにバージョン番号を強制的に入力していますが、よりシンプルで洗練された解決策を見つけたいと考えています (.msi ファイルを手動で編集することは、私にとって「ベスト プラクティス」とは考えていません)。
Access を使用してデータベースにバージョン番号を追加し、インストールで使用する方法はありますか?
もっと良い方法はありますか?
解決
@LanceSc
MsiFileHash テーブルはここでは役に立たないと思います。これを参照してください 素晴らしい投稿 アーロン・ステブナー著。クライアント コンピューター上の Access データベースの最終変更日は、作成日とは異なる可能性があります。Windows インストーラは、ファイルがインストール後に変更されたものと正しく想定し、ファイルを置き換えません。
これを解決する正しい方法(質問作成者が指摘したように)は、ファイルテーブルにバージョンフィールドを設定することです。
残念ながら、Visual Studio でのセットアップ プロジェクトは非常に限られています。(SQL を使用して) ファイル テーブル内のレコードを変更する単純な VBS スクリプトを作成することもできますが、代わりに、次のような別のセットアップ オーサリング ツールを検討することをお勧めします。 WiX, 、InstallShieldまたはWise。私の意見ではWiXが最高です。
他のヒント
適切にバージョン管理されたリソースがないようなので、REINSTALLMODE プロパティを変更してみましたか?
IIRC、「omus」のデフォルト値では、古いバージョンを使用している場合にのみインストールを許可する「o」フラグです。これを「o」から「e」に変更してみてください。これにより、不足している古いファイルと、同じバージョンのファイルが上書きされることに注意してください。
バージョンを手動で追加するのは間違ったスタート方法でしたが、これにより、インストールするためにバージョン番号を手動で上げる必要がなくなります。
プロジェクトのビルド イベントを調べてください。ビルド イベント中にファイルのバージョンを更新できる場合があります。[それについて私の言葉を引用しないでください]。できるかどうかはわかりませんが、まずそこから調査を開始します。
を入力する必要があります Msiファイルハッシュ これらのファイルのテーブル。これを行う方法については、Microsoft プラットフォーム SDK の一部である WiFilVer.vbs を参照してください。
私の他の提案は、次のことを検討することです WiX インストールには Visual Studio 2003 の代わりに使用します。Visual Studio 2003 の MSI サポートは非常に限られているため、有益な作業が得られずに、MSI との戦いに多くの時間を費やすことになる可能性があります。