当前位置:中国星空学习网首页>网络编程>ASP>正文  
使用 InstallShield 制作 ASP 安装程序

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

下面是建立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;

///////////////////////////////////////////////////////////////////////////////

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

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

 

上一篇: ASP 封装成DLL一些注意事项
下一篇: 一起特殊中文全文检索问题的解决
站内公告
栏目导航
 Windows系统
 Linux/DOS
 办公应用
 工具软件
 图形图象
 网络应用
 安全防御
 网络编程
 软件教程
 实用技术
最新文章
中国星空图片网
·人体艺术
·性感美眉
·生活自拍
·幽默搞笑
·超级帅哥
·精彩万花筒
·梦幻景色
中国星空探索网
·神秘追踪 灵异接触
·鬼故事 灵异空间 图片
·未解之谜 探索宇宙
中国星空两性网
·两性图文 我的性事 情人 成人幽默
·性爱技巧 两性测试 性爱误区
·性事花边 生育避孕 性保健 性疾病
·两性生理 文化 讨论 心理 知识
·爱人同志 非常男女 一夜情
中国星空算网命
·手机吉凶 QQ号码吉凶 周公解梦
·塔罗牌测试 狗年运程
·关公灵签 紫薇斗数 八字排盘
·测试:你的成功指数有多少
·测验你的家庭是否美满?
·面相: 面型 眼睛 耳朵 口唇
·手相:拉你一把奶油桂花手
·测试:你能成为大富翁吗?
联系方式 设为首页
中国星空旗下---中国星空学习网    Copyright 2005-2050 Year   xx.happy369.com  Networks.All rights reserved
中国星空网所有内容均来源于网络,版权属于原作者,如侵犯到您的权益,请与我们联系,我们将尽快予以删除或处理。
中国星空不承担由于内容的合法性及健康性所引起的一切争议和法律责任。
陕ICP备05011765号 联系我们 
《女人如烟》--演唱:魏佳艺