用VS2005給程序打包遇到的問題及解決方案

首先簡單介紹一下VS2005打包的方法:html


文件——>添加——>新建項目windows

項目類型:其餘項目類型——>安裝和部署   模版:安裝項目api

修更名稱後 點擊「肯定」(因爲工程須要,我修改爲「SetupClient」)ide

wKioL1Mv87axr5MqAADWyZnZwe0622.jpg

就生成了SetupClient   (SetupTFTPServer同理)測試

接下來到了關鍵步驟了spa

1.  選中SetupClient右鍵——>文件系統(通常首次首次生成會自動顯示文件系統,此步驟可忽略)server

2.  SetupClient右鍵——>添加——>項目輸出htm

將項目改成你須要打包的項目,而且選中「主輸出」blog


wKioL1Mv9pXDoZCLAAECBiKkD2g122.jpg

點擊「肯定」後就出現以下的東西v8


wKiom1Mv9jCj5oIUAACMGmT9f04941.jpg


桌面啓動快捷方式和「開始」菜單快捷方式的生成:

         進入「文件系統」選項卡 ,選中 「應用程序文件夾」 右邊的窗口會出現諸如」主輸出來自XXX(活動)「的輸出類型的文件

       選中這個」主輸出「右鍵建立快捷方式 ,將快捷方式重命名爲你的程序名稱,例如」QQ「、」迅雷「,此出我用的是」TFTPClient「,而後將這個快捷方式移動到」用戶桌面「這個文件夾下。(最後你安裝好程序的時候,這個快捷方式就會顯示到桌面上)。

       同理,若是須要在」開始「菜單欄上顯示程序的快捷方式,就在」用戶的‘程序’菜單「這個文件下新建一個文件夾重命名爲項目名稱,而且再建一個」主輸出「快捷方式剪切到該文件夾下。

wKioL1Mv_I7C9tiKAACWJijQlf0679.jpg

卸載快捷方式的生成:

右鍵「應用程序文件夾」 添加——>文件,選擇 C:\Windows\System32 這個目錄下的 msiexec.exe 這個文件(有的系統可能有權限限制,能夠將這個文件複製到工程目錄下再添加)

重命名這個文件爲「卸載」,建立這個文件的快捷方式,選中安裝項目——>查看它的屬性頁,複製它的ProductCode

wKioL1Mv_gqiSzwFAAGb1yX6E-U017.jpg

而後將「卸載」的快捷方式的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\ 夾裏


這固然解決不了問題:最後我發現

wKiom1MwGczQRG3MAACgwoSohFU554.jpg

在「檢測到的依賴項」裏面有個WSOCK32.dll這個文件,最後我進入源代碼

加上了    #pragma comment( lib, "ws2_32.lib" ) 從新生成就沒有 WSOCK32.dll這個文件

最後安裝以後運行,問題就沒了。


總結:在生成「主輸出」後,若是出現 XXX.dll 這樣的文件,一定是源代碼上沒有加上靜態庫文件,致使程序安裝後會依賴系統的動態連接庫文件,從而出現系統不兼容問題。

相關文章
相關標籤/搜索