2009-07-31 85 views
4

我來自Linux背景,但我想在Windows上提供我的軟件版本。對於用戶運行我的程序,他們將需要Visual C++可再發行組件。我想爲他們提供它作爲包的一部分。Visual C++ redistributable redistribution

我擔心的是,將來會有一個SP2的Visual Studio 2008 Redistributable。如果我爲他們提供了SP1,或者讓他們自己安裝它,它是否會摧毀未來工具可能需要的更高版本的dll?

是否有任何指示讓用戶確認他們不這樣做?

我肯定不想讓別人的機器或其他應用程序給他們不正確的說明。

除了可重新發布的exe文件,我還會提供我的工具作爲zip文件,它們可以將它們提取到任何他們想要的目錄中,所以我沒有計劃提供安裝程序。

+0

當然,微軟會考慮更新版本的可能性,並且不允許原始可再發行版覆蓋更新的版本? – 2009-07-31 17:17:31

回答

7

隨着VS 2008的運行時間表現出來並且將並排安裝。因此,如果您的應用程序鏈接到SP1的運行時,它將只能在SP1運行時運行(除非清單明確指出應該重寫Sp1版本)。

因此,您可以從該類型的DLL地獄中得到保護,以換取另一種(用戶必須必須安裝SP1可再發行組件)。

+0

您在括號中的最後一條評論是有誤導性的。 SP1 redist與應用程序一起安裝和卸載。這不像用戶必須單獨安裝它。 – 2009-07-31 17:26:03

+0

問題是,即使用戶已經安裝了SP2,它仍然會安裝。 – 2009-07-31 17:30:00

7

爲什麼不靜態鏈接並完全避免這個問題?

2

正如人們所說,它們是並排安裝的。如果您使用Visual Studio的安裝程序項目類型,則可以選擇包含CRT可再發行組件,並且它將正確設置它,以便您可以隨應用程序一起安裝和卸載它。

特別是,它們安裝在\ Windows \ WinSxS目錄中。

要獲得如何並排側作品的直覺,做

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

你會看到所有的人已經把你的機器上的版本。