Setup Factory打包自己开发的软件的办法的方法(包括安装软件狗驱动和ocx注册)
软件:Setup Factory7.0 英文版
以前用过install shield9.0打包vb的软件,也用过VS2005自带的打包软件打包VS2005的软件,也用过InstallShield6.2来打包vb的软件。
毫无疑问,无论是打包vb或者C#开发的软件,SetupFactory7.0打包是最快的,也是最好的,而且很容易入门。一旦拥有,别无所求!感谢Mr.Wu的帮助,他n年前就用过了,还是由我这个菜鸟来写总结吧。
我们要打包的对象是:图01
一个qq围棋的格式转换程序,它需要用到通用对话框comDlg32.ocx控件,我们模拟出一个DogInstallVir.exe的软件狗安装小程序,没有病毒,请放心。Test.wgs是qq的围棋格式,out23.sgf是转换后成功的例子。
首先,安装好Setup Factory7.0英文版后
点Create后,图02:
图3选择打包用的所有文件:
下面是选安装背景,可以不选择,也可以弄个mm图片……,图4:
图5:
图6选择语言:
图7选择vb版本:
图8:
导入所有文件后,图9:
有2个难点:
1.COMDLG32.OCX控件要放到C:windowssystem32下面,而且,卸载软件的时候不卸载掉它,否则其它的软件可能会用不了。
2.软件狗(或者其它可执行exe小程序)如何在安装完成前安装。
双击comdlg32.ocx, 然后修改Destination属性成:%SystemFolder%,如图10:
下面这个是让卸载软件的时候不删除ocx文件,可以用shift批量修改,很方便。这样如果别的软件也用到这个ocx,卸载此软件不影响其它的软件。图11:
SetupFactory会自动把所有的exe文件建立一个快捷方式到“开始”-“程序”-“软件名称”的文件夹下。软件狗的驱动没有必要放在“开始”-“程序”这里,因为它不常用。所以我们做如下修改:去掉”Startmenu > appFolder”的勾。图12:
下面设置软件狗的驱动程序,在安装完成前运行instdrv.exe这个可执行文件。图13:
图14:
图15选File-Run
结果显示如图16:
浏览文件,图17:
下面的WaitForReturn选择true,这样就必须安装或者不安装驱动才会出现完成软件安装的界面。图18是返回的界面:
点“完成”后。图19:
点“确定”后,返回主界面,主程序如图20:
图21:
保存工程,最好和打包的文件放在同一个地方,图22:
然后点“publish”-“build”或者F7,图23:
图24:
点击“build”。图25:
完成后,生成下面的文件,图26:
运行setup.exe后安装软件,看看界面,图27:
图28:
图29:
图30:
图31:
图32:
图33:
图34:
开始菜单下面会有自动卸载的,图35:
如果是打包C#或者C++等的,需要打包框架。20多M。按照下面的就可以了:
1、在“资源”的“原始文件”中添加net Framework 2.0(例如dotnetfx2.0.exe)
2、再在“操作”的“启动”中增加如下代码:
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\.NETFramework\policy\v2.0");
if (result == false) then
result =File.Run(SessionVar.Expand("%TempLaunchFolder%\dotnetfx2.0.exe"),"", "", SW_SHOWNORMAL, true);
end
附加2个复杂的大型程序打包会遇到的问题(2011.01.23 by Kiseigo):
1. 如何知道自己的*.vbp工程需要哪个dll
2. 为什么给一台新安装xp的电脑安装“围棋setup.exe”老是出异常?
回答1:
使用Tools下面的”Scan File Dependencies”和”Scan Visual BasicProject”,后者需要指定你的vbp工程的完整路径,然后SetupFactory会去找需要的dll和ocx文件,一般都是在“C:WINDOWSsystem32”找到,然后你自己去下面把这些文件复制到“打包用到的原始文件下面”,新建一个叫“DLLimport”之类的名称的文件夹,然后把所有的dll和ocx复制到这下面去。
它们是默认安装到“C:ProgramFiles围棋DLLimport”下面的,所以需要把它们的Destination的Install的值改正”%SystemFolder%”,可以批量修改,方法是选中多个dll后,右键,然后属性,点击笔的按钮:
回答2:
所有使用的dll和ocx都需要一句句手工注册,否则安装好setup后,启动程序,就会出现各种各样的异常。
下面是第二条的注册代码:
Shell.Execute("regsvr32", "open",SessionVar.Expand(" /s %SystemFolder%\comctl32.ocx"), "",SW_SHOWNORMAL);