質問

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 との戦いに多くの時間を費やすことになる可能性があります。

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