2009-07-31 28 views
4

私はLinuxのバックグラウンドから来ていますが、Windows上に私のソフトウェアのバージョンを提供したいと思います。ユーザーが自分のプログラムを実行するためには、Visual C++を再配布可能にする必要があります。私はそれらをパッケージの一部として提供したいと思います。Visual C++の再頒布可能な再配布

私の心配は、将来、Visual Studio 2008 RedistributableのSP2になることです。私がSP1を提供した場合、またはそれをインストールするよう依頼した場合、将来のツールで必要となるかもしれないDLLの後のバージョンが壊れてしまいますか?

これをしないようにユーザーに指示する指示はありますか?

私は確かに、間違った指示を与えて、誰かのマシンや他のアプリケーションを台無しにしたくないと思います。

再配布可能なexeファイルとは別に、自分のツールをzipファイルとして提供してくれましたので、私のツールを任意のディレクトリに展開できますので、インストーラを提供する予定はありませんでした。

+0

確かにMicrosoftは新しいバージョンの可能性を考慮し、元の再配布可能ファイルが新しいバージョンを上書きすることを許さないでしょうか? –

答えて

7

VS 2008では、ランタイムが明示され、横並びにインストールされます。したがって、アプリケーションがSP1のランタイムにリンクされている場合、SP1バージョンをオーバーライドする必要があることを明示的に示すマニフェストがない限り、SP1ランタイムでのみ実行されます。

したがって、あなたはそのタイプのDLLの地獄から、別のもの(ユーザーは、再配布可能なSP1がインストールされている必要があります)と引き換えに保護されています。

+0

カッコ内の最後のコメントは誤解を招くようなものです。 SP1の再配布は、アプリケーションと共にインストールされ、アンインストールされます。ユーザーが別にインストールする必要はありません。 –

+0

ポイントは、ユーザーが既にSP2を持っていてもまだインストールされるということです。 –

+0

@Drew - あなたはそうです。適切なインストーラを持つアプリケーションでは問題ありません。 –

3

VC++の再配布可能ファイルは、並行してインストールするためのものであり、平和的に共存できます。

ここはMSDN docs about the VC++ redistributablesのページです。 MSDNのその全体の展開セクションは有益なものでなければなりません。

7

この問題を静的にリンクして回避しないのはなぜですか?

+0

これが可能であるかどうかはわかりませんでした。私の申請書は将来校正されますか?将来、オペレーティングシステムを変更すると、静的にリンクされた実行時間に互換性がない可能性があります。 – Juan

+0

静的にリンクすると、使用するライブラリコードがEXEの一部になります。将来のO/Sが実際にEXEを実行できる限り、大丈夫です。私はまだ15年以上前に書かれているアプリがあります。 – Rob

+0

これはlinuxとは異なります。たとえば、Linux上でpthreadライブラリを静的にリンクすると、将来アプリケーションが互換性を失うことがあります。これは、pthreadライブラリとosによって必要とされる密接な相互作用に由来します。 – Juan

2

人々は言ったように、彼らは並んでインストールされています。 Visual Studioのインストーラプロジェクトタイプを使用している場合、CRT再配布可能ファイルを含めるオプションがあり、アプリケーションと共にインストールおよびアンインストールするためにCRTを正しく設定します。

特に、\ Windows \ WinSxSディレクトリにインストールされます。

、どのようにサイド・バイ・サイド作品の直感を得る

cd %systemroot%\winsxs 
dir /S msvc*.dll 

を行うと、あなたは人々があなたのマシンに入れているすべてのバージョンが表示されますし。

関連する問題