1

VS 2003 を使用してインストールを構築しています。インストールには、Excel ワークブックと 2 つの Access データベースがあります。ユーザーのコンピューター上の既存のデータベースの作成/変更の日付に関係なく、Access ファイルを強制的に読み込む必要があります。現在、ORCA を使用して 2 つのファイルにバージョン番号を強制的に適用していますが、よりシンプルで洗練された解決策を見つけたいと考えています (.msi ファイルを手動で編集することは、「ベスト プラクティス」とは見なされません。

インストールで使用されるバージョン番号を Access を使用してデータベースに追加する方法はありますか?

これを行うためのより良い方法はありますか?

4

4 に答える 4

2

@LanceSc

ここでは MsiFileHash テーブルが役立つとは思いません。Aaron Stebner によるこの優れた投稿を参照してください。ほとんどの場合、クライアント コンピューター上の Access データベースの最終更新日は、その作成日とは異なります。Windows インストーラーは、ファイルがインストール後に変更されたと正しく想定し、ファイルを置き換えません。

これを解決する正しい方法 (質問の作成者が指摘したように) は、File テーブルに Version フィールドを設定することです。

残念ながら、Visual Studio でのセットアップ プロジェクトは非常に限られています。File テーブルのレコードを変更する単純な VBS スクリプトを (SQL を使用して) 作成できますが、代わりにWiX、InstallShield、Wise などの別のセットアップ オーサリング ツールを検討することをお勧めします。私の意見ではWiXが最高です。

于 2008-09-19T22:32:34.103 に答える
0

これらのファイルのMsiFileHashテーブルにデータを入力する必要があります。WiFilVer.vbsを見てください。これを行う方法については、MicrosoftPlatformSDKの一部です。

私の他の提案は、インストールを行うためにVisualStudio2003の代わりにWiXを検討することです。Visual Studio 2003のMSIサポートは非​​常に限られており、有用な作業を行うのではなく、多くの時間を費やして戦うことになります。

于 2008-09-19T20:46:22.907 に答える
0

プロジェクトのビルド イベントを調べます。ビルド イベント中にファイルのバージョンを変更できる場合があります。[それについて私を引用しないでください]。できるかどうかはわかりませんが、最初に調査を開始する場所です。

于 2008-09-19T17:03:21.227 に答える
0

適切にバージョン管理されたリソースがないように思われるので、REINSTALLMODE プロパティを変更してみましたか?

IIRC、「omus」のデフォルト値では、古いバージョンを使用している場合にのみインストールを許可するのは「o」フラグです。これを「o」から「e」に変更してみてください。これにより、欠落している古いファイルと同等のバージョンのファイルが上書きされることに注意してください。

手動でバージョンを追加するのは間違った開始方法でしたが、これにより、バージョン番号を手動で上げてインストールする必要がなくなります。

于 2008-09-19T16:59:58.910 に答える