⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.rul

📁 随着计算机信息技术的飞速发展
💻 RUL
📖 第 1 页 / 共 2 页
字号:

SdProductName( @PRODUCT_NAME );

Enable( DIALOGCACHE );

return 0;
end;   
     
///////////////////////////////////////////////////////////////////////////////
// //
// Function: CheckRequirements //
// //
// Purpose: This function checks all minimum requirements for the //
// application being installed. If any fail, then the user //
// is informed and the setup is terminated. //
// //
///////////////////////////////////////////////////////////////////////////////
function CheckRequirements()
NUMBER nvDx, nvDy, nvResult;
STRING svResult;

begin

bWinNT = FALSE;
bIsShellExplorer = FALSE;

// Check screen resolution.
GetExtents( nvDx, nvDy );

if (nvDy < 480) then
MessageBox( @ERROR_VGARESOLUTION, WARNING );
abort;
endif;

// set 'setup' operation mode
bIs32BitSetup = TRUE;
GetSystemInfo( ISTYPE, nvResult, svResult );
if (nvResult = 16) then
bIs32BitSetup = FALSE; // running 16-bit setup
return 0; // no additional information required
endif;

// --- 32-bit testing after this point ---

// Determine the target system's operating system.
GetSystemInfo( OS, nvResult, svResult );

if (nvResult = IS_WINDOWSNT) then
// Running Windows NT.
bWinNT = TRUE;

// Check to see if the shell being used is EXPLORER shell.
if (GetSystemInfo( OSMAJOR, nvResult, svResult ) = 0) then
if (nvResult >= 4) then
bIsShellExplorer = TRUE;
endif;
endif;

elseif (nvResult = IS_WINDOWS95 ) then
bIsShellExplorer = TRUE;

endif;

end;     
///////////////////////////////////////////////////////////////////////////////
//
// Function: SetupFolders
//
//  Purpose: This function creates all the folders and shortcuts for the
//           setup.  This includes program groups and items for Windows 3.1.
//
///////////////////////////////////////////////////////////////////////////////
function SetupFolders()
 NUMBER nResult;
 STRING szProgramFolder, szItemName, szCommandLine, szWorkingDir, szIconPath;
 STRING szShortCutKey, szProgram, szParam,svTmp;
 NUMBER nIcon, nFlag;

begin
 szProgramFolder = @PRODUCT_NAME;
 if (CreateProgramFolder(szProgramFolder) < 0) then
    return -1;
 endif;
 //设置快捷方式的工作环境
 nIcon           = 0;
 szShortCutKey   = "";
 nFlag           = REPLACE;

 szWorkingDir    = TARGETDIR;
 szIconPath      = TARGETDIR+"\\"+@PRODUCT_KEY;
 szItemName      = @PRODUCT_NAME;
 szProgram       = szIconPath;
 LongPathToQuote(szProgram, TRUE);
 szCommandLine   = szProgram;
 //在开始菜单的程序组中增加启动该应用程序的快捷方式
 if (AddFolderIcon(szProgramFolder, szItemName, szCommandLine, szWorkingDir,
                   szIconPath, nIcon, szShortCutKey, nFlag) < 0) then
    return -1;
 endif; 
 //在桌面上增加启动该应用程序的快捷方式
 if (AddFolderIcon(FOLDER_DESKTOP, szItemName, szCommandLine, szWorkingDir,
                   szIconPath, nIcon, szShortCutKey, nFlag) < 0) then
    return -1;
 endif;
 
 szWorkingDir    = WINDIR;
 szIconPath      = SUPPORTDIR+"\\IsUninst.exe";
 szItemName      = "卸载"+@PRODUCT_NAME;
 svTmp			 = PROGRAMFILES+"InstallShield Installation Information\\"+PRODUCT_GUID+"\\setup.exe";
 LongPathToQuote(svTmp, TRUE);
 szParam         = svTmp;
 LongPathToShortPath(szParam);
 svTmp			 = COMMONFILES+"InstallShield\\engine\\6\\Intel 32\\ctor.dll";
 LongPathToShortPath(svTmp); 
 szProgram       = "RunDll32"+" "+ svTmp+",LaunchSetup";
 szCommandLine = szProgram + " " + szParam; 
 // 在开始菜单中设置卸载快捷方式
 if (AddFolderIcon(szProgramFolder, szItemName, szCommandLine, szWorkingDir,
                   szIconPath, nIcon, szShortCutKey, nFlag) < 0) then
    return -1;
 endif;

 nResult = CreateShellObjects( "" );
  
 if nResult <0 then 
 	return nResult;
 else   
    //显示安装完成目录       
 	ShowProgramFolder (szProgramFolder,SW_SHOW);
 	return nResult;
 endif;
end;    

