web-dev-qa-db-ja.com

InstallShield LE(Visual Studio 2012を使用)が依存関係の検出に完全に失敗する

InstallShield LE(VS 2012に同梱されているもの)で動作する簡単なインストーラーを取得しようとする悪夢があります。あらゆる種類の問題を回避できます(すべてを台無しにすることなく「Rebuild All」を実行できなくなったという事実-開発中にInstallShieldプロジェクトをアンロードする必要があります)。しかし、大事なことは、インストーラーをビルドすると、さまざまなDLLの間違ったバージョン(私のプロジェクトの一部であるものと、Entity Framework DLLのようなサードパーティのDLLの両方を含む)が含まれることです。

「クリーンソリューション」を実行しても、私のソリューションに含まれるDLLの問題は修正されませんでした。それは私のマシンのどこかで(ある種のコンパイラのtempディレクトリで)ランダムなバージョンを見つけ、それを含めることを主張していました。最終的には、Windowsエクスプローラーで検索を行い、見つかったすべてのファイルを削除することで修正しましたが、次回リリースするときに、間違ったファイルを選択してしまうのではないかと心配しています。

さらに、.NET 4と.NET 4.5の両方のバージョンのEntity Frameworkをマシンにインストールする必要がありますが、インストーラーに入るのに間違ったバージョンを選択しています。含めたくないものは削除できません。

まったく見掛け倒しな製品です。 I couldこれらの問題のいずれかが修正されるかどうかを確認するためにフルバージョンに "アップグレード"しますが、LEバージョンでの最近の経験により、製品を使用することができなくなりました。

他の誰かが同様の問題を抱えていますか?解決策を見つけましたか?

37
Gary McGill

古い投稿ですので、おそらくこれはあなたや他の人がこの腹立たしい問題を経験するのを助けることができます(あなたがエラーを経験していると仮定して -6225 )。

症状:

  • install Shieldプロジェクトを含め、各プロジェクトを支障なく(再)ビルドできます。
  • ただし、Solution(複数のプロジェクトの)エラーをビルドすると、エラーがポップアップするようです

試してください:

  • vS 2012では、ソリューションを右クリックしてProject Build Orderを選択します
  • 順序が正しく「見える」場合でも、依存関係の設定を続けます
    • 例えばインストールプロジェクトはソースプロジェクトに依存します(当然ですが、このツールは「知らない」ため、多少の助けが必要です)。

これが「間違ったdll」の問題を解決するかどうかはわかりませんが(その痛みを経験していません...)、プロジェクトの出力を確認する提案が役立つ場合があります....上記は私の問題を修正しました。

はい、同意しますVS2010以下セットアップと展開プロジェクトの使いやすさ、それからそれらの1つ-開発者が対処しなければならない別の学習曲線(時間の無駄)。 見掛け倒しと呼ぶ準備はできていませんが、Nice(r)キャンディがいくつかあります-「限定」バージョンでも…。

とにかくこれが役立つことを望みます...

アップデート1

はい、私は公式にISLEの見掛け倒しを正式に呼び出すことができます。私は今、「dllが見つからない」(間違ったdllを忘れて、それらがintallフォルダにない、カラフルな言語ではなくWTF ?? !!)の問題を経験しています。 ISLEは適切な依存関係を識別できません。また、前の答えに同意しません。この問題DID NOTはVS 2005以来の組み込みSetup and Deployment Projectに存在します。

ボーンヘッドMSの移動に関するコメントに同意しました。

この問題を修正したら、更新します。

更新2

私の修正(より良い方法があれば、答えを提供してください)..これらはすべてISLE UIで行われます:

  1. 依存関係のスキャン-プロジェクトを右クリックしてプライマリ出力を選択し、Dependencies from scan at buildを選択します step 1 scan to see missing dependencies

  2. 必要な依存関係が表示されます手動で追加、赤いアイコンで示されます step 2 identify missing dependencies
    チェックを外したので、-6248 warningを取り除くことができました。これは、IMHOであるため本当に奇妙ですビルドで致命的なエラーになるはず依存関係が欠落している場合、このインストール/セットアップはおそらく機能しますか? warningはビルドを続行しますが、それでもnever work

  3. 次に(はい)手動上記で特定した依存関係を追加します...

ところで、これが重要かどうかはわかりません。ISLE(ISLE menu-> Visual Studio Deployment Project Import Wizard)を使用してimporting VS 2010インストールプロジェクトでプロセス全体を開始しました。これが実際に重要かどうかはわかりません-再:(インポートの代わりに)最初から始めた場合でも、Dependencies from scan at buildができるでしょうか?

VS2012のセットアップと展開の「進行状況」はこれで終わりです...

お役に立てれば!

18
EdSF

私は最近、あなたが説明する問題を経験しました:binディレクトリ内の依存関係の最新バージョンでコンソールアプリケーションが正しくビルドされますが、InstallShield LEでパッケージ化された場合、依存関係DLLの古いバージョンを使用します。

あなたが言うように:

「クリーンソリューション」を実行しても、私のソリューションに含まれるDLLの問題は修正されませんでした。それは私のマシンのどこかで(ある種のコンパイラのtempディレクトリで)ランダムなバージョンを見つけ、それを含めることを主張していました。

私の場合、問題のファイルは ASP.NET動的コンパイルキャッシュ at C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\rootおよびC:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root

これらのディレクトリの内容をクリアすると、問題は解決しました。

余談ですが、これらのディレクトリを自動的に空にするビルドアクションを追加することを考えましたが、所有権の権限を落とさずにこれを自動的に行うことはできませんでした。

3
James Holwell

各セットアップツールには問題があります。アプリケーションの依存関係を正確に検出できるツールはないことに注意してください。ツールでできることは、提案することです。これが、ほとんどのセットアップ開発者が依存関係を自分で決定し、それらをインストーラーに手動で含める理由です。

InstallShieldに満足できない場合は、別のセットアップツールを試すことができます。 http://en.wikipedia.org/wiki/List_of_installation_software

Advanced Installerの無料版には Visual Studioセットアッププロジェクト が含まれています。

2
Cosmin Pirvu

DLLに問題がありました。どこかからずっと古いものをつかんでいました。このDLLのGACには何もありませんでした。私はすべてを試しました。最後に、右クリックして[追加]を選択し、[ファイル]セクションに手動で(ISLE)を追加しました。\obj\ReleaseフォルダーにDLLが見つかりました。その後、リリース(SingleImage)を再度ビルドしたところ、すべてが正常に機能しました。

0
DMadden51

インストールシールドを使用する代わりに、プロジェクトを右クリックするだけでプロジェクトを公開でき、公開ウィザードは単一イメージまたは任意の選択としてexeファイルを作成し、最後にすべての依存関係を処理します。したがって、Publish Wizard .netフレームワークなどのすべての依存関係を自動的にインストールし、アプリケーションでランタイムフレームワークが必要な場合は、インストールするように警告します。

あなたはこれを見ることができます

http://msdn.Microsoft.com/en-IN/library/31kztyey.aspx

0
PyGeek

ソリューションを右クリックして->プロジェクトの依存関係->セットアッププロジェクトを選択し、使用するプロジェクトを確認することにより、ビルド順序の問題を修正できます(ソリューションを再構築しようとする場合など)。 (VS2013でテスト済み)

ソースファイルを選択すると、InstallShieldプロジェクトがこれらの依存関係を自動的に設定すると予想していましたが、明らかにそうではありません。

0
personne3000