2010-12-10 15 views
2

クライアントのコンピュータにインストールする必要があるサードパーティの.DLLへの更新があります。現在、Visual Studio 2010で作成されたMSIによる自動インストールを採用していますVisual Studioセットアッププロジェクト - 強制的に.DLLをインストールしますか?

残念ながら、第三者の.DLLのバージョンが正しくありません。また、プロバイダによってファイルバージョンが増えませんでした。サードパーティプロバイダはマイクロソフトですので、問題を解決するのを待っているのは現実的ではありません。新しい.DLLを現在のMSIアップデート内で入手する必要があります。現在のところ、MSIアップデートは.DLLをオーバーライドしていません

VS2010セットアッププロジェクト内でファイルバージョンが一致しても.DLLを強制的に上書きする方法はありますか?

答えて

1

msiポストビルドを調整したい場合は、ファイルテーブルをクリックして「バージョンが嘘」とすることができます。別の考えは、あなたのインストールにそのDLLを入れないことです。ブートストラップに入れるか、独自のインストーラを作成し、バージョンルールにはOMUSの代わりにAMUSを使用できるMicrosoftからインストーラを探します(存在する場合)。

+0

パッケージに.DLLを含めることはできません。 MSMは動作しません。とにかくスイッチのインストールパラメータを変更することはできません。自動更新コードは既にフィールドで実行されています。実行時には、基本的にサイレントアップグレードを実行するコマンドラインで実行されます。あなたは "バージョンの嘘"を詳しく説明できますか? – Igorek

+0

Version Lyingは、MSIが実際に持っている新しいバージョンを持っていると考えるように、File Tableを更新する場所です。いくつかの小さな問題がありますが、基本的には、単一のコンポーネントに対して常に上書きされます。本当の解決策は、あなたのリソースで適切なSCMの慣習に従うことです(はい、それはMicrosoftがここで話しているのは残念です)。 –

+0

さらに詳しく説明しますが、プログラムでバージョンを切り替える方法にどのようにアプローチするのかよく分かりません。 Googleは大したことではなかった。あなたはこれについてどうやって行くのかについてのいくつかの指示とのリンクを提供できますか?おかげで – Igorek

0

ファイルをインストーラに「ファイル」として追加して他のファイルと一緒にインストールすることはできませんか?それをプロジェクトの出力、または缶詰のインストールアクションとして設定しないでください。ファイル部分に移動し、 "Application Files"フォルダを右クリックして、> add fileと言う。必要なファイルに移動して選択します。

+0

いいえMSIには、ファイルバージョン(AssemblyFileVersion)として見えるファイルコスト管理と呼ばれるプロセスがAssemblyVersion属性ではありません。 DLLの古いバージョンと新しいバージョンが同じバージョン番号を持つ場合、MSIは異なるバージョン番号を上書きしません。 –

+0

ファイルをコピーするように明示的に指示しても、カスタムインストーラクラスを作成して、MSIが作成した一時フォルダからdllをコピーし、コピーしたら削除することができます。これは今でも嫌な気持ちになっています..... –

+0

ファイルを通常のファイルとしてパッケージに入れて、出力から除外しようとしました。それは古いバージョンでは展開されませんでした。 – Igorek

関連する問題