首先簡單介紹一下VS2005打包的方法:html
文件——>添加——>新建項目windows
項目類型:其餘項目類型——>安裝和部署 模版:安裝項目api
修更名稱後 點擊「肯定」(因爲工程須要,我修改爲「SetupClient」)ide
就生成了SetupClient (SetupTFTPServer同理)測試
接下來到了關鍵步驟了spa
1. 選中SetupClient右鍵——>文件系統(通常首次首次生成會自動顯示文件系統,此步驟可忽略)server
2. SetupClient右鍵——>添加——>項目輸出htm
將項目改成你須要打包的項目,而且選中「主輸出」blog
點擊「肯定」後就出現以下的東西v8
桌面啓動快捷方式和「開始」菜單快捷方式的生成:
進入「文件系統」選項卡 ,選中 「應用程序文件夾」 右邊的窗口會出現諸如」主輸出來自XXX(活動)「的輸出類型的文件
選中這個」主輸出「右鍵建立快捷方式 ,將快捷方式重命名爲你的程序名稱,例如」QQ「、」迅雷「,此出我用的是」TFTPClient「,而後將這個快捷方式移動到」用戶桌面「這個文件夾下。(最後你安裝好程序的時候,這個快捷方式就會顯示到桌面上)。
同理,若是須要在」開始「菜單欄上顯示程序的快捷方式,就在」用戶的‘程序’菜單「這個文件下新建一個文件夾重命名爲項目名稱,而且再建一個」主輸出「快捷方式剪切到該文件夾下。
卸載快捷方式的生成:
右鍵「應用程序文件夾」 添加——>文件,選擇 C:\Windows\System32 這個目錄下的 msiexec.exe 這個文件(有的系統可能有權限限制,能夠將這個文件複製到工程目錄下再添加)
重命名這個文件爲「卸載」,建立這個文件的快捷方式,選中安裝項目——>查看它的屬性頁,複製它的ProductCode
而後將「卸載」的快捷方式的Arguments 改成「/xProductCode」例如 /x{82FE85E5-FF0E-46EB-AD77-3B2953BDE704}
這快捷方式就能夠用來卸載軟件了
最後一步:
右鍵「SetupClient」——>生成
到目前爲止,打包這步就完了
如今說明一下在打包的過程當中遇到的問題:
開始給SetupClient打包後,在Windows7(32位&64位)環境下測試都經過了,可是在XP和server2003下測試就出現以下的問題:
沒法定位程序輸入點-except-handler4-common於動態連接庫msvcrt.dll上
結果在網上找解決方法,千篇一概的是:
將 c:\windows\system32 下的 dwmapi.dll 更名,例如:改成 dwmapi.dll.bak
不行網上下載msvsrt.dll放到C:\windows\system32\ 夾裏
這固然解決不了問題:最後我發現
在「檢測到的依賴項」裏面有個WSOCK32.dll這個文件,最後我進入源代碼
加上了 #pragma comment( lib, "ws2_32.lib" ) 從新生成就沒有 WSOCK32.dll這個文件
最後安裝以後運行,問題就沒了。
總結:在生成「主輸出」後,若是出現 XXX.dll 這樣的文件,一定是源代碼上沒有加上靜態庫文件,致使程序安裝後會依賴系統的動態連接庫文件,從而出現系統不兼容問題。