2010-01-25 53 views
3

我有一個使用Visual Studio 2008開發的ATL/WTL項目,到目前爲止,我一直在靜態鏈接CRT庫,避免需要運送它們。但是,我現在需要考慮使用動態庫(DLL)來代替 - 以減小代碼的大小,並且因爲我想使用優秀的工具(需要動態鏈接到CRT)。分發Visual C++運行時庫(MSVCRT)

現在,MS同時提供一個獨立的安裝程序(選擇vcredist_x64.exe)和MSM包裝但這不適合我,原因有二:

  • 我沒有使用基於MSI安裝程序(我用InnoSetup) 。
  • 我的應用程序安裝在有限的用戶帳戶上,vcredist_x86.exe安裝程序不起作用。

因此我想運送CRT DLL並安裝到我的應用程序程序文件夾中。現在,這是你可以做的,因爲我找到了following blog post由馬丁·洛弗爾,在MSVC庫開發鉛,說:如果你想 安裝-applocal

但是,你應該確保 您的應用程序有一個清單, 然後整個這個文件夾 的複製到您的EXE目錄:

X:\ Program Files文件\微軟的Visual Studio的 \ VC \ REDIST \ 86 \ Microsoft.VC80.CRT

和其他文件夾如果使用超過 的CRT。確保您包含 清單。

只是想我以後 - 除了我不明白這個部分:

確保您的應用程序有一個清單

我的問題是 - 如何創建一個應用程序清單引用我想要使用的CRT DLL?我的項目目前使用的唯一清單信息如下(這確保了應用程序使用公共控件V6):

/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\" 

可有人爲我提供關於如何工作使用Visual Studio 2008的表現神奇的指令?在我的Visual Studio VC \ redist \ x86 \ Microsoft.VC90.CRT文件夾中有一個Microsoft.VC90.CRT.manifest文件 - 我需要以某種方式使用它嗎?

注意:這是一個與this one類似但不同的問題。

回答

3

當您傳遞/ MD標誌時,Visual Studio將爲您生成正確的清單。

+0

因此,除了在'C/C++ - >代碼生成'頁面上更改我的'運行時庫'設置外,我不需要做任何其他事情(除了發送CRT DLLs!)? – Rob 2010-01-25 09:47:54

+0

正確,AFAIK。 (只要你不試圖用'/ MDd'部署一個調試版本) – 2010-01-25 10:21:52

+0

謝謝,我會給它一個。 – Rob 2010-01-25 10:35:18