熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 游戲開發 >> 正文

用InstallShield打包ASP程序的腳本

2022-06-13   來源: 游戲開發 
#include ifxh //不能移動
//////////////////////////////////////////////////////////////////////////////
// 用InstallShield 進行 ASP 軟件的打包和自動安裝 
// 原創作者: 賈俊 (Jaron)
// 網址: 
// 郵件: 
// 首次發表於網易ChinaASPASPHouse
//////////////////////////////////////////////////////////////////////////////
// 功能
// 文件復制
// 可選自動設置獨立站點運行(設置IIS)
// 可選自動設置虛擬站點運行(設置IIS)
// 設置目錄可讀可寫及可運行腳本
// 自動創建ODBC
// 自動創建或附加MDF格式的SQL數據庫 並優化
// 自動安裝 ScriptEncode 解碼程序
// 本文僅列出了 InstallShield 的 Script 部分還有兩個 VBS 文件及其他設置
// 測試過程中有任何問題請來 ;編程空間版 討論
//////////////////////////////////////////////////////////////////////////////
prototype CreateDataBase(STRINGSTRINGSTRING);
prototype CreateWebSite(STRINGSTRING); // 創建 IIS 站點
prototype CreateVirtualDir(STRING); // 創建虛擬目錄

//////////////////////////////////////////////////////////////////////////////
// 
// 函數: 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 nResultnSetupTypenOptsvEditsvEdit;
STRING szTitle szMsgszBmpPath;
STRING szLicenseFile szQuestion;
STRING szServerIPszServerPortszServerIPDefaultszServerPortDefault;
STRING szSQLsvrszSQLusrszSQLpwdsvSQLsvrsvSQLusrsvSQLpwd;
STRING svName svCompany svSerial;
STRING szFileszTargetPathszDirszfolder;
STRING szComponents szTargetdir;
STRING szFieldszField;
STRING szDefaultsvResult;
OBJECT piisObj;
LIST listlistStartCopy;
NUMBER nLevelnvSize;
begin 

szBmpPath=C:^temp^leftbmp;
DialogSetInfo (DLG_INFO_ALTIMAGE szBmpPath TRUE); // 設置左邊的圖片
//To Do: if you want to enable background window title and caption bar title 
//SetTitle( @TITLE_MAIN  WHITE );
//SetTitle( @TITLE_CAPTIONBAR  BACKGROUNDCAPTION ); 
//Enable( FULLWINDOWMODE ); 
//Enable( BACKGROUND ); 
//SetColor(BACKGROUNDRGB (  )); 

//默認值設定
TARGETDIR = C:^inetpub^JaronSoft^@FOLDER_NAME; 
szDir = TARGETDIR;
SHELL_OBJECT_FOLDER = @FOLDER_NAME; 
svName = 試用版用戶;
svCompany = JDinfo Network;
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 ^ licensetxt;
szTitle = 許可協議;
szMsg = ;
szQuestion = ;
nResult = SdLicense( szTitle szMsg szQuestion szLicenseFile );
if (nResult = BACK) goto Dlg_SdWelcome;

Dlg_SdShowInfoList://readme文件 對話框
szFile = SUPPORTDIR ^ infolisttxt;
list = ListCreate( STRINGLIST );
ListReadFromFile( list szFile );
szTitle = README;
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)<) then
//goto Dlg_SdRegisterUserEx;
//endif;
//檢查序列號完畢
Dlg_SdAskDestPath://安裝位置 對話框
szTitle = 檢查序列號;
szMsg = ;
nResult = SdAskDestPath( szTitle szMsg szDir  );
TARGETDIR = szDir;
if (nResult = BACK) goto Dlg_SdRegisterUserEx;

Dlg_SetupType: //安裝類型 對話框
nSetupType = TYPICAL; 
szTitle = 安裝類型;
szMsg = 請選擇您需要按哪種方式安裝;        
nResult = SetupType ( szTitle  szMsg    nSetupType   );
if (nResult = BACK) then
 goto Dlg_SdAskDestPath;
