`
txf2004
  • 浏览: 6974988 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

installshield 12较6.0生成MS SQL数据库策略

阅读更多

PB的软件打安装包,最不好弄是注册表和数据库,以前一直用installshield 6.3,注册表和数据库要手动写script,很烦,经常出错,因为is不跟踪调用的外部程序,所以出错的时候没有容错处理,没有报错,客户生成数据库的时候不行,就是不行,不知道为什么不行

这个是installshield 6.3的时候生成数据库的方法

#i nclude "ifx.h"
//NNLL添加全局变量
BOOL bvType; //记录安装类型,是否服务器
string szMyse,szMyna,szMypa; //SQL的服务器名、用户名、登录密码
//NNLL添加完毕

在function OnFirstUIBefore()里,添加两个对方框,第一个是SelectType,用来给客户选择是不是安装服务器程序,如果是安装服务器程序,进入第二个对方框Dlg_SdShowDlgEdit3,在这里要求用户输入安装数据库的机器名、用户名和密码

//NNLL加入判断,安装的是服务器还是工作站
SelectType:
szMsg="请选择安装的计算机用于:" ;
bvCheck1 = TRUE;
bvCheck2 = FALSE;
bvType = TRUE;
nResult = AskOptions ( EXCLUSIVE , szMsg , "服务器" , bvCheck1 , "工作站" , bvCheck2 );
if (nResult = BACK) goto Dlg_SdLicense2;
if bvCheck2 = TRUE then
//工作站,注册表项server=0
bvType = FALSE;
else
//服务器,注册表项server=1
bvType = TRUE;
endif;

if bvType = TRUE then
Dlg_SdShowDlgEdit3:
szMsg = "请输入服务器名或服务器的IP地址、登录数据库的用户名和密码";
szTitle = "请输入服务器信息";
szField1 = "服务器名";
szField2 = "用户名";
szField3 = "密码";
nResult = SdShowDlgEdit3 (szTitle, szMsg, szField1, szField2, szField3, szMyse, szMyna, szMypa);
if (nResult = BACK) then
goto SelectType;
else
if (szMyse = "") then
MessageBox("请输入服务器名或IP地址",INFORMATION);
goto Dlg_SdShowDlgEdit3;
elseif (szMyna = "") then
MessageBox("请输入数据库登录用户名",INFORMATION);
goto Dlg_SdShowDlgEdit3;
elseif (szMypa = "") then
MessageBox("请输入数据库登录密码",INFORMATION);
goto Dlg_SdShowDlgEdit3;
endif;
endif;
endif;
//NNLL修改完毕

添加OnEnd函数生成数据库

//NNLL开始添加函数
function OnEnd()
string sztemp;
string szFileNa;
STRING szCmdLine,szWaitTxt;
begin
if !MAINTENANCE then //非维护性代码,即只在安装时执行
//修改ini文件
szFileNa = TARGETDIR + "\\config.ini";
sztemp = "LogPass = " + szMypa;
FileInsertLine (szFileNa, sztemp, 3, REPLACE);
sztemp = "ServerName = " + szMyse;
FileInsertLine (szFileNa, sztemp, 4, REPLACE);
sztemp = "LogId = " + szMyna;
FileInsertLine (szFileNa, sztemp, 5, REPLACE);

//修改nnll.sql
szFileNa = TARGETDIR + "\\mydata\\nnll.sql";
sztemp = "CREATE DATABASE [WLpalestra] ON (NAME = N'homelandj_Data', FILENAME = N'" + TARGETDIR + "\\mydata\\homelandj.MDF' , SIZE = 5, FILEGROWTH = 10%) LOG ON (NAME = N'homelandj_Log', FILENAME = N'" + TARGETDIR + "\\mydata\\homelandj_log.LDF' , FILEGROWTH = 10%)";
FileInsertLine (szFileNa, sztemp, 1, REPLACE);
sztemp = "FROM DISK = '" + TARGETDIR + "\\mydata\\nnll.bak'";
FileInsertLine (szFileNa, sztemp, 44, REPLACE);

//处理数据库
if bvType then
//MessageBox("服务器",INFORMATION);
szWaitTxt=" 正在创建"+@PRODUCT_NAME+"所需数据库....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
//szCmdLine = "-U "+szMyna+" -P "+szMypa+" -S "+szMyse+" -Q \"exec sp_attach_db N'GBWZ' , N'"+TARGETDIR ^"\\wzgldata\\GBWZ_Data.mdf'\"";
szCmdLine = "-U "+szMyna+" -P "+szMypa+" -S "+szMyse+" -E -i \"" + TARGETDIR + "\\nnll.sql\"";
//MessageBox(szCmdLine,INFORMATION);
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("数据库创建失败!请确认您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE);
endif;
endif;
endif;
end;

从红色的“//修改nnll.sql”开始就是生成数据库了,因为要生成数据库,所以要调用一个sql文件,这个sql文件我要copy到用户的机器上,我要把sql文件里面对应的生成数据库两个文件的路径替换,调用osql.exe执行sql文件生成数据库

这个方法很麻烦,对不对?

现在用installshield11.5,生成数据库很方便.

数据库的生成,三步:

1、写sql脚本,这个是肯定的啊,要写SQL脚本生成数据库的

2、设置进入Server Configuration->SQL Scripts,设置数据库连接和脚本信息

①右击SQL Scripts,New SQL Connection,添加数据库连接,如下图:


这里设置的Catalog Name、LoginID、password是默认的,在安装程序进行的时候,会生成这样的界面,用户可以自己修改:


这个界面相当于在installshield 6.3里的那个收集数据库信息的Dlg_SdShowDlgEdit3对话框,现在是由is自动生成的,由is自动生成的这个对话框的下一步,是用于检测数据库的连接状态的

②右击SQLConnection,Import script files,添加sql脚本,选择Text Replacement标签,在这里设置数据库的路径,如图:

这里的设置相当于在installshield 6.3里在OnEnd函数里的手工替换,这里我把“d:\”替换成“<TARGETDIR>\database\”,因为在sql脚本里,我写了把数据库的两个文件放在d:\,我现在想把数据库生成在用户安装目录下的database文件夹

3、修改脚本,添加安装方式,如果用户安装服务器端程序,生成数据库,如果用户安装的是客户端程序,跳过数据库的安装

//NNLL加入判断,安装的是服务器还是工作站
SelectType:
szMsg="请选择安装的计算机用于:" ;
bvCheck1 = TRUE;
bvCheck2 = FALSE;
bvType = TRUE;
nResult = AskOptions ( EXCLUSIVE , szMsg , "服务器" , bvCheck1 , "工作站" , bvCheck2 );
if (nResult = BACK) goto Dlg_SdLicense2;
if bvCheck2 = TRUE then
//工作站,注册表项server=0
bvType = FALSE;
else
//服务器,注册表项server=1
bvType = TRUE;
endif;
//NNLL修改完毕

if bvType = TRUE then
Dlg_SQLServer: //数据库连接
nResult = OnSQLServerInitialize( nResult );
if( nResult = BACK ) goto Dlg_SdFeatureTree;

Dlg_ObjDialogs: //测试数据库连接
nResult = ShowObjWizardPages( nResult );
if (nResult = BACK) goto Dlg_SQLServer;
endif;

看,installshield12就这样生成数据库了,比6.3容易很多很多很多,对不对?

分享到:
评论

相关推荐

    Installshield for VC++ 6.0

    《Installshield for VC++ 6.0:搭建与部署C++ 6.0应用程序的宝典》 在软件开发领域,Visual C++ 6.0是经典且深受开发者喜爱的编程环境,它提供了强大的C++编译器和丰富的开发工具。然而,开发出的程序如何有效地...

    Installshield for VC++ 6.0 安装包制作工具

    VC++6.0安装包制作工具,用于发布自己开发好的程序。该InstallShield是专门为Microsoft Visual C++6定制的,所以从Visual C++6开发环境中直接运行InstallShield更快捷方便。  当用户用Visual C++6调试好应用程序后...

    installshield for vc6.0详细教材

    《InstallShield for VC6.0详细教材》是一份专为Visual C++ 6.0开发者设计的详尽指南,旨在帮助他们掌握如何使用InstallShield工具将自己编写的程序打包成专业级的安装软件。这份教材包含两部分:《51CTO下载-...

    InstallShield Professional 6.0 汉化版解压密码

    在探讨“InstallShield Professional 6.0 汉化版解压密码”这一主题时,首先需要明确几个关键概念:InstallShield是一款广泛应用于软件安装包制作的专业工具;Professional 6.0是其某一版本;汉化版指的是经过本地化...

    InstallShield for vc6.0应用程序发布工具

    《InstallShield for VC6.0:打造专业级的应用程序发布体验》 InstallShield是一款历史悠久且广泛应用的安装制作软件,尤其在Visual C++ 6.0(简称VC6.0)时代,它是开发者们用于创建安装程序和部署应用程序的首选...

    INSTALLSHIELD VC6

    **描述:VC6.0发布程序,生成安装包工具,INSTALLSHIELD FOR VC++6.0** 在软件开发过程中,发布阶段是至关重要的,它涉及到将编译好的应用程序打包成易于用户安装和卸载的格式。`INSTALLSHIELD` 是一款著名的安装包...

    InstallShield5.1forVC6.0.exe

    VC++6.0安装包定制版InstallShield,直接可以导入VC工程文件,方便快捷。

    install shield for vc++6.0(1)

    install shield for vc++6.0 从光盘拷下来的,因为太大所以分成两个,只要解压后放在一个文件夹就可以安装了,不收分。保证可安装。

    Installshield 12 中文系列教程之 配置服务(一)数据库

    InstallShield 12是该系列的一个版本,它提供了丰富的功能来满足各种安装需求,包括配置服务和数据库的集成。本教程将深入探讨如何在InstallShield 12中配置服务,并特别关注与数据库的交互。 首先,我们来看服务...

    installshield辅助小程序_部署Mysql数据库

    针对"installshield辅助小程序_部署Mysql数据库"这个主题,我们来深入探讨一下如何利用InstallShield工具进行MySQL数据库的部署,以及如何通过脚本管理和优化这一过程。 InstallShield是一款强大的安装包制作工具,...

    InstallShield Professional 6.0

    《InstallShield Professional 6.0:安装程序制作的里程碑》 InstallShield Professional 6.0,作为软件安装领域的里程碑,是开发人员和系统管理员的重要工具,它为创建、管理和部署软件提供了强大的支持。这款产品...

    InstallShield 12 中文教程

    附带的文档《附]Installshield入门指南.doc》和《Installshield12应用教程.doc》将深入讲解这些步骤,并提供实际操作的指导。学习这些文档可以帮助你更有效地使用InstallShield 12,理解如何将J2EE应用与数据库集成...

    installshield12离线安装

    描述中提到的"installshield12离线安装时所必须的补丁"是指在进行离线安装时,需要确保包含所有最新的补丁和更新。这些补丁可能包括安全性修复、功能增强或兼容性改进,以确保InstallShield 12在安装时是最新且稳定...

    用InstallShield制作数据库软件安装包.pdf

    用InstallShield制作数据库软件安装包,PDF格式。

    Installshield 12 中文系列教程之 配置服务(一)数据库.pdf

    在本章节中,作者详细介绍了Installshield 12提供的数据库配置功能,包括但不限于连接SQL服务器、导入数据库模型与数据、设置SQL服务器属性等内容。这对于那些需要将数据库作为应用程序一部分进行部署的开发者来说尤...

    InstallShield 12 (豪华版)注册机跟中文详细教程

    截图详细教你破解InstallShield 12,跟着步骤操作即可 有中文教程教你如何使用该软件

    installshield数据库部署

    - **连接设置**:在Installshield中设置新的数据库连接,可以通过指定服务器名称(如`(local)`表示本地服务器)、选择身份验证方式(例如SQL Server身份验证,默认使用`SA`账号),以及设置其他必要参数来实现。...

    Installshield 12 中文教程

    《Installshield 12 中文教程——探索Basic MSI项目的奥秘》 Installshield是一款业界领先的安装制作工具,尤其在创建Windows Installer(MSI)包方面,它提供了强大的功能和友好的用户界面。本教程主要围绕...

Global site tag (gtag.js) - Google Analytics