home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
makedce1.zip
/
INSTALL.CMD
next >
Wrap
OS/2 REXX Batch file
|
1995-04-19
|
13KB
|
405 lines
/* INSTALL.CMD */
'@ECHO OFF'
REQSPACE = 2000000 /* Required space on installation drive 2.0 Mb */
env='OS2ENVIRONMENT'
SAY
SAY "Installing MakeDCE Version 1.0"
SAY
/* Add RexxUtill functions */
/***************************/
Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs
/* Verify OS/2 Version 2.0 and Higher */
/***************************/
Call SysOS2Ver
if (RESULT < "2.0") then
do
SAY "OS/2 Version 2.0 and higher is required."
exit
end /* do */
/* Verify that DCE is properly installed */
/******************************************/
rc = checkdce()
IF (rc = 0) THEN
DO
SAY "ERROR: DCE is not properly installed."
SAY
SAY "EXPLANATION: MakeDCE requires a prior installation of DCE."
SAY
SAY "ACTION: Verify that during DCE installation you have set properly,"
SAY " and added to CONFIG.SYS, the two environment variables: DCELOCAL"
SAY " and NIDLDIR. If not, add them and reboot."
SAY
SAY "ACTION: Verify that DCE is properly installed in your system,"
SAY " before running MakeDCE examples"
SAY
SAY "Do you want to continue with MakeDCE installation ? (Y/N)"
PARSE PULL cont
IF (cont \= 'Y') & (cont \= 'y') then EXIT
END /* do */
/* Verify that MPTN is properly installed */
/*********************************************/
rc = checkmptn()
SAY
IF (rc = 0) THEN
DO
SAY "WARNING: MPTN is not properly installed."
SAY
SAY "EXPLANATION: MakeDCE examples would not work without MPTN ."
SAY " OS/2 MPTN driver provides a socket library driver over local IPC."
SAY
SAY "ACTION: Verify that MPTN is properly installed in your system,"
SAY " before running MakeDCE examples"
SAY
SAY "Do you want to continue with MakeDCE installation ? (Y/N)"
PARSE PULL cont
IF (cont \= 'Y') & (cont \= 'y') then EXIT
END /* do */
/* Parse Command Arguments: install -r -d <dir> */
/*******************/
R_FLAG = 0
D_FLAG = 0
PARSE ARG OPTIONS
IF (wordpos('-r' , OPTIONS, 1) \= 0 ) THEN
R_Flag = 1
IF (wordpos('-d' , OPTIONS, 1 ) \= 0 ) THEN
DO
D_Flag = 1
PARSE VAR OPTIONS '-d'Dir .
IF (Dir = '') THEN
DO
SAY "ERROR: Unspecified directory path"
SAY
SAY "EXPLANATION: command has the form: install -d <directory path>"
SAY "EXAMPLE: install -d D:\MAKEDCE"
EXIT
END
END
/* Get the drive or directory path (when command argument is -d <dir> */
/*****************/
GETDIR:
/* get Directory path if -d in arg */
IF (D_FLAG = 1) THEN
DO
IF ('\' = RIGHT(Dir,1)) THEN
DO
Path = Dir
Dir = SUBSTR(Path, 1, LENGTH(Path) - 1)
END
Drive = LEFT(Dir,1)
END
ELSE
DO
SAY "Please enter Home directory for MakeDCE, e.g. D:\MAKEDCE"
PARSE UPPER PULL Drive':'Path
IF (Drive = '') | (Path = '') | ('\' \= LEFT(Path,1)) THEN
DO
SAY
SAY "ERROR: Home directory specification is invalid"
SAY "EXPLANATION: You should enter Full path includeing Drive and Dir"
SAY
SIGNAL 'GETDIR'
END
Drive = LEFT(Drive, 1)
IF ('\' = RIGHT(Path, 1)) THEN
Dir = Drive':'SUBSTR(Path, 1, LENGTH(Path) - 1)
ELSE
Dir = Drive':'Path
END
/* Verify drive free space */
/***************************/
Call SysDriveInfo Drive':'
PARSE VAR result a Free b c
IF Free < REQSPACE THEN
DO
SAY "ERROR: There are only" Free "bytes free on drive" Drive'.'
SAY
SAY "EXPLANATION: MakeDCE installation requires a minimum of" REQSPACE "bytes"
SAY " on the installation drive."
EXIT
END /* do */
/* Create the MAKEDCE directory */
/*******************************/
MKDIR Dir '2>>\dev\nul 1>\dev\nul'
IF (rc \= 0) THEN
DO
SAY Dir "already exists, Do you want to overwrite it ? (Y/N)"
PARSE PULL cont
IF (cont \= 'Y') & (cont \= 'y') then EXIT
END
/* Unload MakeDCE files */
/******************************/
/* Skip copying of files if -r in arg */
IF (R_FLAG = 1) THEN SIGNAL 'MAKE'
SAY "Loading MakeDCE Files into "Dir
SAY
srcdir = get_source_dir()
SAVEFILE = srcdir'MAKEDCE.SAV'
LOADRAM2 = srcdir'LOADRAM2.EXE'
call remove_READ_protection
LOADRAM2 SAVEFILE Dir ' /SR /C /D /I'
IF rc \= 0 THEN exit
MAKE:
/* create MakeDCE folder */
SAY
SAY "***************************************************************************"
/* create SETENV.CMD and set ENVIRONMENT for current WINDOW */
SAY
SAY "***************************************************************************"
call create_makedce_folder
SAY
IF value(makedce,,env) \= Dir THEN
DO
call make_setenv_cmd
SAY 'Setting up MakeDCE environment in current Window'
call setenv
SAY
SAY "To setup MakeDCE environment permanently in the system"
SAY "Edit CONFIG.SYS according to "Dir"\SETENV.CMD, and then reboot"
SAY
SAY "To run MakeDCE examples follow the instructions in "Dir"\README"
END
SAY
SAY "MakeDCE installation completed."
SAY "****************************************************************************"
EXIT
/**********************************************************************/
/* g e t e n v */
/**********************************************************************/
getenv: procedure
numargs = arg()
if numargs <> 1 then do
say 'ERROR: getenv: number of arguments ('numargs') should be 1.'
exit
end
val = value(arg(1),,'OS2ENVIRONMENT')
return val
/**********************************************************************/
/* f i l e _ n o t _ e x i s t s - returns 0 if the file exists */
/**********************************************************************/
file_not_exists: procedure
numargs = arg()
if numargs <> 1 then do
say 'ERROR: file_not_exists : number of arguments ('numargs') should be 1.'
exit
end
'dir ' arg(1) ' 2>> \dev\nul 1>\dev\nul'
if (rc \= 0) then
rc = 1
return rc
/**********************************************************************/
/* c h e c k d c e - return 1 on sucess, zero on fauilure */
/**********************************************************************/
checkdce: procedure
FAILURE = 0
/* check ENV variables */
DCELOCAL = getenv('DCELOCAL')
NIDLDIR = getenv('NIDLDIR')
if (NIDLDIR = '') | (DCELOCAL = '') then
return FAILURE
/* check RPCD.EXE, IDL.EXE, UUIDGEN.EXE */
BIN = DCELOCAL'\bin'
IF file_not_exists( BIN'\rpcd.exe' ) THEN
return FAILURE
IF file_not_exists( BIN'\idl.exe' ) THEN
return FAILURE
IF file_not_exists( BIN'\uuidgen.exe' ) THEN
return FAILURE
IF file_not_exists( NIDLDIR'\dce\nbase.idl' ) THEN
return FAILURE
/* check DCEOS2.LIB */
IF file_not_exists( DCELOCAL'\lib\dceos2.lib' ) THEN
return FAILURE
return 1
/**********************************************************************/
/* c h e c m p t n - return 1 on sucess, 0 on failure */
/**********************************************************************/
checkmptn: procedure
FAILURE = 0
/* find "protocl\mptn.sys" in CONFIG.SYS */
Call SysFileSearch 'MPTN\PROTOCOL\MPTN.SYS', 'C:\CONFIG.SYS', 'line.'
IF line.0 = 0 THEN return FAILURE
/* find MPTN directory */
PARSE VALUE line.1 WITH device '=' MPTNSYS junk
MPTNPROT=FILESPEC("device", MPTNSYS)FILESPEC("path", MPTNSYS)
MPTNLIB = MPTNPROT'..\lib'
IF file_not_exists( MPTNLIB'\so32dll.lib' ) THEN
return FAILURE
return 1
/**********************************************************************/
/* m a k e _ s e t e n v _ c m d - create SETENV.CMD */
/**********************************************************************/
make_setenv_cmd:
CMDFILE = Dir'\SETENV.CMD'
'del ' CMDFILE '1>\dev\nul 2>>\dev\nul'
n = LINEOUT(CMDFILE, '@echo off')
n = LINEOUT(CMDFILE, 'echo SETTING UP MAKEDCE ENVIRONMENT')
n = LINEOUT(CMDFILE, 'set MAKEDCE='Dir )
n = LINEOUT(CMDFILE, 'set PATH=%PATH%;'Dir'\BIN' )
n = LINEOUT(CMDFILE, 'set LIB=%LIB%;'Dir'\LIB' )
n = LINEOUT(CMDFILE, 'set INCLUDE=%INCLUDE%;'Dir'\INCLUDE' )
n = LINEOUT(CMDFILE, 'set BOOKSHELF=%BOOKSHELF%;'Dir'\HELP' )
n = LINEOUT(CMDFILE)
return
/**********************************************************************/
/* g e t _ s o u r c e _ d i r */
/**********************************************************************/
get_source_dir: procedure
PARSE SOURCE word1 word2 word3
src = FILESPEC("drive", word3)FILESPEC("path", word3)
IF (src = '') THEN
DO
SAY "Could not find source directory, exiting ...."
EXIT
END
return src
/**********************************************************************/
/* s e t e n v */
/**********************************************************************/
setenv:
new=Dir
x=value('makedce',new,env)
old=value('path',,env)
new=Dir'\BIN;'old
x=value('path',new,env)
old=value('lib',,env)
new=Dir'\LIB;'old
x=value('lib',new,env)
old=value('include',,env)
new=Dir'\INCLUDE;'old
x=value('include',new,env)
return
/**********************************************************************/
/* r e m o v e _ R E A D _ p r o t e c t i o n */
/**********************************************************************/
remove_READ_protection:
'attrib -R' Dir'\README > \dev\nul'
'attrib -R' Dir'\bin\* > \dev\nul'
'attrib -R' Dir'\lib\* > \dev\nul'
'attrib -R' Dir'\help\* > \dev\nul'
'attrib -R' Dir'\include\makedce\* > \dev\nul'
'attrib -R' Dir'\examples\* > \dev\nul'
'attrib -R' Dir'\examples\binop\* > \dev\nul'
'attrib -R' Dir'\examples\alias\* > \dev\nul'
'attrib -R' Dir'\examples\array\* > \dev\nul'
'attrib -R' Dir'\examples\rcmd\* > \dev\nul'
return
/**********************************************************************/
/* c r e a t e _m a k e d c e _ f o l d e r */
/**********************************************************************/
create_makedce_folder:
SAY
SAY "Installing MakeDCE Version 1.0 - Desktop Folder"
SAY
MakeDCE=Dir
view = SysSearchPath( "PATH", "VIEW.EXE" )
ed = SysSearchPath( "PATH", "E.EXE" )
SAY "Creating MAKEDCE Folder..."
rc=SysCreateObject("WPFolder", "MakeDCE", "<WP_DESKTOP>", "OBJECTID=<MAKEDCE>","U")
if \rc then rc=SysCreateObject("WPFolder", "MakeDCE", "<WP_DESKTOP>", "OBJECTID=<MAKEDCE>","R")
if \rc then do
say 'Failed to create the MakeDCE folder'
return
end
say 'Creating MAKEDCE Users Guide Object'
rc=SysCreateObject( "WPProgram", "MakeDCE Users Guide", "<MAKEDCE>",,
"PROGTYPE=PM;EXENAME="view";PARAMETERS="MakeDCE"\HELP\MAKEDCE.INF;", "U" )
if \rc then do
say 'Failed to create the MakeDCE Users Guide Object'
return
end
say 'Creating IDLGEN Reference Object'
rc=SysCreateObject( "WPProgram", "IDLGEN Reference", "<MAKEDCE>",,
"PROGTYPE=PM;EXENAME="view";PARAMETERS="MakeDCE"\HELP\IDLGEN.INF;", "R" )
if \rc then do
say 'Failed to create the IDLGEN Reference Object'
return
end
say 'Creating GLUEGEN Reference Object'
rc=SysCreateObject( "WPProgram", "GLUEGEN Reference", "<MAKEDCE>",,
"PROGTYPE=PM;EXENAME="view";PARAMETERS="MakeDCE"\HELP\GLUEGEN.INF;", "R" )
if \rc then do
say 'Failed to create the GLUEGEN Reference Object'
return
end
say 'Creating PMIDLGEN Program Object'
rc=SysSetIcon(MakeDCE"\bin\pmidlgen.exe",MakeDCE"\bin\PMIDLGEN.ICO")
rc=SysCreateObject( "WPProgram", "PMIDLGEN", "<MAKEDCE>",,
"PROGTYPE=PM;EXENAME="MAKEDCE"\bin\pmidlgen.exe;", "R" )
if \rc then do
say 'Failed to create the PMIDLGEN Program Object'
return
end
say 'Creating examples directory shadow'
rc = SysCreateObject( "WPShadow",'Examples', "<MAKEDCE>", "SHADOWID="MakeDCE"\Examples;", "R" )
if \rc then do
say 'Failed to create the examples directory Shadow'
return
end
say 'Creating READMEE Object'
rc=SysCreateObject( "WPProgram", "README", "<MAKEDCE>",,
"PROGTYPE=PM;EXENAME="ed";PARAMETERS="MakeDCE"\README;", "U" )
if \rc then do
say 'Failed to create the README Object'
return
end
return