Wise Solution
日期: 2003-7-8
发件人: cadinfo
关于: Wise Installation System - Profession Edition
Wise Installation System是什么我不想介绍了,对它的了解仅是半个小时的事情,你也可以从国内各个知名点的网站将它下载,我没有做过任何破解的尝试,似乎安装完成之后就能使用,不必考虑注册与否,至少我在使用过程中没有发现任何形式的限制!
不过提醒一点的是:尽量不要使用国内制作的汉化,不知道是什么原因,开始也安装了汉化包,看着总别扭,不过最主要的是使用也不顺!汉化作者根本没有时间去做完整的测试,只是埋头将各种形式的资源进行翻译。
万事开头难J 下面我给大家整理出这份文档,以便给使用或者想了解wise安装制作的朋友带个头,或许会有抛砖引玉的功能!熟悉wise的朋友也可以给我邮件 cadinfo@263.net ,互相讨论!
感谢csdn上的朋友,正是这些网络上的无名朋友给了我很多启发,让我有兴趣完成了Wise探索!
言规正传,首先我们讨论问题的提出,为什么要使用Wise:
当您辛苦的把软件完成的时候,您也许会露出得意的笑容J 且慢,您还有重要的事情没有完成,难道就让你的软件这样发布了,这不是等于streaking吗?当您的应用程序使用数据库时,您发布软件不会将脚本给客户吧,这样开发细节就被客户一览无遗,况且并非每个用户都熟悉建库操作,所以必须为您的软件制作安装包,让客户简单的输入一些配置或登录信息即可完成安装,进入使用环节。
当您打开Wise Installation System时候,你会发现这款安装制作软件非常容易上手,如果您的软件仅仅是文件组的拷贝,那么大约几分钟的事情就可以完成安装包的制作。所以这里我跳过这个简单过程,直接讲述我在制作自动生成数据库安装包过程中的心得。
由于Wise自身提供的脚本的局限性,使用脚本无法完成安装包自动建库;然而Wise为了扩展自身功能,它提供了对dll函数的调用,于是我的思路便产生了,何不使用自己熟悉的开发语言来生成dll,利用接口函数完成建库工作,在建库过程中需要注意的事情是:1.脚本文件不能以文件形式存在,原因:建库是在客户端完成,将建库脚本做成文件形式无异于告诉客户您的数据库是如何安排的,您的所有触发器和存储过程全部变得透明;2.需要用户输入数据库登录方式,没有登录权限是没有办法在客户的SQLServer中生成您的数据库的,因此您必须定制对话框以提供用户接口。
好了有了这两点思路,我来进一步说明如何利用dll完成建库的接口函数。Dll的导出函数您可以自己参考msdn,很简单您可以使用__declspec(dllexport)来修饰函数使它成为可在外部调用的函数,也可以使用def定义来实现,此处值得提醒的是,wise手册上说明使用外部函数时,必须将函数调用规则声明为__stdcall 或者 CALLBACK。我们可以使用ado数据库引擎来完成建库,在您的dll项目的预编译头文件stdafx.h中添加以下代码:
#pragma warning (disable: 4146)
#import "x:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
#pragma warning (default: 4146)
完成ado的支持,之后就可以定制自己的建库函数,例如:
const short/*__stdcall*/CALLBACK fnBuildDB(const short sec=1, const char* server="localhost", const char* uid="sa", const char* pwd="", char* retmsg="Install Sucess");
之后我们完成对此函数的功能逐步实现:
步骤分为以下5步:
1. 判断客户端是否安装SQLServer,以及SQLServer版本是否可以接受;
2. 初始化Com对象,初始化ADO使用环境;
3. 根据传入参数创建连接字符串,创建ADO连接对象;
4. 读取建库资源,进行解密,使用istrstream对象完成建库脚本的整理和建库操作;
5. 关闭连接,关闭Com对象。
在建库函数完成之后,我们可以到Wise中创建建库脚本了。
同样,您也可在此先判断SQLServer的安装,然后先安装您的建库dll到目标机器,调用fnBuildDB完成客户端数据库的安装,在这个函数中,提供了返回信息监控建库的过程,您可以判断返回代码,如果发生错误,那么利用Wise的Display Message脚本向用户提供出错原因。
好了,本文仅提供一种在Windows 2000下利用Wise制作自动建库的安装程序的思路,并没有提供完整的源代码,希望这个思路能给有兴趣的朋友带来动力。举个例子,竖起一盏灯,让您走向光明,而不会把等带到您的面前,路还是要自己走的J!
时间仓卒,文章写得比较乱,希望网友指点。
(提醒:如果您在.NET FRAMEWORK下制作安装程序的话就简单多了,VS.NET提供了安装程序制作包,您可以使用它来完成建库安装包的制作,然而对于在2000系统开发的不依赖.net的软件,实在没有必要,因此我在这里发文,完成同样功能,希望这种dll扩展方式能够为朋友们带来通往光明的道路)
cadinfo