📄 setup.rul
字号:
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 + -