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