///////////////////////////////////////////////////////////////////////////////
//
// Function: DeleteFolders
//
// Purpose: This function delete all the folders and shortcuts for the setup.
//             
///////////////////////////////////////////////////////////////////////////////
function DeleteFolders()  
 NUMBER nResult;
 STRING szProgramFolder, szItemName, szCommandLine, szWorkingDir, szIconPath;
 STRING szShortCutKey, szProgram, szParam;
 NUMBER nIcon, nFlag;
begin 
szProgramFolder = @PRODUCT_NAME; 

szItemName      = @PRODUCT_NAME;
if (DeleteFolderIcon (FOLDER_DESKTOP, szItemName) < 0) then
    return -1;
endif;

if (DeleteProgramFolder(szProgramFolder) < 0) then
    return -1;
endif;          

end;    

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Function: SetupRegistry                                                   //
//                                                                           //
//  Purpose: This function makes the registry entries for this setup.        //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
function SetupRegistry()
 //查询注册表的键名
 STRING szKey, szClass,szValue,svValue,KEY1;
 NUMBER nRootKey,nResult,nSize;     
 //具体查询键值
 STRING szItem;
 //系统调用的返回码
 NUMBER nReturn,nType;
 //要设定的键值  
 STRING nValue;
 //要得到的原有键值
 STRING nOldValue;
 //返回下面所有键值的链表
 LIST listName;  
 
 STRING szPath, szKeyName;

 begin   
 //************** 创建返回值链表,自动运行设定***********/ 
  listName=ListCreate(STRINGLIST);
  if(listName=LIST_NULL) then
    MessageBox("无法创建需要链表",SEVERE);
    abort;
  endif;
  szKey="SoftWare\\Miscrosoft\\Windows\\CurrentVersion\\explorer";
  szItem="NoDriverTypeAutorun";
  nValue= "0x000091000000";
  RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
  nReturn=RegDBQueryKey(KEY1,REGDB_NAMES,listName);
  if(nReturn<0)then
    MessageBox("RegDBQueryKey调用失败!",SEVERE);
  else
    nResult=ListFindString(listName,szItem);
    if(nResult<0) then
         MessageBox("listFindString调用失败!",SEVERE);
         return -1;
    elseif(nResult=END_OF_LIST)then
        if(RegDBSetKeyValueEx(szKey,szItem,REGDB_BINARY,nValue,-1)<0)then
            MessageBox("RegDBSetKeyValueEx调用失败!",SEVERE);
            abort;
        endif;
    elseif(nResult=0)then
        if(RegDBGetKeyValueEx (szKey, szItem, nType,nOldValue,nSize)<0) then   
            MessageBox("RegDBSetGeyValueEx调用失败!",SEVERE);
            abort;
        endif;  
        if(nOldValue!=nValue)then
              if(RegDBSetKeyValueEx(szKey,szItem,REGDB_BINARY,nValue,-1)<0)then
                  MessageBox(" RegDBSetKeyValueEx调用失败!",SEVERE);
                  abort;
              endif;
        endif;
    endif;
  endif;
  ListDestroy(listName);
  
  
  //数据库设定
  nRootKey = HKEY_LOCAL_MACHINE;
  if (RegDBSetDefaultRoot(nRootKey) < 0) then
    return -1;
  endif;  
  
  szKey="SoftWare\\BatchAPC v1.0";
  if (RegDBKeyExist(szKey) < 0) then
    if (RegDBCreateKeyEx(szKey, "") < 0) then
        return -1;
    endif;
  endif;  
return nResult;
 end;

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Function: DeleteRegistry                                                  //
//                                                                           //
//  Purpose: This function makes the registry entries deleted.               //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
function DeleteRegistry()
 STRING szKey, szClass,szValue;
 NUMBER nRootKey,nResult;   
begin   
 //删除注册表中的 MACHINE区设置
 nRootKey = HKEY_LOCAL_MACHINE;
 if (RegDBSetDefaultRoot(nRootKey) < 0) then
	 return -1;
 endif;

 szKey="SoftWare\\BatchAPC v1.0";
 if (RegDBKeyExist(szKey) <0) then 
 	return -1;
 else 
 	RegDBDeleteKey (szKey);
 endif;
end;          

///////////////////////////////////////////////////////////////////////////////
// 		function GetSysINF(listInfo)
//      获得系统信息
///////////////////////////////////////////////////////////////////////////////
function GetSysINF(listInfo) 
 NUMBER	nvResult,nCount,nTmp;
 STRING	svResult,szInfo,svTmp;
 LIST 	listTmp;
begin                   
szInfo = "[系统信息]";
ListAddString(listInfo, szInfo, AFTER);
// 获得扩展内存信息.
if (GetSystemInfo (EXTENDEDMEMORY, nvResult, svResult) < 0) then
	szInfo = "获得扩展内存信息.";   
