問題タブ [merge-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1096 参照

wix - Wix マージ モジュールのアップグレード コード

私は Wix にまったく慣れていないので、この質問は意味をなさないかもしれませんが、マージ モジュールのアップグレード コードがないのはなぜですか? 私は現在、通常の MSI を作成した小さなアプリケーションを持っています。ここで、このアプリケーションのマージ モジュールも作成して、他のアプリケーションと一緒にインストールできるようにしたいと思います (一連の関連アプリケーションの一部としてクライアントに出荷されます)。アプリケーションが既にインストールされているかどうかをマージ モジュールで検出し、必要に応じてアップグレードしたいのですが、マージ モジュールのアップグレード コードがありません。これを達成する方法はありますか?

私が望むのは、次のような動作です。Word、Excel などをすべて個別の MSI でインストールできるとしますが、Word、Excel 用の MSM を含む Microsoft Office 全体をインストールすることもできます...もちろん最初に MSI から Excel をインストールしてから MSI for Office を実行すると、MSM for Excel は既にインストールされていることを検出し、必要に応じてアップグレードするか、最新の場合は何もしません。

ご協力ありがとうございます

0 投票する
2 に答える
2042 参照

wix - Wix:ダイアログ制御値を構成可能なマージモジュールに渡す

Wixツールセットでタスクを実行するのに問題があります。特に、MSM(構成可能モジュール)を構成するMSIがあるシナリオがあります。MSIには、MSMを構成するためにユーザー入力を使用するカスタムUIダイアログがあります。

以下に示すように、アドレスプロパティにハードコードされた値を使用してMSMを構成しようとすると、正常に機能し、MSMは正しく構成されます。(この構成は実行時ではなくビルド時に発生すると思います。問題はそこにある可能性があります。)

この問題は、カスタムダイアログを使用してインストール時(つまり実行時)にアドレスプロパティの値を設定すると発生します。構成可能なモジュールは、ユーザー入力ではなく、ハードコードされた値を引き続き使用します。マージモジュールの構成はビルド時にのみ行われるため、問題が発生します。メインMSIのUIからマージモジュールに値を渡す方法はありますか?

単純化されたバージョンは次のとおりです。

マージモジュールの概要は次のとおりです。

最終的に、マージモジュールでは、構成されたプロパティが次のように使用されます。

0 投票する
1 に答える
3385 参照

installshield - Shield-Mergeモジュールの依存関係の問題をインストールします。DLLが登録されていません

私の問題:

2つのマージモジュールを作成しました。それらをAおよびBと呼びましょう。マージモジュールBはAに依存しています。Aはaaa.dllをウィンドウに並べてインストールします。Bには、インストール中に登録され、aaa.dllに依存するbbb.dllが含まれています。補足として、マージモジュールAはInstallshield 2012で作成され、マージモジュールBはVisualStudio2010ウィザードを使用して作成されました。

両方のマージモジュールをインストールするインストールシールドプロジェクトがあります。[アプリケーションデータ]->[再配布可能ファイル]に移動し、インストールにBを追加します。これにより、Aが自動的にチェックオフされます。[Organization]-> [Setup Design]に移動し、Bを含む機能を展開すると、[B]をクリックします。Bに関する情報が表示されたウィンドウが表示されます。そこに、Aを正しくリストする[Dependencies]見出しがあります。

プロジェクトをビルドして、クリーンなVMにインストールしようとしています。インストール中に、bbb.dllの登録に失敗したというエラーが表示されます。無視してキャンセルします。この時点で、マシンのwinsxsを調べたところ、aaa.dllが適切なフォルダーに存在しないことがわかりました。むしろ、winsxs \InstallTemp\サブフォルダーに存在します。次に、エラーポップアップで[無視]をクリックすると、インストールはそれ以上エラーなしで続行されます。次に、完了後、bbb.dllを手動で正常に登録でき、aaa.dllは適切なwinsxsサブフォルダーに存在します。

私の質問は、マージモジュールAを完全に終了させ、aaa.dllを正しい場所に配置して、すべてが正しくインストールされるようにするにはどうすればよいですか?

私が試したこと:

  1. InstallShieldプロジェクトのOrganization->SetupDesignで複数の機能を作成してみました。そこで、3つの機能を作成しました。上部の機能1にはAが含まれています。機能2にはAが含まれ、次にBが含まれています。最後に機能3にはAが再び含まれています。3つの機能すべてを必須にしました。これにより、機能全体のインストールが完了し、aaa.dllが正しい横に並んだ場所に配置されることを期待していました。しかし、そのような運はありません。(順序が逆になっている場合に備えて、3つの機能を作成しました)
  2. 問題は、aaa.dllが時間内または適切な場所にインストールされていないことだと確信しています。これをテストするために、最初にマージモジュールAをインストールしたインストールシールドインストーラーを使用してaaa.dllをインストールしようとしました。次に、メインインストーラーを実行すると、すべてが機能しました。

テキストの壁と不適切な文法\スペルでごめんなさい。本当にイライラするので、誰か他の人が最終的にこの問題に遭遇した場合に備えて、自分で問題を見つけたら投稿します。

0 投票する
1 に答える
1234 参照

dll - MSI: マージ モジュール (MSM) のカスタム アクションからプロパティを読み取る

MSM をビルドしようとしたときに、この問題に遭遇しました。どうやら、モジュールのプロパティ (およびそのすべての識別子) は、モジュールの生成中に名前の末尾にモジュール GUID を追加することによって名前が変更されます。たとえば、プロパティ「MY_PROPERTY」は「MY_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72」に名前が変更されます (803A3089-928F-46F1-BBAE-CBD39A7D6A72 がモジュール GUID であると仮定)。これは、同じ名前の識別子を使用しようとする複数のモジュール間の競合を防ぐために使用されるメカニズムだと思います。

MSM 内から、特定のプロパティに何らかの値を設定する必要がある DLL カスタム アクションを呼び出す必要があります (「THE_PROPERTY」と呼びましょう)。問題は、THE_PROPERTY の名前が上記のように THE_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72 に変更されるため、カスタム アクションがプロパティを見つけられず、失敗することです。

この問題を解決する方法はありますか? カスタム アクションを変更して、それが呼び出されているモジュールの GUID を (何らかの方法で) 把握しようとすることを考えていました。これを行う 1 つの方法は、現在のアクション名を確認することです。これには、GUID も含まれている必要があります。しかし、カスタム アクション内から現在のアクション名を取得できますか? 別の解決策を考えられますか?

ありがとう!

0 投票する
1 に答える
742 参照

sql-server-2008 - マージ モジュールと InstallShield を使用して SQL Server 2008 をインストールしますか?

マージ モジュールと InstallShield を使用してクライアント システムに SQL Server 2008 をインストールするにはどうすればよいですか?

0 投票する
1 に答える
664 参照

windows-installer - マージモジュールはどのように機能し、インストールしていないバージョンのVisual Studio用にどのように入手できますか?

VS 2005に依存するベンダーの依存関係があります。Depends.exeによると、次のように一致します。 x86_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.5592_none_cbf62b764709d1c9\MFC80.DLL x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.5592_none_d09196c24426e2d4\MSVCR80.DLL x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.5592_none_d09196c24426e2d4\MSVCP80.DLL

この正確なバージョンのマージモジュールを入手する必要がありますか、それとも新しいバージョンを使用できますか?このバージョンは、次のリストにある再配布可能ファイルで見つかりません:http: //blogs.msdn.com/b/astebner/archive/2007/01/24/updated-vc-8-0-runtime-redistributable-packages-are -included-in-visual-studio-2005-sp1.aspx

実際、バージョンは低いように見えるので、何が「後の」バージョンを構成するのかわかりません。私は実際には2005でコンパイルしないので、2005をインストールせずにこのマージモジュールを取得する必要があります。

0 投票する
0 に答える
391 参照

.net - マージ モジュールを使用したアプリケーションのデプロイ - サイド バイ サイド アセンブリ

VS2010 でビルドされた WPF アプリケーションがありますが、VS2008 でビルドされた C++/CLI ライブラリを参照しています。C++/CLI ライブラリは、CRT モジュール (MSVCM90.dll、MSVCP90.dll、MSVCR90.dll) の VC90 バージョンを使用します。プロジェクト プロパティには、「標準 Windows ライブラリの使用」、「ATL を使用しない」、および「共通言語ランタイム サポート (/clr)".

私の開発マシンでは、すべて正しくビルドされます。CRT モジュールは %WINDIR%/WinSxS の場所から読み込まれ、全員が満足しています。ただし、開発ソフトウェアを搭載していないテスト マシンにデプロイすると、アプリケーションはこれらのモジュールを見つけられないように見えます (Dependency Walker が教えてくれたことによると)。

必要なマージ モジュールをセットアップ プロジェクトに追加しましたが、それらは開発マシンとまったく同じ場所にインストールされています。アプリケーションの実行時にのみ、それらは見つかりません。アプリケーションは、起動時に「Windows が問題の解決策を確認しています...」というメッセージが表示されて失敗するだけです (その後、何もせずに終了します)。

私は何が欠けていますか?

また、セットアップ プロジェクトに VC++ 2010 再頒布可能パッケージと .NET Framework 3.5 SP1 クライアント プロファイルを追加しようとしましたが、何もしていないようです。

テスト マシンで sxstrace.exe を実行しようとしましたが、exe が実行されていることを示す最初のセクション以外の情報は得られません。

0 投票する
1 に答える
504 参照

visual-studio-2010 - Visual Studio セットアップ プロジェクトのマージ モジュールからのファイルへのショートカットを作成することはできますか?

Visual Studio 2010 に Setup and Deployment プロジェクトがあり、いくつかのマージ モジュールを使用して、プログラムの実行に必要ないくつかの依存関係をインストールしています。MSM ファイルの 1 つに、Program Files メニューにショートカットを作成したい実行ファイルが含まれています。これは可能ですか、それとも (私が学び続けているように...) Setup および Deployment プロジェクトのもう 1 つの厄介な制限ですか?

0 投票する
1 に答える
6242 参照

wix - WiX - インストール時にマージ モジュール ディレクトリを設定しますか?

http://wix.sourceforge.net/manual-wix2/authoring_merge_modules.htmにある Getting Started Wix ガイドの手順に従ってマージ モジュールを作成しました。

マージ モジュール wxs は次のとおりです。

主な製品 wxs は次のとおりです。

インストーラーをビルドして実行すると、マージ モジュールのファイルが、ユーザーがインストーラー UI で選択したディレクトリに移動しません。いずれにせよ、それらは「[Program Files]\SomeCompany Technologies\Some Repository\」ディレクトリに入ります。

マージ モジュールのディレクトリ パスから Program Files への参照を削除し、"." という名前のルート ディレクトリを使用するとします。親 MSI の親ディレクトリを取得するには、マージ モジュールがユーザーが選択したディレクトリを適切に取得します。ただし、自動生成された Guid を使用するには、パスが標準ディレクトリのいずれかにルートされている必要があるため、Visual Studio はビルド時にハーベストが機能しないというエラーをスローします。

では、マージ モジュールのパスを標準ディレクトリにルートしたまま、インストール時にユーザーが選択したディレクトリをマージ モジュールに取得させるにはどうすればよいでしょうか?

0 投票する
1 に答える
259 参照

visual-studio-2010 - VisualStudio2010セットアッププロジェクトの64ビットマシンの場合のマージモジュールの追加

Visual Studio 2010C++ランタイム再頒布可能パッケージに依存する32ビットアプリケーションがあります。

ただし、アプリケーションの一部では、dllインジェクションを実行する必要があります。理由で、私は今は本当に入りたくありません(ただ私の言葉を信じてください)。インジェクションコードとdllは、OSが64ビットの場合は64ビット、OSが64ビットの場合は32ビットである必要があります。

問題は、OSが64ビットの場合、コードが64ビット用に再配布可能なVisual Studio 2010C++ランタイムに依存していることです。32ビットシステムには32ビットVisualStudio2010 C ++ランタイム再頒布可能パッケージのみをインストールし、64ビットマシンには32ビットVisual Studio 2010C++ランタイム再頒布可能パッケージと64ビットVisualStudio2010C++ランタイム再頒布可能パッケージの両方をインストールしたいと思います。どうすればこれを達成できますか?