問題タブ [winsxs]
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.
tortoisesvn - TortoiseSVN のサイド バイ サイド構成が正しくない
TortoiseSVN の最新バージョン (1.5.2.13595) にアップグレードすると、コンテキスト メニューが使用できなくなります。
手動で実行しようとすると、次のエラーが発生します。
アプリケーションログはこれを示しています
visual-c++ - VCRedist_x86.exe を使用しない Visual C++ 再頒布可能パッケージ
私は厳しい制約のある環境で開発していますが、開発者も厳しく管理しています。
VCRedist_x86.exe - 4Mb の再配布可能ファイル - は面白くありません (転送に 4 時間かかります)。私は、MFC90.dll、msvcm90.dll、msvcp90.dll、および msvcr90.dll を再配布することを本当に好みます。これは 2Mb に近いものです。ただし、Visual C++ ファイルの再配布には次のように書かれています。
マニフェストなしでビルドされた C/C++ アプリケーションの再配布はサポートされていません。Visual C++ ライブラリは、アプリケーションをこれらのライブラリにバインドするマニフェストがないと、C/C++ アプリケーションで使用できません。詳細については、展開方法の選択を参照してください。
DLL をプログラムの作業ディレクトリにコピーするという当初の計画は、このすばらしい新しいマニフェストの世界では機能しないようです。
私の次の推測は、ファイルを WinSxS ディレクトリに追加するために必要なレジストリ エントリを作成し、(4 メガ プログラムを使用するのではなく) 自分で作成することです。
[編集] ソフトウェアは頻繁に更新されるため、DLL は静的リンクよりも強く推奨されます。[/編集]
必要なファイルを正常に配布しながら、オーバーヘッドを抑えるにはどうすればよいですか?
c++ - Visual C++ 2008 のデバッグ モードで MSVCR90D.dll が見つからない
Visual C++ 2008 に問題があります。opencv をインストールし、新しいプログラムを作成しましたが、エラーなしでビルドしました。ただし、デバッグ時に MSVCR90D.dll が見つからないと文句を言います。リリースモードでは全く問題ありません。
Winsxs フォルダーの 1 つに MSVCR90D.dll があります。この問題の回避策を知っている人はいますか? これは既知のバグですか?
ジェラルド
installation - SxS インストールと WiX
フレームワークであるプロジェクトのインストールと展開を処理する方法を理解しようとしています。通常、開発者はフレームワークをインストールしてから、.Net アプリケーションで dll を参照します。
フレームワークには 2 つのレベルがあります。
- 多数のネイティブ C++ dll
- ネイティブ dll を参照する一部の C++\CLI および C# アセンブリ (すべて dll)
.Net アセンブリを GAC に配置し、ネイティブ アセンブリを WinSxS フォルダーにインストールするインストーラーを提供したいと考えています。これまでのところ、SxS アセンブリのインストールに関する情報はあまり見つかりませんでした。MSIを使用して実行できることは知っていますが、WiXまたは他のインストーラーツールを使用して実行する方法を誰かが知っているかどうか疑問に思っていました.
これは、Visual Studio セットアップ プロジェクトを使用して行うことはできないと思います。
.net - .NET コンポーネントで登録不要の COM をうまく使っている人はいますか?
最近まで、私たちはネイティブおよび .NET COM コンポーネントに登録不要の COMを喜んで使用していました。しかし、リリース候補からリリースに移行するために .NET アセンブリのバージョン番号を変更しただけで、アプリケーションが Windows XP SP3 (vista ではなく) でランダムにクラッシュし始めるという奇妙な問題に遭遇しました。(マーフィーの法則が嫌いなだけ?)
多くの工数が失われ、歯ぎしりをした結果、この問題は、.NET クラスに関する情報を取得するときにヒープの破損を引き起こすsxs.dll の既知のバグであることがわかりました。問題を解消するホット フィックスがありますが、ホット フィックスは再配布を目的としていません。
登録不要の COM 実装にこのような恐ろしいバグがあることに、私たちは少し困惑しています。登録不要の COM for .NET コンポーネントを使用して成功した人はいますか? この問題をどのように回避しましたか?
windows - WinSxS: gdiplus.dll の特定のバージョンに依存する方法は?
特定のバージョンの GDIPlus に依存関係を追加する必要があります。これは私が欲しいGDI +のバージョンです:
特定の互換性の理由から、このバージョンを使用していることを確認したいと思います。
GdiPlusのバージョンへの依存関係を定義して、アセンブリ マニフェストを実行可能ファイルに追加しました。
アプリケーションを実行する場合を除いて、Windows の Fusion ローダーは、Side-by-Side フォルダーから別のバージョンの gdiplus.dll を提供します。これは、Process Explorer で確認できます。
5.1.3102.2180ではなく、バージョン5.02.6002.18005を提供しています。
問題は、Windows dll の特定のバージョンに依存するにはどうすればよいかということです。
windows-xp - 使用中の共有アセンブリをアンインストールして、WinSxs を悪い状態のままにする
WinXP で Wix3 を使用して共有の win32 SxS アセンブリをアンインストールできません。私の wix ファイルは、http://n2.nabble.com/Tutorial-How-to-install-files-into-WinSxS-td841475.htmlで説明されているものとほとんど同じです。
問題は、アセンブリのモジュールが使用されている場合、アンインストーラーは成功エラーコードで完了しますが、アセンブリは壊れた状態のままになります。マニフェストとセキュリティ カタログは削除されていますが、アセンブリ ディレクトリには dll が含まれています。 . DLL は再起動後も存続するため、削除対象としてマークされることはありません。MSI ログ ファイルに明らかなエラーはありません。
パッケージを再インストールしようとすると、アセンブリのインストールがスキップされます。コンポーネントが登録されていないため、インストーラーにアンインストールを再試行させることができません。以降のインストールでは、msi ログに次のように表示されます。
MSI (c) (98:44) [11:46:56:263]: アセンブリ コンポーネントのインストールをスキップしています: {26A273E7-7F9A-4F77-9FA8-5E413A155BEC} アセンブリが既に存在するため
アセンブリのディレクトリを手動で削除する以外に、SxS を良好な状態に戻す方法が見つかりません。この時点で、アセンブリのディレクトリは XP システムの復元によって保護されなくなりました。
私の実際のインストーラーははるかに複雑ですが、単一のコンポーネントを含む単一の機能を持つ非常に基本的なインストーラーでこれを再現できました。そのコンポーネントには、dll、マニフェスト、およびセキュリティ カタログが含まれています。dlls <File> 要素には、KeyPath、Assembly、および AssemblyManifest 属性が設定されています。インストールしたら、MSVS で DLL を開いて、アセンブリをロードするプロセスをシミュレートできます。
この状況を検出して防止するために、アンインストール時に呼び出す必要がある追加のアクションはありますか? または、WinSXS に DLL が既に存在する場合でも、インストール操作を強制的に実行する方法はありますか?
多少関連していますが、アセンブリが変更されていない場合に、アセンブリをインストールしたパッケージをアップグレードしようとすると、問題が発生します。インストーラーは、アセンブリを再インストールする必要はないと判断しますが (アセンブリは変更されていないため)、SxsUninstallCA が実行されると、アセンブリが削除されます。インストーラーの観点からは、コンポーネントはまだインストールされていますが、ファイルは失われています。
versioning - MSXML: IXMLDOMNode にどのバージョンの MSXML から来たのかを尋ねるにはどうすればよいですか?
IXMLDOMDocument2がどのバージョンの MSXML であるかを確認するにはどうすればよいですか? IXMLDOMDocument2を指定すると、同じバージョンの別のドキュメントを作成する必要があります。
異なるバージョンの MSXML から IXMLDOMDocument を指定すると、msxml から例外が発生します。
異なるバージョンの MSXML のオブジェクトを混在させるとエラーになります。
Microsoft は内部的に、それがどのバージョンの MSXML から来たのかをインターフェースに尋ねることができます。私は同じものにアクセスする必要があります。
疑似コードで記述された次の仮想関数を考えてみましょう。
問題は、 IXMLDOMNode が MSXML6 から来ている場合です。作成されたのDOMDocument
はバージョン 3 からです (MSXML における Microsoft のバージョン依存のため)。これにより、
COM 例外をスローするには:
Microsoft はインターフェイスにそれがどのバージョンの MSXML から来たかを尋ねることができるので、私は同じことを行うことができるはずですが、どうすればよいでしょうか?
または、指定された場合、同じバージョンのオブジェクトをIXMLDOMNode
作成するにはどうすればよいですか...XMLDOMDocument
qt - MSVC 2005 を使用して Qt をコンパイルし、SxS Windows を処理する
私が一緒に働いているグループは、Qt を使用して新しいプロジェクトを開発する任務を負っています。ただし、MSVC 2005 ワールドの C++ ライブラリとリンクできる必要があります。また、最終的には MSVC ベースのビルド システムと統合する必要があるため、MSVC を使用して Qt をビルドすることが重要と思われます。
MSVC 2005 を使用して Qt を再コンパイルしましたが、動作します。(本来あるべきほど簡単ではない場合)実際にコンパイルしたボックスで機能します。ただし、MSVC 2005 はランタイムに常にわずかに異なる SxS Windows DLL バージョンを使用しているように見えるため、さまざまなボックスで使用するのは非常に面倒です。
通常、ツールチェーン パッチ レベルのターゲットが異なるさまざまなグループに属しているため、XP や MSVC のパッチ レベルをすべて同じにすることはできません。
この種の問題に対処する最も簡単な方法は何ですか?