1. 程式人生 > >visual studio 開發的MFC程式打包

visual studio 開發的MFC程式打包

這是我的處女作,寫得不好,大家多多包涵

前言:

(1)專案就要驗收了,可是專案一直在自己的機器上執行,而且一直用都是在整合開發環境(VS2008)中執行,沒想過在別的機器上執行會怎麼樣

(2)之所以要寫這個部落格是因為在網上找不到我的問題的解決方案(當然有相似問題),我的問題難點是在專案裡面呼叫了其它的exe程式,是別人用VB寫好的程式,然後生成的exe檔案,我直接在MFC裡面呼叫了,在自己的電腦上除錯執行還好,但是一旦打包到別的機器就不行了。

(3)開發專案的整合環境已經說過了,另外還使用了OpenCV、OpenGL。

好了,下面進入正題:

一般開發的mfc程式,直接把debug或者release下的**.exe檔案拷貝出來,直接雙擊就能執行,但是前提條件是該機器要安裝好vs開發環境或者裝好其它外掛(網上Google有,這裡就不詳解了)。但是這對於真正使用的軟體顯然是不現實的,沒理由要求使用該軟體的人都去安裝visual studio開發環境或者安裝外掛吧,平時我們從網上下載的軟體一般都有安裝過程的,這是別人打包好的。

廢話說了一堆,該說說我是怎麼從失敗到成功的。

1、首先我直接使用vs2008自帶的安裝部署,建立了一個工程,然後把編譯好需要打包的工程匯入該工程,設定輸出屬性,編譯,搞定(可參考http://wenku.baidu.com/view/8790880b7cd184254b353588.html),要是這樣能成功就太好了,我在其他機器上安裝了該應用程式,結果能正常執行,包括OpenGL、opencv等功能,唯一沒有反應(不報錯)的就是呼叫VB寫好的exe的地方。

2、然後我使用了InstallShield 2010(下載地址)對專案進行打包(可參考http://blog.csdn.net/liuhongwei_study/article/details/8586930),然後找到工程下面的setup.exe安裝即可,我的setup.exe路徑C:\InstallShield 2010 Projects\

UnOceanV1.0\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\DISK1(紅色是工程的目錄,紫色是工程的名稱,也是軟體的名稱,後面的應該都一樣了)。這次的執行情況還是跟上面一樣。

3、最後,我分析了原因,可能是包含關係、或者靜態庫的關係失敗的,所以把(2)參考連結的第六步Application Files,不僅添加了debug下面的exe檔案,還將工程目錄下一級的debug資料夾添加了,(注意,不是**.sln同一級的debug資料夾,而是與.cpp同一級的debug資料夾)。經過編譯之後生成的setup.exe安裝之後即可正常執行所有功能,其實原理我也沒弄明白,望大神賜教。添加了debug資料夾之後的確定是原來只有幾兆的軟體變成了幾十兆,故慎用。

好了,就寫這麼多了,謝謝。