新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → [转帖]看人家用使用InstallShield制作ASP安装程序 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 7329 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]看人家用使用InstallShield制作ASP安装程序 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     愚者 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:愚者
      等级:计算机学士学位
      文章:259
      积分:2375
      门派:XML.ORG.CN
      注册:2004/10/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给愚者发送一个短消息 把愚者加入好友 查看愚者的个人资料 搜索愚者在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看愚者的博客楼主
    发贴心情 [转帖]看人家用使用InstallShield制作ASP安装程序

    作者:中国论坛网收集 来源:http://www.51one.net 加入时间:2004-7-23  

    我现在在做ASP的安装程序,这样可以方便用户的使用。我使用的InstallShield版本是InstallShield Professional—Standard Edition6.3。
      我没有用过这个东东,问题如下:

    问题一
      通过Project Wizard-generated script 做好了COPY打包工作。可是6.3版本的好象不支持主体Program...Endprogram,因为我看COPY打包的Script脚本就是通过两个Fuction实现的。所以我的脚本加不进去,除非在这两个Fuction中调用!请问是不是6.3版本不能使用Program...Endprogram,如果可以使用的话,应该如何去用?

    问题二
      想在COPY完ASP程序后直接实现IIS的设置,也就是通过安装程序就可以完成,不需要手动设置,请问怎样去实现呢?

    以下就是我用Project Wizard-generated script 做好的两个Fuction,他们不用调用也不用声明定义就自动执行,真是搞不懂呀!我的Script该加在什么地方呢?
    // Include header files
        
    #include "ifx.h"
    function OnFirstUIBefore()
        number  nResult,nSetupType;
        string  szTitle, szMsg;
        string  szLicenseFile, szQuestion;
        string  szName, szCompany, szSerial;
        string  szTargetPath;
        string  szDir;
        string  szComponents, szTargetdir;
        number  nLevel;
        LIST    listStartCopy;
        number  nvSize;
    begin
        nSetupType = TYPICAL;
        TARGETDIR = "C:"^"inetpub" ^"wwwroot" ^@PRODUCT_NAME;
        szDir = TARGETDIR;
        szName    = "";
        szCompany = "";
        szSerial = "";

    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_SdRegisterUserEx:
        szMsg  = "";
        szTitle = "";
        nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );
        if (nResult = BACK) goto Dlg_SdLicense;

    Dlg_SdAskDestPath:
        szTitle = "";
        szMsg  = "please select setup folder";
        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_ObjDialogs:
        nResult = ShowObjWizardPages(nResult);
        if (nResult = BACK) goto Dlg_SdComponentTree;
        
    Dlg_SdStartCopy:
        szTitle = "";
        szMsg  = "";
        listStartCopy = ListCreate( STRINGLIST );
        nResult = SdStartCopy( szTitle, szMsg, listStartCopy );
        ListDestroy(listStartCopy);      
        if (nResult = BACK) goto Dlg_ObjDialogs;

        // setup default status
        SetStatusWindow(0, "");
        Enable(STATUSEX);
        StatusUpdate(ON, 100);
        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
        szAppPath = TARGETDIR;
        RegDBSetItem(REGDB_APPPATH, szAppPath);
        RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
    end;
    // --- include script file section ---

    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()在文件复制结束后运行.


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    http://photo.cnitv.com/PicLib/Pictures/Pi_21377.gif
    人生的意义不在马到成功,而在于不断求索,奋力求成。每一件有意义的事都需要不得我们以坚强的信念去完成,这样,我们的生活才会更加充实,意志更加坚强。
    人与人之间虽然相隔很近,但是心却离得很远!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/7 17:45:00
     
     愚者 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:愚者
      等级:计算机学士学位
      文章:259
      积分:2375
      门派:XML.ORG.CN
      注册:2004/10/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给愚者发送一个短消息 把愚者加入好友 查看愚者的个人资料 搜索愚者在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看愚者的博客2
    发贴心情 
    下面是建立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 虚拟目录nn 例: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;

    ///////////////////////////////////////////////////////////////////////////////
    //
    ///////////////////////////////////////////////////////////////////////////////
    //
    // 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.
    //

    ----------------------------------------------
    http://photo.cnitv.com/PicLib/Pictures/Pi_21377.gif
    人生的意义不在马到成功,而在于不断求索,奋力求成。每一件有意义的事都需要不得我们以坚强的信念去完成,这样,我们的生活才会更加充实,意志更加坚强。
    人与人之间虽然相隔很近,但是心却离得很远!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/7 17:46:00
     
     愚者 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:愚者
      等级:计算机学士学位
      文章:259
      积分:2375
      门派:XML.ORG.CN
      注册:2004/10/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给愚者发送一个短消息 把愚者加入好友 查看愚者的个人资料 搜索愚者在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看愚者的博客3
    发贴心情 
    ////////////////////////////////////////////////////////////////////////////////
    //                                                                            
    //  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.
    //                                                                            
    //                                                                            
    //    File Name:  Setup.rul                                                  
    //                                                                            
    //  Description:  InstallShield script                                        
    //                                                                            
    //    Comments:  This template script performs a basic setup. With minor          
    //                modifications, this template can be adapted to create      
    //                new, customized setups.
    //
    ////////////////////////////////////////////////////////////////////////////////


    // Include header files
        
        #include "ifx.h" //DO NOT REMOVE
        
    ////////////////////// string defines ////////////////////////////

    //////////////////// installation declarations ///////////////////

    // ----- DLL function prototypes -----


        // your DLL function prototypes


    // ---- script function prototypes -----


        // your script function prototypes

        // your global variables

    //////////////////////////////////////////////////////////////////////////////
    //                                                                          
    //  FUNCTION:  OnFirstUIBefore                                            
    //                                                                          
    //  EVENT:      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  szDir;
        STRING  szfolder;
        STRING  szComponents, szTargetdir;
        NUMBER  nLevel;

    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));   
      
        //默认值设定
        TARGETDIR = "C:\Inetpub\wwwroot\WebApp";
        szDir = TARGETDIR;
        SHELL_OBJECT_FOLDER = @FOLDER_NAME;  
        svName    = "Daniel";
        svCompany = "N/A";
        svSerial = "111-1111111";

        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_SdRegisterUserEx:
        szMsg  = "";
        szTitle = "";
        nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial );
        //验证序列号
        if (svSerial !="111-1111111") then
        MessageBox ("InValid Serial!",WARNING);
        goto Dlg_SdRegisterUserEx;
        endif;
        if (nResult = BACK) goto Dlg_SdLicense;

        Dlg_SdAskDestPath:
        szTitle = "";
        szMsg  = "";
        nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );
        TARGETDIR = szDir;
        if (nResult = BACK) goto Dlg_SdRegisterUserEx;

        Dlg_SdComponentTree:
        if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SdAskDestPath;
        szTitle    = "";
        szMsg      = "";
        szTargetdir = TARGETDIR;
        szComponents = "";
        nLevel = 2;
        if (nSetupType = CUSTOM) then
    nResult = SdComponentTree(szTitle, szMsg, szTargetdir, szComponents, nLevel);
    if (nResult = BACK) goto Dlg_SdAskDestPath;  
        endif;

        Dlg_SdSelectFolder:
        szfolder = SHELL_OBJECT_FOLDER;
        szTitle    = "";
        szMsg      = "";
        nResult    = SdSelectFolder( szTitle, szMsg, szfolder );
        SHELL_OBJECT_FOLDER = szfolder;
        if (nResult = BACK) goto Dlg_SdComponentTree;
        
      
        // setup default status
        SetStatusWindow(0, "");
        Enable(STATUSEX);
        StatusUpdate(ON, 100);

        return 0;

    end;
    //////////////////////////////////////////////////////////////////////////////
    //
    //  FUNCTION:  OnFirstUIAfter
    //
    //  EVENT:      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 = TARGETDIR ^"mkwebdir.vbs "+"-c localhost -w 1 -v WebApp," + TARGETDIR ;
        if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) then
        MessageBox ("不能建立WEB 虚拟目录.",SEVERE);
        endif;
        Disable(STATUSEX);
        bOpt1 = FALSE;
        bOpt2 = FALSE;
        szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
        szMsg2 = "";
        szOption1 = "";
        szOption2 = "";
        szTitle    = "";
        SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2);
        return 0;
    end;

    //////////////////////////////////////////////////////////////////////////////
    //
    //  FUNCTION:  OnMaintUIBefore
    //
    //  EVENT:      MaintUIBefore event is sent 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 allowing end user to modify existing installation
    //              or uninstall application. After this function returns,
    //              ComponentTransferData is called to perform file transfer.
    //
    ///////////////////////////////////////////////////////////////////////////////
    function OnMaintUIBefore()
    NUMBER nResult,nLevel,nType;
    STRING szTitle,szMsg,svDir,szComponents,svResult,szCaption;
    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 );  
    // SetColor(BACKGROUND,RGB (0, 128, 128));
    // Enable( FULLWINDOWMODE );
    //    Enable( BACKGROUND );

    nType = MODIFY;

    Dlg_Start:
    Disable(BACKBUTTON);
    nResult = SdWelcomeMaint(szTitle, szMsg, nType);
    Enable(BACKBUTTON);

    Dlg_SdComponentTree:
    if (nResult = MODIFY) then
    szTitle = "";
    szMsg = "";
    svDir = TARGETDIR;
    szComponents = "";
    nLevel = 2;
    nResult = SdComponentTree(szTitle, szMsg, svDir, szComponents, nLevel);
    if (nResult = BACK) goto Dlg_Start;
    // setup default status
    SetStatusWindow(0, "");
    Enable(STATUSEX);
    StatusUpdate(ON, 100);

    elseif (nResult = REMOVEALL) then
    svResult = SdLoadString(IFX_MAINTUI_MSG);
    szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION);
    nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);
    if (nResult = IDCANCEL) then
    goto Dlg_Start;
    elseif(nResult = IDOK) then
    // setup default status
    SetStatusWindow(0, "");
    Enable(STATUSEX);
    StatusUpdate(ON, 100);

    //-->Remove all components
    ComponentRemoveAll();
    endif;
    elseif (nResult = REPAIR) then
    // setup default status
    SetStatusWindow(0, "");
    Enable(STATUSEX);
    StatusUpdate(ON, 100);

    //-->Reinstall Logged Components
    ComponentReinstall();
    endif;

    end;

    ///////////////////////////////////////////////////////////////////////////////
    //
    //  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 ---

    ----------------------------------------------
    http://photo.cnitv.com/PicLib/Pictures/Pi_21377.gif
    人生的意义不在马到成功,而在于不断求索,奋力求成。每一件有意义的事都需要不得我们以坚强的信念去完成,这样,我们的生活才会更加充实,意志更加坚强。
    人与人之间虽然相隔很近,但是心却离得很远!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/7 17:48:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/10 16:20:44

    本主题贴数3,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    136.719ms