else
 nSetupType = nResult;
 if (nSetupType != CUSTOM) then
  szTargetPath = TARGETDIR;
  nvSize = ;
  ComponentCompareSizeRequired(MEDIAszTargetPathnvSize);
  if (nvSize != ) 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 = ;
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_SelMode ://設置數據庫服務器 對話框
szTitle = 設置+@PRODUCT_NAME+的運行模式;
szMsg = 請選擇軟件運行的方式極力推薦使用獨立站點方式運行;
szField=獨立站點方式運行(自動創建新站點)
szField=虛擬目錄方式運行(自動創建虛擬目錄);
svEdit=TRUE;
svEdit=FALSE;
SetDialogTitle(DLG_ASK_TEXTszTitle); 
//DialogSetInfo ( DLG_INFO_CHECKSELECTION  );  
nOpt = EXCLUSIVE ;
nResult = AskOptions (nOptszMsgszFieldsvEditszFieldsvEdit);
if (nResult = BACK) goto Dlg_SdSelectFolder;
if (svEdit=FALSE) goto Dlg_SdStartCopy;

Dlg_AskText ://設置數據庫服務器 對話框
szTitle = 設置IIS信息服務及數據庫服務器;
szMsg = 現在開始設置IIS系統;
szQuestion=    請輸入本服務器的主機名或IP地址安裝程序將按照您提供的資料設置IIS信息服務如果您沒有填寫安裝程序將自動跳過站點的創建!;
szServerIP=地址;
szServerPort=端口;  
szServerIPDefault=;
szServerPortDefault=;
SetDialogTitle(DLG_ASK_TEXTszTitle);
nResult=SdShowDlgEdit (szTitle szQuestionszServerIPszServerPortszServerIPDefaultszServerPortDefault);
if (nResult = BACK) goto Dlg_SelMode;

Dlg_AskSQL ://設置數據庫服務器 對話框
szTitle = 設置數據庫;
szMsg = 現在開始設置Microsoft SQL Server數據庫系統;
szQuestion=    請輸入SQL SERVER數據庫服務器的用戶名和密碼安裝程序將按照您上步提供的IP地址和下面的用戶名和密碼創建和優化數據庫系統如果您提供的用戶名和密碼是錯誤的安裝程序將自動跳過數據的設置!;
szSQLsvr=主機名;
szSQLusr=用戶名;
szSQLpwd=密碼;  
svSQLsvr=localhost;
svSQLusr=sa;
szSQLpwd=;
SetDialogTitle(DLG_ASK_TEXTszTitle);
nResult=SdShowDlgEdit (szTitle szQuestionszSQLsvrszSQLusrszSQLpwdsvSQLsvrsvSQLusrsvSQLpwd);
if (nResult = BACK) goto Dlg_SelMode;

Dlg_SdStartCopy://開始復制文件 對話框
szTitle = 開始復制文件;
szMsg = 點擊下一步開始復制文件;
listStartCopy = ListCreate( STRINGLIST );
ListAddString(listStartCopy用戶名+svNameAFTER);
ListAddString(listStartCopy公司名稱+svCompanyAFTER);
ListAddString(listStartCopy序列號+svSerialAFTER);
ListAddString(listStartCopy目標目錄+szDirAFTER);
if (svEdit=TRUE) then
 ListAddString(listStartCopyIP地址+szServerIPDefaultAFTER);
 ListAddString(listStartCopy端口號+szServerPortDefaultAFTER);
endif;
ListAddString(listStartCopy請確認您填寫的信息按下一步開始復制文件AFTER);
nResult = SdStartCopy( szTitle szMsg listStartCopy ); 
ListDestroy(listStartCopy);
if (nResult = BACK) goto Dlg_AskText;
// setup default status
SetStatusWindow( );
Enable(STATUSEX);
StatusUpdate(ON );
if (svEdit=TRUE) then 
 CreateWebSite(szServerIPDefaultszServerPortDefault);  // 開始創建 IIS 站點
endif;
if (svEdit=TRUE) then 
 CreateVirtualDir(NetOA);  // 開始創建 IIS 站點
endif;
CreateDataBase(svSQLsvrsvSQLusrsvSQLpwd); // 創建和優化數據庫

return ;
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 szTitleszMsg szMsg szOption szOptionszCmdLine;
NUMBER bOpt bOpt;

begin
//set_vod_liveaddress();

szCmdLine = SUPPORTDIR ^SCECHSEXE;
if (LaunchAppAndWait(szCmdLine  /qWAIT) < ) then
 MessageBox (不能安裝解碼程序請聯系供應商SEVERE);
endif;

