关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>ASP>>正文|用ASP制作InstallShield安装程序(3)

用ASP制作InstallShield安装程序(3)

[ 来路:21kn.com    时间:2007-7-8 0:43:46    点击: ]

 

  ///////////////////////////////////////////////////////////////////////////////
  //
  // FUNCTION: OnMaintUIAfter
  //
  // EVENT: MaintUIAfter event is sent after file transfer, when end user runs
  // installation that has already been installed on the machine. Usually
  // this happens through Add/Remove Programs Applet.
  // In the handler installation usually displays UI that will inform
  // end user that maintenance/uninstallation has been completed successfully.
  //
  ///////////////////////////////////////////////////////////////////////////////
  function OnMaintUIAfter()
  STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
  NUMBER bOpt1, bOpt2;
  begin
  Disable(STATUSEX);
  bOpt1 = FALSE;
  bOpt2 = FALSE;
  szMsg1 = SdLoadString(IFX_SDFINISH_MAINT_MSG1);
  szMsg2 = "";
  szOption1 = "";
  szOption2 = "";
  szTitle = SdLoadString(IFX_SDFINISH_MAINT_TITLE);
  SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2);
  return 0;
  end;
  
  ///////////////////////////////////////////////////////////////////////////////
  //
  // FUNCTION: OnMoving
  //
  // EVENT: Moving event is sent when file transfer is started as a result of
  // ComponentTransferData call, before any file transfer operations
  // are performed.
  //
  ///////////////////////////////////////////////////////////////////////////////
  function OnMoving()
  STRING szAppPath;
  begin
  // Set LOGO Compliance Application Path
  // TO DO : if your application .exe is in a subfolder of TARGETDIR then add subfolder
  szAppPath = TARGETDIR;
  RegDBSetItem(REGDB_APPPATH, szAppPath);
  RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
  
  end;
  
  // --- include script file section ---
  
  
  function LoginSQL( szTitle,szSqlsvname,szSqluser,szSqlpassword )
  
  STRING szDlg, szTemp;
  NUMBER bDone, nId, nMessage, nTemp;
  INT hwndDlg;
  HWND hwndControl;
  begin
  szDlg = "DLG_LoginSQLSV";
  
  // record data produced by this dialog
  if (MODE=SILENTMODE) then
  SdMakeName( szAppKey, szDlg, szTitle, nLoginSQL );
  SilentReadData( szAppKey, "Result", DATA_NUMBER, szTemp, nId );
  if ((nId != BACK) && (nId != CANCEL)) then
  SilentReadData( szAppKey, "szSqlsvname", DATA_STRING, szSqlsvname, nTemp );
  SilentReadData( szAppKey, "szSqluser", DATA_STRING, szSqluser, nTemp );
  SilentReadData( szAppKey, "szSqlpassword", DATA_STRING, szSqlpassword, nTemp );
  endif;
  
  return nId;
  endif;
  
  // ensure general initialization is complete
  if (!bSdInit) then
  SdInit();
  endif;
  
  if (EzDefineDialog( szDlg, "", "",DLG_LoginSQLSV ) = DLG_ERR) then
  return -1;
  endif;
  
  // 在用户选择标准按钮前进行循环
  bDone = FALSE;
  
  while (!bDone)
  
  nId = WaitOnDialog( szDlg );//显示对话框
  hwndControl = GetDlgItem (hwndDlg, SD_EDIT_SQLSV_NAME);
  SetFocus (hwndControl);
  
  switch(nId)
  case DLG_INIT:
  CtrlSetText( szDlg, SD_EDIT_SQLSV_NAME, szSqlsvname );
  CtrlSetText( szDlg, SD_EDIT_SQLSV_USER, szSqluser );
  CtrlSetText( szDlg, SD_EDIT_SQLSV_PASSWORD, szSqlpassword );
  
  hwndDlg = CmdGetHwndDlg( szDlg );
  SdGeneralInit( szDlg, hwndDlg, STYLE_NORMAL, szSdProduct );
  
  //This function sets the caption for old style dialogs or
  //sets the text in the top banner area of win2k style dialogs
  SdSetDlgTitle(szDlg, hwndDlg, szTitle);
  case SD_EDIT_SQLSV_NAME:
  nMessage = CtrlGetSubCommand( szDlg );
  if( nMessage = EDITBOX_CHANGE ) then
  CtrlGetText( szDlg, SD_EDIT_SQLSV_NAME, szSqlsvname );
  endif;
  case SD_EDIT_SQLSV_USER:
  nMessage = CtrlGetSubCommand( szDlg );
  if( nMessage = EDITBOX_CHANGE ) then
  CtrlGetText( szDlg, SD_EDIT_SQLSV_USER, szSqluser );
  endif;
  case SD_EDIT_SQLSV_PASSWORD:
  nMessage = CtrlGetSubCommand( szDlg );
  if( nMessage = EDITBOX_CHANGE ) then
  CtrlGetText( szDlg, SD_EDIT_SQLSV_PASSWORD, szSqlpassword );
  endif;
  case OK:
  nId = NEXT;
  bDone = TRUE;
  
  case BACK:
  nId = BACK;
  bDone = TRUE;
  
  case DLG_ERR:
  SdError( -1, "SdWelcome" );
  nId = -1;
  bDone = TRUE;
  
  case DLG_CLOSE:
  SdCloseDlg( hwndDlg, nId, bDone );
  
  default:
  // check standard handling
  if (SdIsStdButton( nId ) && SdDoStdButton( nId )) then
  bDone = TRUE;
  endif;
  endswitch;
  
  endwhile;
  
  EndDialog( szDlg );
  ReleaseDialog( szDlg );
  
  SdUnInit( );
  
  // record data produced by this dialog
  SdMakeName( szAppKey, szDlg, szTitle, nLoginSQL );
  SilentWriteData( szAppKey, "szSqlsvname", DATA_STRING, szSqlsvname, 0 );
  SilentWriteData( szAppKey, "szSqluser", DATA_STRING, szSqluser, 0 );
  SilentWriteData( szAppKey, "szSqlpassword", DATA_STRING, szSqlpassword, 0 );
  SilentWriteData( szAppKey, "Result", DATA_NUMBER, "", nId );
  
  return nId;
  
  end;
  
  function exeSQLfile( szsqlfilename )
  STRING szCmdLine;
  NUMBER nTemp;
  begin
  szCmdLine = SUPPORTDIR ^"osql.exe";
  if (LaunchAppAndWait(SUPPORTDIR ^"osql.exe", szsqlfilename,WAIT) < 0) then
  MessageBox ("不能运行SQL安装文件.",SEVERE);
  endif;
  
  end;
  
  function modifdbdir()
  STRING szinstallfile;
  NUMBER nvResult,nvLineNumber;
  STRING szwindir,svReturnLine;
  NUMBER sn,nStartPos;
  STRING sz1,sz2,sznewdir;
  NUMBER nTemp;
  begin
  szinstallfile = TARGETDIR ^"install\\createdb.sql";
  //替换 DB文件的建立路径
  while (nvResult != END_OF_FILE)
  nvResult = FileGrep (szinstallfile, "D:\\cycdata\\", svReturnLine,nvLineNumber, RESTART);
  //FileDeleteLine(szodbcregfile, nvLineNumber, nvLineNumber);
  sn=StrLength (svReturnLine);
  nStartPos = StrFind(svReturnLine,"D:\\cycdata\\");
  StrSub (sz1, svReturnLine, 0, nStartPos);
  StrSub (sz2, svReturnLine, nStartPos+11, sn-nStartPos-11);
  sznewdir=sz1+TARGETDIR ^sz2;
  FileInsertLine(szinstallfile, sznewdir,nvLineNumber, REPLACE);
  sz1="";
  sz2="";
  sznewdir="";
  endwhile;
  
  end;
  
  //////////////////////////////////////////////////////////////////////////////
  //
  // FUNCTION: OnFileReadOnly
  //
  // EVENT: FileReadOnly event is sent during file transfer when a read-only
  // file is needs to be overwritten or removed.
  //
  // ARGUMENTS: File - full path of file that is marked as read-only.
  //
  // RETURN: ERR_YES - the file should be overwritten or removed.
  // ERR_NO - the file should not be modified.
  //
  ///////////////////////////////////////////////////////////////////////////////
  function OnFileReadOnly(File)
  begin
  return SdExceptions(READONLY, File);
  end;
  
  //////////////////////////////////////////////////////////////////////////////
  //
  // FUNCTION: OnFileReadOnly
  //
  // EVENT: FileReadOnly event is sent during file transfer when a read-only
  // file is needs to be overwritten or removed.
  //
  // ARGUMENTS: File - full path of file that is marked as read-only.
  //
  // RETURN: ERR_YES - the file should be overwritten or removed.
  // ERR_NO - the file should not be modified.
  //

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:用ASP制作InstallShield安装程序(4)  下一篇:用ASP制作InstallShield安装程序(2)

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号