home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 29 Fixes_o / 29-Fixes_o.zip / workscsd.zip / WKS21_1.DSK / IBMWDESK.CMD < prev    next >
OS/2 REXX Batch file  |  1995-09-26  |  16KB  |  445 lines

  1. /****************************************************************************/
  2. /* REXX program to rebuild IBM Works Desktop - Zhitao Zeng 06/14/94         */
  3. /****************************************************************************/
  4. Parse Arg fpwpath fpwlan calledfromSI .
  5. Trace 'O'
  6. Address CMD
  7. '@ECHO OFF'
  8. 'CLS'
  9.  
  10. Call rxfuncadd sysloadfuncs, rexxutil, sysloadfuncs
  11. Call sysloadfuncs
  12.  
  13. badcfg = 'n'
  14. bootdrive = Substr(Translate(Value('PATH',,'OS2ENVIRONMENT')),Pos('\OS2\SYSTEM',Translate(Value('PATH',,'OS2ENVIRONMENT')))-2,2)
  15. fpwdll = bootdrive||'\os2\dll'
  16.  
  17. inipath = Value('IBMWORKS_INI',,'OS2ENVIRONMENT')
  18.  
  19. If inipath = '' Then badcfg = 'y' 
  20.  
  21. If fpwpath = '' Then fpwpath = inipath
  22.  
  23. fpwdrive = Substr(fpwpath,1,2)
  24.  
  25. If fpwpath <> '' & Substr(fpwdrive,2,1) = ':' Then Do
  26.  
  27.   If calledfromSI<>'y' & NeedToCopyDlls(fpwdll)='y' Then Call CopyDlls
  28.    
  29. /****************************************************************************/
  30. /* Create the WORKS desktop objects                                         */
  31. /****************************************************************************/
  32.  
  33.   Say " "
  34.   Say "Creating IBM Works Desktop ..."
  35.  
  36.   If fpwlan = '' Then fpwlan = fpwpath 
  37.   
  38.   Call SysRegisterObjectClass 'FpwCatalyst', fpwdll||'\FPWWPS.DLL'
  39.   
  40.   Call SysCreateObject 'WPFolder', 'IBM Works','<WP_DESKTOP>','ICONFILE='||fpwpath||'\FPWOBOX.ICO;ICONNFILE=1,'||fpwpath||'\FPWOBOX2.ICO;OBJECTID=<WP_FPWO_FOLD>','R'
  41.  
  42.   Call SysCreateObject 'FpwCatalyst', 'Footprint Catalyst','<WP_DESKTOP>','OBJECTID=<FPW_CATALYST>;NOTVISIBLE=YES','R'
  43.   
  44.   Call SysRegisterObjectClass 'FpwWPSData', fpwdll||'\FPWWPS.DLL' 
  45.   Call SysRegisterObjectClass 'FpwWPData', fpwdll||'\FPWWPS.DLL'
  46.   Call SysRegisterObjectClass 'FpwSSData', fpwdll||'\FPWWPS.DLL'
  47.   Call SysRegisterObjectClass 'FpwCHData', fpwdll||'\FPWWPS.DLL'
  48.   Call SysRegisterObjectClass 'FpwDBData', fpwdll||'\FPWWPS.DLL'
  49.   Call SysRegisterObjectClass 'FpwRWData', fpwdll||'\FPWWPS.DLL'
  50.   Call SysRegisterObjectClass 'FpwGRData', fpwdll||'\FPWWPS.DLL'
  51.  
  52. /****************************************************************************/
  53. /* Create the PIM desktop objects                                           */
  54. /****************************************************************************/
  55.  
  56.   Call SysCreateObject 'WPProgram','Appointments','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\appt2.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=12000;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-M;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMA_EXE>','R'
  57.   Call SysCreateObject 'WPProgram','Phone/Address Book','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\phonebk.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=13000;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-P;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMP_EXE>','R'
  58.   Call SysCreateObject 'FpwGRData','Contact List','<WP_FPWO_FOLD>','TEMPLATE=YES;OBJECTID=<WP_FPWO_GRTEMP>','R'
  59.   Call SysCreateObject 'WPProgram','Notepad','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\notes.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=15000;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-N;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMN_EXE>','R'
  60.   Call SysCreateObject 'WPProgram','Planner','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\month.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=12200;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-G;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMG_EXE>','R'
  61.   Call SysCreateObject 'WPProgram','To Do List','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\todo.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=16000;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-T;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMT_EXE>','R'
  62.   Call SysCreateObject 'WPProgram','Year Calendar','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\year.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=11210;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-Y;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMY_EXE>','R'
  63.   Call SysCreateObject 'WPProgram','Event Monitor','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\alarm.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=10100;EXENAME='||fpwpath||'\FPWMON.EXE;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIME_EXE>','R'
  64.   Call SysCreateObject 'WPProgram','PIM Preferences','<WP_FPWO_FOLD>','ICONFILE='||fpwpath||'\prefer.ico;HELPLIBRARY=fpwpim.hlp;HELPPANEL=17000;EXENAME='||fpwpath||'\FPWPIM.EXE;PARAMETERS=-S;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWPIMS_EXE>','R'
  65.  
  66.   Call SysCreateObject 'WPShadow','Template','<WP_FPWO_FOLD>','SHADOWID='||fpwlan||'\template;OBJECTID=<WP_FPWO_SAMP_FOLD>','R'
  67.  
  68.   Call SysCreateObject 'FpwRWData','Report','<WP_FPWO_FOLD>','TEMPLATE=YES;OBJECTID=<WP_FPWO_RWTEMP>','R'
  69.   Call SysCreateObject 'FpwDBData','Database','<WP_FPWO_FOLD>','TEMPLATE=YES;OBJECTID=<WP_FPWO_DBTEMP>','R'
  70.   Call SysCreateObject 'FpwCHData','Chart','<WP_FPWO_FOLD>','TEMPLATE=YES;OBJECTID=<WP_FPWO_CHTEMP>','R'
  71.   Call SysCreateObject 'FpwSSData','Sheet','<WP_FPWO_FOLD>','TEMPLATE=YES;OBJECTID=<WP_FPWO_SSTEMP>','R'
  72.   Call SysCreateObject 'FpwWPData','Document','<WP_FPWO_FOLD>','TEMPLATE=YES;OBJECTID=<WP_FPWO_WPTEMP>','R'
  73.  
  74.   Call SysCreateObject 'WPShadow','ReadMe','<WP_FPWO_FOLD>','SHADOWID='||fpwpath||'\'ReadMe';OBJECTID=<WP_FPWO_README>','R'
  75.   Call SysCreateObject 'WPProgram','IBM Works','<WP_FPWO_FOLD>','HELPLIBRARY=ibmworks.hlp;HELPPANEL=1;EXENAME='||fpwpath||'\IBMWORKS.EXE;PROGTYPE=PM;CCVIEW=YES;OBJECTID=<WP_FPWO_EXE>','R'
  76.  
  77.   'ob2templ '||fpwlan||'\template\ESTIMATE '||fpwlan||'\template\FAX '||fpwlan||'\template\MEMO '||fpwlan||'\template\BALANCES '||fpwlan||'\template\BANKRECO'
  78.   'ob2templ '||fpwlan||'\template\BUDGET '||fpwlan||'\template\CREDITAP '||fpwlan||'\template\FORECAST '||fpwlan||'\template\INVOICE '||fpwlan||'\template\MERGELET'
  79. rem   'ob2templ '||fpwlan||'\template\INVENTOR '||fpwlan||'\template\TAPES'
  80.  
  81.   If calledfromSI<>'y' & badcfg = 'y' Then Do
  82.      Call UpdateConfigSys
  83.      Call UpdateOS2Ini
  84.      'fpwini 'fpwpath
  85.   End   
  86.  
  87.   If calledfromSI='y' Then Do   
  88.      ret = SysFileTree(fpwpath||'\dllbak', 'file', 'D')
  89.      If file.0 = 0 Then Do
  90.         '@mkdir 'fpwpath||'\dllbak'
  91.      End
  92.      '@copy 'fpwdll'\fpwwps.dll 'fpwpath||'\dllbak 2>nul >nul'
  93.      '@copy 'fpwdll'\fpwrec.dll 'fpwpath||'\dllbak 2>nul >nul'
  94.      '@copy 'fpwdll'\fen20pde.dll 'fpwpath||'\dllbak 2>nul >nul'
  95.   End
  96.    
  97.   Say " "
  98.   Say "IBM Works Desktop created successfully!"
  99.   
  100. End
  101. Else Do
  102.   Say 'IBMWDESK.CMD - Rexx script to build the IBM Works desktop folder'
  103.   Say ' '
  104.   Say 'Syntax: IBMWDESK [PATH]'
  105.   Say '        PATH - IBM Works directory'
  106.   
  107.   Say 'Example:'
  108.   Say '        IBMWDESK C:\IBMWORKS'
  109. End
  110.  
  111. Call Endit
  112.  
  113.  
  114. /****************/
  115. /* Exit program */
  116. /****************/
  117. Endit:
  118. Exit 0
  119.  
  120.  
  121. /***************************/
  122. /* Change the CONFIG.SYS   */
  123. /***************************/
  124.  
  125. UpdateConfigSys:   /* change the config.sys file for IBMWorks */
  126. /*
  127. '@cls'
  128. response=''
  129.  
  130. Say '    Do you want to update 'bootdrive'\CONFIG.SYS?(Y/N)'
  131.   Parse Upper Pull response
  132.   If response <> 'N' Then Do
  133.      Say '    The old 'bootdrive'\CONFIG.SYS will be created called 'bootdrive'\CONFIG.IW'
  134.      Say ' '
  135.      Say '    Shutdown and restart your system for these changes to take affect.'
  136.      Say ' '
  137.   End
  138.   Else
  139.      return 0
  140. */
  141.  
  142. oldconfig=bootdrive'\CONFIG.SYS'
  143. newconfig=bootdrive'\CONFIG.IW'
  144. tmpconfig=bootdrive'\IWTMP.SYS'
  145.  
  146. os2path='SET PATH'
  147. os2libpath='LIBPATH'
  148. os2help='SET HELP'
  149. os2ini='SET IBMWORKS_INI'
  150.  
  151. iniflag=0
  152.  
  153. /* get the portion of pathspec without the [drive]: */
  154. pathonly = right(fpwpath, length(fpwpath)-2)
  155.  
  156. /*
  157.  * read the file one line at a time, and write it all out, making
  158.  * changes accordingly - need to change path, libpath, help, IBMWORKS_INI
  159.  */
  160.  
  161. '@del 'newconfig ' 2>nul >nul'
  162.  
  163. Do while lines(oldconfig)
  164.     inline=linein(oldconfig)
  165.  
  166.     /******************************************/
  167.     /* parse the line into variable and value */
  168.     /******************************************/
  169.  
  170.     parse value inline with os2var '=' os2value
  171.  
  172.     /********************************************************/
  173.     /* translate the variable into uppercase for comparison */
  174.     /********************************************************/
  175.  
  176.     os2var=translate(os2var)
  177.     Select
  178.  
  179.         /********************************************************/
  180.         /*          For PATH                                    */
  181.         /********************************************************/
  182.         when os2var=os2path Then Do
  183.             ibmwline=inline
  184.  
  185.             /* see if path is already set */
  186.             k = pos(pathonly, translate(ibmwline))
  187.             If k = 0 Then Do
  188.                /*
  189.                 * see if there is a ; at the end of the value
  190.                 */
  191.                position=lastpos(';',os2value)
  192.                lenvalue=length(os2value)
  193.  
  194.                If position=lenvalue Then do
  195.                    /* ; at end of value */
  196.                    ibmwline=os2var'='os2value''fpwpath';'
  197.                End
  198.                Else Do
  199.                    /* ; NOT at end of value */
  200.                    ibmwline=os2var'='os2value';'fpwpath';'
  201.                End
  202.                
  203.             End
  204.             Else  /* see if the drive letter is not the same */
  205.               If substr(ibmwline, k-2, 1) \= fpwdrive Then
  206.                 /* change the drive letter only */
  207.                 ibmwline = overlay(fpwdrive, ibmwline, k-2)
  208.  
  209.             /*
  210.              * write the line out to the new config file
  211.              */
  212.  
  213.             result=lineout(newconfig, ibmwline)
  214.  
  215.             If result=1 Then Do
  216.                 writeerror()
  217.                 return 1
  218.             End
  219.         End
  220.  
  221.         /********************************************************/
  222.         /*          For LIBPATH                                 */
  223.         /********************************************************/
  224.         when os2var=os2libpath Then Do
  225.             ibmwline=inline
  226.  
  227.             /* see if lib path is already set */
  228.             k = pos(pathonly, translate(ibmwline))
  229.             If k = 0 Then Do
  230.                /*
  231.                 * see if there is a ; at the end of the value
  232.                 */
  233.  
  234.                position=lastpos(';',os2value)
  235.                lenvalue=length(os2value)
  236.  
  237.                If position=lenvalue Then Do
  238.                    /* ; at end of value */
  239.                    ibmwline=os2var'='os2value''fpwpath';'
  240.                End
  241.                Else Do
  242.                    /* ; NOT at end of value */
  243.                    ibmwline=os2var'='os2value';'fpwpath';'
  244.                End
  245.                
  246.             End
  247.             Else  /* see if the drive letter is not the same */
  248.               If substr(ibmwline, k-2, 1) \= fpwdrive Then
  249.                 /* change the drive letter only */
  250.                 ibmwline = overlay(fpwdrive, ibmwline, k-2)
  251.  
  252.             /*
  253.              * write the line out to the new config file
  254.              */
  255.  
  256.             result=lineout(newconfig, ibmwline)
  257.             If result=1 Then Do
  258.                 writeerror()
  259.                 return 1
  260.             End
  261.         End
  262.  
  263.         /********************************************************/
  264.         /*          For SET HELP                                */
  265.         /********************************************************/
  266.         when os2var=os2help Then Do
  267.             ibmwline=inline
  268.  
  269.             /* see if lib path is already set */
  270.             k = pos(pathonly, translate(ibmwline))
  271.             If k = 0 Then Do
  272.                /*
  273.                 * see if there is a ; at the end of the value
  274.                 */
  275.  
  276.                position=lastpos(';',os2value)
  277.                lenvalue=length(os2value)
  278.  
  279.                If position=lenvalue Then Do
  280.                    /* ; at end of value */
  281.                    ibmwline=os2var'='os2value''fpwpath';'
  282.                End
  283.                Else Do
  284.                    /* ; NOT at end of value */
  285.                    ibmwline=os2var'='os2value';'fpwpath';'
  286.                End
  287.                
  288.             End
  289.             Else  /* see if the drive letter is not the same */
  290.               If substr(ibmwline, k-2, 1) \= fpwdrive Then
  291.                 /* change the drive letter only */
  292.                 ibmwline = overlay(fpwdrive, ibmwline, k-2)
  293.  
  294.             /*
  295.              * write the line out to the new config file
  296.              */
  297.  
  298.             result=lineout(newconfig, ibmwline)
  299.             If result=1 Then Do
  300.                 writeerror()
  301.                 return 1
  302.             End
  303.         End
  304.  
  305.         /********************************************************/
  306.         /*          For SET IBMWORKS_INI                        */
  307.         /********************************************************/
  308.  
  309.         when os2var=os2ini Then Do
  310.             iniflag=1
  311.  
  312.             ibmwline=inline
  313.  
  314.             /* see if lib path is already set */
  315.             k = pos(pathonly, translate(ibmwline))
  316.             If k = 0 Then Do
  317.                /*
  318.                 * see if there is a ; at the end of the value
  319.                 */
  320.  
  321.                position=lastpos(';',os2value)
  322.                lenvalue=length(os2value)
  323.  
  324.                If position=lenvalue Then Do
  325.                    /* ; at end of value */
  326.                    ibmwline=os2var'='os2value''fpwpath';'
  327.                End
  328.                Else Do
  329.                    /* ; NOT at end of value */
  330.                    ibmwline=os2var'='os2value';'fpwpath';'
  331.                End
  332.                
  333.             End
  334.             Else  /* see if the drive letter is not the same */
  335.               If substr(ibmwline, k-2, 1) \= fpwdrive Then
  336.                 /* change the drive letter only */
  337.                 ibmwline = overlay(fpwdrive, ibmwline, k-2)
  338.  
  339.             /*
  340.              * write the line out to the new config file
  341.              */
  342.  
  343.             result=lineout(newconfig, ibmwline)
  344.             If result=1 Then Do
  345.                 writeerror()
  346.                 return 1
  347.             End
  348.         End
  349.  
  350.  
  351.         otherwise Do
  352.             /*
  353.              * write the line out to the new config file
  354.              */
  355.  
  356.             result=lineout(newconfig, inline)
  357.             If result=1 Then Do
  358.                 writeerror()
  359.                 return 1
  360.             End
  361.         End
  362.  
  363.     End  /* select */
  364.  
  365. End /* Do */
  366.  
  367.  
  368. /*********************************************************************/
  369. /* if there was no SET IBMWORKS_INI variable set in CONFIG.SYS, Then */
  370. /* put New env. variables                                            */
  371. /*********************************************************************/
  372.  
  373. If iniflag=0 Then Do
  374.  
  375.     ibmwline='SET IBMWORKS_INI='fpwpath
  376.  
  377.     /*
  378.      * write the line out to the new config file
  379.      */
  380.  
  381.     result=lineout(newconfig, ibmwline)
  382.     If result=1 Then Do
  383.         writeerror()
  384.         return 1
  385.     End
  386. End
  387.  
  388.  
  389. /*********************/
  390. /* close the files   */
  391. /*********************/
  392.  
  393. result=lineout(newconfig)
  394. result=lineout(oldconfig)
  395.  
  396. /********************************************************************/
  397. /* Copy created file(CONFIG.IW) to temporary file(IWTMP.SYS),       */
  398. /* copy original file(CONFIG.SYS) to new file(CONFIG.IW),           */
  399. /* and copy temporary file(IWTMP.SYS) to original file(CONFIG.SYS). */
  400. /********************************************************************/
  401. '@erase 'tmpconfig' 2>nul >nul'
  402. '@rename 'oldconfig' 'tmpconfig' >nul'
  403. '@rename 'newconfig' 'oldconfig' >nul'
  404. '@rename 'tmpconfig' 'newconfig' 2>nul >nul'
  405.  
  406. /******************************************************************/
  407. /*  Finished the Update                                           */
  408. /******************************************************************/
  409.  
  410. rem Say ' '
  411. rem Say '               'bootdrive'\CONFIG.SYS updated succesfully.'
  412. rem Say ' '
  413.  
  414. return 0
  415.  
  416.  
  417. NeedToCopyDlls: procedure
  418. ARG fpwdll
  419.    rc = 'n'
  420.    
  421.    ret = SysFileTree(fpwdll||'\fpwwps.dll', 'file', 'FO')
  422.    If file.0 > 0 Then Do
  423.       ret = SysFileTree(fpwdll||'\fpwrec.dll', 'file', 'FO')
  424.       If file.0 > 0 Then Do
  425.          ret = SysFileTree(fpwdll||'\fen20pde.dll', 'file', 'FO')
  426.       End   
  427.       Else
  428.          rc = 'y'
  429.    End   
  430.    Else
  431.       rc = 'y'
  432.       
  433.    return rc   
  434.  
  435.  
  436. CopyDLLs:
  437.    '@copy 'fpwpath'\dllbak\*.* 'fpwdll' 2>nul >nul'
  438.    return 0
  439.  
  440.  
  441. UpdateOS2Ini:
  442.    ret=SysIni(,'IBMWORKS','DLL',fpwpath)
  443.    return ret
  444.  
  445.