用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 这样的文件,一定是源代码上没有加上静态库文件,致使程序安装后会依赖系统的动态连接库文件,从而出现系统不兼容问题。

相关文章
相关标签/搜索