html5中文学习网

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

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

[ ] 已经帮助:人解决问题
installshield|程序

   6.3版好象是用事件驱动的:
  //////////////////////////////////////////////////////
  //
  // 函数: OnFirstUIBefore
  //
  // 事件: FirstUIBefore event is sent when installation is run for the first
  // time on given machine. In the handler installation usually displays
  // UI allowing end user to specify installation parameters. After this
  // function returns, ComponentTransferData is called to perform file
  // transfer.
  //
  //////////////////////////////////////////////////////
  
  OnFirstUIBefore()是在某台电脑上第一次运行安装时执行.
  
  //////////////////////////////////////////////////////
  //
  // 函数: OnFirstUIAfter
  //
  // 事件: FirstUIAfter event is sent after file transfer, when installation
  // is run for the first time on given machine. In this event handler
  // installation usually displays UI that will inform end user that
  // installation has been completed successfully.
  //
  //////////////////////////////////////////////////////
  OnFirstUIAfter()在文件复制结束后运行.

   下面是建立Web文件和设置的例子需VBS文件(有虚拟目录设置,但没有权限设置).
  
  ////////////////////////////////////////////////////////////////////////////////
  //
  // IIIIIII SSSSSS
  // II SS InstallShield (R)
  // II SSSSSS (c) 1996-1999, InstallShield Software Corporation
  // II SS (c) 1990-1996, InstallShield Corporation
  // IIIIIII SSSSSS All Rights Reserved.
  //
  //
  // This code is generated as a starting setup template. You should
  // modify it to provide all necessary steps for your setup.
  //
  //
  // 文件名: Setup.rul
  //
  // 描述: InstallShield script
  //
  // 注释: This template script performs a basic setup. With minor
  // modifications, this template can be adapted to create
  // new, customized setups.
  //
  ////////////////////////////////////////////////////////////////////////////////
  
  
  // 包含的头文件
  
  #include "ifx.h" //不能移动
  
  ////////////////////// string defines ////////////////////////////
  
  //////////////////// installation declarations ///////////////////
  
  // ----- DLL function prototypes -----
  
  
  // your DLL function prototypes
  
  // ---- script function prototypes -----
  
  
  // your script function prototypes
  prototype CHK_serial(STRING,STRING);
  prototype RegODBC(STRING);
  prototype set_vod_liveaddress();
  // your global variables
  STRING szvodservername;
  STRING szliveservername;
  
  
  //////////////////////////////////////////////////////////////////////////////
  //
  // 函数: OnFirstUIBefore
  //
  // 事件: FirstUIBefore event is sent when installation is run for the first
  // time on given machine. In the handler installation usually displays
  // UI allowing end user to specify installation parameters. After this
  // function returns, ComponentTransferData is called to perform file
  // transfer.
  //
  ///////////////////////////////////////////////////////////////////////////////
  function OnFirstUIBefore()
  NUMBER nResult,nSetupType;
  STRING szTitle, szMsg;
  STRING szLicenseFile, szQuestion;
  STRING svName, sVCompany, svSerial;
  STRING szFile;
  STRING szTargetPath;
  STRING szDir;
  STRING szfolder;
  STRING szComponents, szTargetdir;
  //zy
  STRING szDefault,svResult;
  STRING sDBSERVERNAME;
  OBJECT piisObj;
  //zy
  NUMBER nLevel;
  LIST listStartCopy;
  LIST list;
  NUMBER nvSize;
  STRING msg;
  begin
  
  
  //To Do: if you want to enable background, window title, and caption bar title
  // SetTitle( @TITLE_MAIN, 24, WHITE );
  // SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION );
  // Enable( FULLWINDOWMODE );
  // Enable( BACKGROUND );
  // SetColor(BACKGROUND,RGB (0, 128, 128));
  
  
  
  nSetupType = TYPICAL;
  TARGETDIR = "D://"^"cyclone2000//";
  szDir = TARGETDIR;
  SHELL_OBJECT_FOLDER = @FOLDER_NAME;
  svName = "";
  svCompany = "";
  svSerial = "";
  
  Dlg_Start:
  // beginning of dialogs label
  
  Dlg_SdWelcome: //欢迎 对话框
  szTitle = "";
  szMsg = "";
  nResult = SdWelcome( szTitle, szMsg );
  if (nResult = BACK) goto Dlg_Start;
  
  Dlg_SdLicense://软件许可协议 对话框
  szLicenseFile = SUPPORTDIR ^ "license.txt";
  szTitle = "";
  szMsg = "";
  szQuestion = "";
  nResult = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile );
  if (nResult = BACK) goto Dlg_SdWelcome;
  
  Dlg_SdShowInfoList://readme文件 对话框
  szFile = SUPPORTDIR ^ "infolist.txt";
  list = ListCreate( STRINGLIST );
  ListReadFromFile( list, szFile );
  szTitle = "";
  szMsg = "";
  nResult = SdShowInfoList( szTitle, szMsg, list );
  ListDestroy( list );
  if (nResult = BACK) goto Dlg_SdLicense;
  
  Dlg_SdReGISterUserEx://用户信息 对话框
  szMsg = "";
  szTitle = "";
  nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial );
  if (nResult = BACK) goto Dlg_SdShowInfoList;
  //检查序列号
  if (CHK_serial(svCompany, svSerial)<0) then
  goto Dlg_SdRegisterUserEx;
  endif;
  //检查序列号完毕
  Dlg_SdAskDestPath://安装位置 对话框
  szTitle = "";
  szMsg = "";
  nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );
  TARGETDIR = szDir;
  if (nResult = BACK) goto Dlg_SdRegisterUserEx;
  
  Dlg_SetupType: //安装类型 对话框
  szTitle = "";
  szMsg = "";
  nResult = SetupType ( szTitle , szMsg , "" , nSetupType , 0 );
  if (nResult = BACK) then
  goto Dlg_SdAskDestPath;
  else
  nSetupType = nResult;
  if (nSetupType != CUSTOM) then
  szTargetPath = TARGETDIR;
  nvSize = 0;
  ComponentCompareSizeRequired(MEDIA,szTargetPath,nvSize);
  if (nvSize != 0) then
  MessageBox( szSdStr_NotEnoughSpace, WARNING );
  goto Dlg_SetupType;
  endif;
  endif;
  endif;
  
  Dlg_SdComponentTree: //对话框
  if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SetupType;
  szTitle = "";
  szMsg = "";
  szTargetdir = TARGETDIR;
  szComponents = "";
  nLevel = 2;
  if (nSetupType = CUSTOM) then
  nResult = SdComponentTree(szTitle, szMsg, szTargetdir, szComponents, nLevel);
  if (nResult = BACK) goto Dlg_SetupType;
  endif;
  
  Dlg_SdSelectFolder://对话框
  szfolder = SHELL_OBJECT_FOLDER;
  szTitle = "";
  szMsg = "";
  nResult = SdSelectFolder( szTitle, szMsg, szfolder );
  SHELL_OBJECT_FOLDER = szfolder;
  if (nResult = BACK) goto Dlg_SdComponentTree;
  
  Dlg_AskText ://设置数据库服务器 对话框
  szTitle = "设置数据库服务器";
  szMsg = "";
  szQuestion="请输入SQL Server(旋风2000)数据库服务器的主机名或IP地址";
  szDefault="192.168.0.1";
  SetDialogTitle(DLG_ASK_TEXT,szTitle);
  nResult = AskText (szQuestion, szDefault, svResult);
  sDBSERVERNAME = svResult;
  if (nResult = BACK) goto Dlg_SdSelectFolder;
  RegODBC(sDBSERVERNAME);
  
  Dlg_SdStartCopy://开始复制文件 对话框
  szTitle = "";
  szMsg = "";
  listStartCopy = ListCreate( STRINGLIST );
  //The following is an example of how to add a string(svName) to a list(listStartCopy).
  //eg. ListAddString(listStartCopy,svName,AFTER);
  nResult = SdStartCopy( szTitle, szMsg, listStartCopy );
  ListDestroy(listStartCopy);
  if (nResult = BACK) goto Dlg_AskText;
  // setup default status
  SetStatusWindow(0, "");
  Enable(STATUSEX);
  StatusUpdate(ON, 100);
  
  return 0;
  
  end;
  ///////////////////////////////////////////////////////////
  //
  // 函数: OnFirstUIAfter
  //
  // 事件: FirstUIAfter event is sent after file transfer, when installation
  // is run for the first time on given machine. In this event handler
  // installation usually displays UI that will inform end user that
  // installation has been completed successfully.
  //
  //////////////////////////////////////////////////////////
  function OnFirstUIAfter()
  STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,szCmdLine;
  NUMBER bOpt1, bOpt2;
  
  begin
  szCmdLine = SUPPORTDIR ^"mkwebdir.vbs "+"-c LocalHost -w 1 -v cyclone2000 -d "+ TARGETDIR ;
  if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) then
  MessageBox ("不能建立WEB 虚拟目录.",SEVERE);
  endif;
  set_vod_liveaddress();
  szCmdLine = SUPPORTDIR ^"odbc.reg";
  if (LaunchAppAndWait("regedit.exe", szCmdLine,WAIT) < 0) then
  MessageBox ("不能配置ODBC.",SEVERE);
  endif;
  Disable(STATUSEX);
  bOpt1 = FALSE;
  bOpt2 = FALSE;
  szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
  szMsg2 = "请浏览本主机WEB服务器上的 cyclone2000 虚拟目录/n/n 例:/n http://Localhost/cyclone2000/default.htm";
  szOption1 = "";
  szOption2 = "";
  szTitle = "旋风2000安装完成";
  SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2);
  
  szCmdLine = "http://LocalHost/cyclone2000/default.htm";
  if (LaunchApp(PROGRAMFILES ^"Internet Explorer"^"IEXPLORE.EXE", szCmdLine) < 0) then
  MessageBox ("不能打开浏览器.",SEVERE);
  endif;
  
  return 0;
  end;
  
  ////////////////////////////////////////////////////////

vxsHTML5中文学习网 - HTML5先行者学习网
vxsHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助