Disable(STATUSEX);
bOpt = FALSE;
bOpt = FALSE;
szMsg = SdLoadString(IFX_SDFINISH_MSG);
szMsg = 請浏覽本主機WEB服務器上的 +@PRODUCT_NAME+ 虛擬目錄 例&//Localhost/
szOption = ;
szOption = ;
szTitle = @PRODUCT_NAME+安裝完成;
SdFinishEx(szTitleszMsgszMsgszOptionszOptionbOptbOpt);

szCmdLine = //LocalHost
//if (LaunchApp(PROGRAMFILES ^Internet Explorer^IEXPLOREEXE szCmdLine) < ) then
//MessageBox (不能打開浏覽器SEVERE);
//endif;

return ;
end;


//////////////////////////
// 創建IIS站點
//////////////////////////
function CreateWebSite(szServerIPDefaultszServerPortDefault)
STRING szCmdLineszWaitTxt;
begin
 if ((szServerIPDefault = ) || (szServerPortDefault = )) then 
  MessageBox (您沒有設定+@PRODUCT_NAME+運行的服務器IP地址或端口!!IIS信息服務設置失敗!請自行創建IIS站點並將主目錄設為+TARGETDIRSEVERE);
 else
  szWaitTxt= 正在創建IIS和設置站點;
  SdShowMsg (szWaitTxt TRUE);
  Delay();
  szCmdLine = SUPPORTDIR ^mkwsitevbs+ +TARGETDIR+ +szServerIPDefault+ +szServerPortDefault+ +@PRODUCT_NAME;  
  if (LaunchAppAndWait(WScriptexe szCmdLineWAIT) < ) then
  MessageBox (不能建立WEB 虛擬目錄沒有找到 WScriptexe 或執行腳本錯誤SEVERE);
  endif;
  SdShowMsg (szWaitTxt FALSE);
 endif;
 return ;
end;

//////////////////////////
// 創建虛擬目錄
//////////////////////////
function CreateVirtualDir(VirtualFolder)
STRING szCmdLineszWaitTxt;
begin
 if (VirtualFolder = ) then 
  MessageBox (沒能讀取到虛擬目錄的名稱!請聯系系統供應商!+TARGETDIRSEVERE);
 else
  szWaitTxt= 正在創建+@PRODUCT_NAME+的虛擬目錄;
  SdShowMsg (szWaitTxt TRUE);
  Delay();
  szCmdLine = SUPPORTDIR ^mkwebdirvbs +  v \+VirtualFolder+\\+ TARGETDIR+\ ;
  if (LaunchAppAndWait(WScriptexe szCmdLineWAIT) < ) then
   MessageBox (不能建立WEB 虛擬目錄沒有找到 WScriptexe 或執行腳本錯誤SEVERE);
  endif;
  SdShowMsg (szWaitTxt FALSE);
 endif;
 return ;
end;

//////////////////////////
// 創建和優化數據庫
//////////////////////////
function CreateDataBase(svSQLsvrsvSQLusrsvSQLpwd)
STRING szCmdLineszWaitTxt;
begin
 szWaitTxt= 正在創建+@PRODUCT_NAME+所需數據庫;
 SdShowMsg (szWaitTxt TRUE);
 Delay();      
 szCmdLine = /U +svSQLusr+ /P +svSQLpwd+ /S +svSQLsvr+ /Q \exec sp_attach_db NOASystem  N+SUPPORTDIR ^OASystem_datamdf\;
 if (LaunchAppAndWait(osqlexe szCmdLineWAIT) < ) then
  MessageBox (數據庫創建失敗!請確您的系統中已安裝 Microsoft SQL Server  如仍無法解決請聯系系統供應商!SEVERE);
 endif;
 SdShowMsg (szWaitTxt FALSE);
 szWaitTxt= 正在優化+@PRODUCT_NAME+系統數據庫;
 SdShowMsg (szWaitTxt TRUE);
 Delay();      
 szCmdLine = /U +svSQLusr+ /P +svSQLpwd+ /S +svSQLsvr+ /Q \use OASystem ; exec sp_updatestats\;
 if (LaunchAppAndWait(osqlexe szCmdLineWAIT) < ) then
  MessageBox (數據庫優化失敗!您可以在 sql查詢分析器中執行 use OASystem ; exec sp_updatestats 完成!SEVERE);
 endif;
 SdShowMsg (szWaitTxt FALSE);
 return ;
end;

From:http://tw.wingwit.com/Article/program/yxkf/201401/30229.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.