else
	nTmp = GetMemFree()/1024; 
	Sprintf(szInfo, "         扩展内存: %d K", nvResult);
endif;
ListAddString(listInfo, szInfo, AFTER);
// 获得根驱动器信息.
if (GetSystemInfo (BOOTUPDRIVE, nvResult, svResult) < 0) then
	szInfo = "不能获得根驱动器信息.";  
else
	Sprintf(szInfo, "         根驱动器: %s", svResult);
	nvResult = GetDiskSpaceEx(svResult,MBYTES);
	Sprintf(svTmp, "(自由空间为:%dMB)", nvResult);
	szInfo = szInfo +svTmp;
endif;
ListAddString(listInfo, szInfo, AFTER);
// 获得CD-ROM信息.
if (GetSystemInfo (CDROM, nvResult, svResult) < 0) then
	szInfo = "不能获得CD-ROM信息.";
else
if (nvResult = 0) then
	svResult = "没有";
else
	listTmp = ListCreate (STRINGLIST);
	if (GetValidDrivesList (listTmp, CDROM_DRIVE, -1) < 0) then
		MessageBox("",SEVERE);
	else      
		svTmp = ""; 
		svResult = "(";
		nTmp = ListGetFirstString (listTmp, svTmp);
		while (nTmp != END_OF_LIST)
			nTmp = ListGetNextString (listTmp, svTmp);
			if(svResult = "(") then
				svResult = svResult + svTmp + ":";      
			else                              
				svResult = svResult + "," + svTmp + ":";
			endif;
        endwhile;
        svResult = svResult + ")";	
	endif;	     
	ListDestroy(listTmp);
endif;
	Sprintf(szInfo, "         CDROM: %s", svResult);   
endif;
ListAddString(listInfo, szInfo, AFTER);
// 获得VIDEO信息.
if (GetSystemInfo (VIDEO, nvResult, svResult) < 0) then
	szInfo = "不能获得VIDEO信息.";
else
	switch (nvResult)
	case IS_UNKNOWN:
		szInfo = "         VIDEO: 未知";
	case IS_SVGA:
		szInfo = "         VIDEO: SVGA";
	case IS_XVGA:
		szInfo = "         VIDEO: XVGA";
	case IS_UVGA:
	    szInfo = "         VIDEO: UVGA";
	endswitch;
endif;
ListAddString(listInfo, szInfo, AFTER);
// 获得可用颜色数.
if (GetSystemInfo (COLORS, nvResult, svResult) < 0) then
	szInfo = "不能获得颜色数信息.";
else
	Sprintf(szInfo, "         颜色数: %d", nvResult);
endif;
ListAddString(listInfo, szInfo, AFTER);
// 获得当前日期.
if (GetSystemInfo (DATE, nvResult, svResult) < 0) then
	szInfo = "不能获得日期信息.";
else
	Sprintf(szInfo, "         当前日期: %s", svResult);
endif;
ListAddString(listInfo, szInfo, AFTER);
// 得到当前时间.
if (GetSystemInfo (TIME, nvResult, svResult) < 0) then
	szInfo = "不能获得时间信息.";
else
	Sprintf(szInfo, "         目前时间: %s", svResult);
endif;
ListAddString(listInfo, szInfo, AFTER);
// 获得操作系统信息.
if (GetSystemInfo (OS, nvResult, svResult) < 0) then
	szInfo = "不能获得操作系统信息.";
else
	switch (nvResult)
	case IS_WINDOWSNT:
		szInfo = "         操作系统: Windows NT";
	case IS_WINDOWS9X:
		GetSystemInfo (WINMINOR, nvResult, svResult);
	    if (nvResult < 10) then
	    	szInfo = "         操作系统: Windows 95";
	    else
	    	szInfo = "         操作系统: Windows 98";
	    endif;                                 
	endswitch;
endif;
ListAddString(listInfo, szInfo, AFTER);
end;


///
///
function DialogShowSdFinishReboot()
NUMBER nResult, nDefOptions;
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
NUMBER bOpt1, bOpt2;
begin

if (!BATCH_INSTALL) then
	bOpt1 = FALSE;
	bOpt2 = FALSE;
	szTitle = "安装完成";
	szMsg1 = "化工间歇聚合反应过程的辨识与控制(BatchAPC v1.0)已安装完成";
	szMsg2 = "按[完成]键将结束化工间歇聚合反应过程的辨识与控制(BatchAPC v1.0)的安装.";
	szOption1 = "";
	szOption2 = "";
	nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 );
	return 0;  
else 

 	nDefOptions = SYS_BOOTMACHINE;
	szTitle = " 安装完成";
	szMsg1 = "";
	szMsg2 = "";
	nResult = SdFinishReboot( szTitle, szMsg1, nDefOptions, szMsg2, 0 );

	return nResult; 
endif;
end;        

// --- include script file section ---


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -