html5中文学习网

您的位置: 首页 > 网络编程 > ASP编程 » 正文

用ASP制作InstallShield安装程序(3)_ASP教程_编程技术

[ ] 已经帮助:人解决问题
installshield|程序
  ///////////////////////////////////////////////////////////////////////////////
  //
  // 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.
  //
q4RHTML5中文学习网 - HTML5先行者学习网
q4RHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助