使用InstallShield制作ASP安装程序(1)

网络整理 - 07-26
我现在在做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 ---