home *** CD-ROM | disk | FTP | other *** search
/ Winzipper / Winzipper_ISO.iso / programming / oracle7 7.2 / RSF72 / RSF72.VRF < prev    next >
Encoding:
Text File  |  1995-10-09  |  30.7 KB  |  626 lines

  1. /*   Copyright (c) Oracle Corporation 1992.  All Rights Reserved */
  2. /*****************************************************************************
  3.   NAME
  4.     rsf72.vrf - Win95 V3 installation verification script for the Required
  5.                 Support Files (RSF).
  6.  
  7.   DESCRIPTION
  8.     This script checks dependencies and environment settings for installation
  9.     of the Windows 95 RSF.
  10.  
  11.   OWNER
  12.  
  13.  
  14.   MODIFIED    MM/DD/YY  Reason
  15.  
  16. *****************************************************************************/
  17. {
  18.  
  19.   { doit = execute("%installer_home%\win95.vrf"); }
  20.   [
  21.     'UNBOUND_VARIABLE:
  22.       {
  23.         required_version = product_version(w95instver);
  24.         temp = explode(required_version,".");
  25.         required_version = implode(list(first(temp),first(rest(temp)),
  26.                                         first(rest(rest(temp))),
  27.                                         first(rest(rest(rest(temp))))),".");
  28.         signal('failure,instantiate(nls("instver_too_early1","The version of the Installer currently running is %%installer_version%%. The installation you have chosen requires version %%required_version%% or later. Please run version %%required_version%% or later in order to perform this installation.")));
  29.       }
  30.   ]
  31.  
  32.   if (doit)
  33.     {
  34.       add_bin_to_path = false;
  35.       /***********************************************************************
  36.           Set the VRF-INS script "ratchet"
  37.        ***********************************************************************/
  38.       vrf_ratchet = "7.2.2.3.1";
  39.  
  40.       /***********************************************************************
  41.           that needs to be version checked
  42.        ***********************************************************************/
  43.       target_list = list("CORE34.DLL","NLSRTL31.DLL","KG72.DLL","ORA72.DLL","PLS22.DLL","ROS20.DLL","TK2CM20.DLL","SQLLIB17.DLL","OCIW32.DLL");
  44.  
  45.       /***********************************************************************
  46.          Bind path variables...
  47.       ************************************************************************/
  48.       {
  49.         set_rdbms72 = FALSE;
  50.         rdbms72 = v7_translate("RDBMS72");
  51.  
  52.         if (not(exists(rdbms72)))
  53.           signal('UNBOUND_ENVIRONMENT_VARIABLE);
  54.       }
  55.         [ 'OS_ERROR,'INVALID_FILE_NAME,
  56.           'PERMISSION_DENIED,'UNBOUND_ENVIRONMENT_VARIABLE:
  57.           {
  58.             rdbms72 = "%oracle_home%\RDBMS72";
  59.             set_rdbms72 = TRUE;
  60.           }
  61.         ]
  62.  
  63.       {
  64.         set_plsql22 = FALSE;
  65.         plsql22 = v7_translate("PLSQL22");
  66.  
  67.         if (not(exists(plsql22)))
  68.           signal('UNBOUND_ENVIRONMENT_VARIABLE);
  69.       }
  70.         [ 'OS_ERROR,'INVALID_FILE_NAME,
  71.           'PERMISSION_DENIED,'UNBOUND_ENVIRONMENT_VARIABLE:
  72.           {
  73.             plsql22 = "%oracle_home%\PLSQL22";
  74.             set_plsql22 = TRUE;
  75.           }
  76.         ]
  77.  
  78.       {
  79.         set_pro17 = FALSE;
  80.         pro17 = v7_translate("PRO17");
  81.  
  82.         if (not(exists(pro17)))
  83.           signal('UNBOUND_ENVIRONMENT_VARIABLE);
  84.       }
  85.         [ 'OS_ERROR,'INVALID_FILE_NAME,
  86.           'PERMISSION_DENIED,'UNBOUND_ENVIRONMENT_VARIABLE:
  87.           {
  88.               pro17 = "%oracle_home%\PRO17";
  89.             set_pro17 = TRUE;
  90.           }
  91.         ]
  92.  
  93.       {
  94.         set_nlsrtl31 = FALSE;
  95.         nlsrtl31 = v7_translate("NLSRTL31");
  96.  
  97.         if (not(exists(nlsrtl31)))
  98.           signal('UNBOUND_ENVIRONMENT_VARIABLE);
  99.       }
  100.         [ 'OS_ERROR,'INVALID_FILE_NAME,
  101.           'PERMISSION_DENIED,'UNBOUND_ENVIRONMENT_VARIABLE:
  102.           {
  103.             nlsrtl31 = "%oracle_home%\NLSRTL31";
  104.             set_nlsrtl31 = TRUE;
  105.           }
  106.         ]
  107.  
  108.       {
  109.         set_ora_nls = FALSE;
  110.         ora_nls = v7_translate("ORA_NLS");
  111.  
  112.         if (not(exists(ora_nls)))
  113.           signal('UNBOUND_ENVIRONMENT_VARIABLE);
  114.       }
  115.         [ 'OS_ERROR,'INVALID_FILE_NAME,
  116.           'PERMISSION_DENIED,'UNBOUND_ENVIRONMENT_VARIABLE:
  117.           {
  118.             ora_nls = "%nlsrtl31%\DATA";
  119.             set_ora_nls = TRUE;
  120.           }
  121.         ]
  122.  
  123.  
  124.       /***********************************************************************
  125.          Bind string variables & prompt strings...
  126.       ***********************************************************************/
  127.       /* ui_action strings */
  128.       sorting_dlls = nls("sorting_dlls","Sorting DLLs");
  129.       searching_path = nls("searching_path",
  130.                            "Searching for extra copies of %%target%%...");
  131.       searching_file = nls("searching_file",
  132.                            "Searching for extra copies of %%target%%: %%full_target%%");
  133.       writing_dlls_txt = nls("writing_dlls_txt","Writing a list of extra DLLs to %%old_dlls_txt%%...");
  134.       identifying_bt_drive = nls("identifying_bt_drive","Identifying the Boot Drive...");
  135.  
  136.       /* error messages */
  137.       permission_denied = nls("permission_denied","permission denied");
  138.       invalid_file_name = nls("invalid_file_name","invalid file name");
  139.       write_error = nls("write_error","write error");
  140.       file_not_found = nls("file_not_found","file not found");
  141.       os_error = nls("os_error","operating system error");
  142.       installation_aborted = nls("installation_aborted","installation aborted");
  143.       cannot_rename = nls("cannot_rename",
  144.                           "Cannot rename %%old_dll%% to %%target_old%% : %%error%%. This is probably because one of these files is locked by another application. You should shut down all other Windows95 applications and then reinstall. If that does not work, restart Windows95 and then reinstall.");
  145.       cannot_copy = nls("cannot_copy",
  146.                         "The Installer could not install %%filename%%.dll to location %%oracle_home%%\bin\%%filename%%.dll : %%error%%. This is probably because the file %%oracle_home%%\bin\%%filename%%.dll is locked by another application. You should shut down all other Windows95 applications and then reinstall. If that does not work, restart Windows95 and then reinstall.");
  147.       
  148.       /* DLL list formatting */
  149.       default_format = nls("default_format",
  150.                            "%%oldest_dll%% %%oldest_version_no%%");
  151.       bin_format = nls("bin_format",
  152.                        "%%target%% %%oldest_version_no%% (currently installed)");
  153.       new_format = nls("new_message",
  154.                        "%%target%% %%oldest_version_no%% (no media)");
  155.       no_version_info = nls("no_version_info","(no version)");
  156.       head_message = nls("head_message", "In addition to the necessary changes noted below, please make sure that %%oracle_home_bin%% is on your PATH.");
  157.       header_message = nls("header_message",
  158.                            "The following copies of DLLs may interfere with the DLLs in %%oracle_home_bin%% directory. You should rename them or remove them from your system.");
  159.  
  160.       /* problem modifying RSF_DLLS.TXT */
  161.       mod_problem = nls("mod_problem",
  162.                         "The Installer could not access the file %%old_dlls_txt%%. The list of extra DLLs will not be available.");
  163.       mod_content = nls("mod_content",
  164.                         "Extra DLLs List");
  165.       mod_help = nls("mod_help",
  166.                      "The Installer could not access the file %%old_dlls_txt%%. This file is used to record the list of extra Oracle DLLs on your DLL search path.");
  167.       list_written = nls("list_written", "The list of extra DLLs has been written to the file %%old_dlls_txt%%. It is strongly recommended that you manually rename or remove these DLLs from your DLL search path.");
  168.      
  169.      /* select the preferred dlls to install */
  170.       choose_dll = nls("choose_dll",
  171.                         "The Installer has found the following DLLs on your DLL search path. These files are newer than those on the distribution media. From the list below, select the files that you want to install in place of the DLLs on the distribution media.");
  172.       choose_dll_content = nls("choose_dll_content","DLL selection");
  173.       choose_dll_help = nls("choose_dll_help","The Installer has found copies of DLLs on the path that are more recent than those on the distribution media. Check those that you would like to install instead of the DLLs from the distribution media.");
  174.  
  175.       /* ok to auto rename extra DLLs? */
  176.  
  177.       auto_rename = nls("auto_rename",
  178.                         "The Installer has found extra copies of the following DLLs on your DLL search path. To avoid conflict with DLLs installed in %%oracle_home_bin%%, all extra copies should be renamed to <filename>.old. Please select the files you would like the installer to automatically  rename. Files that are not renamed will be documented in %%oracle_home%%\RSF_DLL.TXT. You can manually rename them at a later time.");
  179.       auto_rename_content = nls("auto_rename_content", "DLL Conflict");
  180.       auto_rename_help = nls("auto_rename_help", "The Installer has found extra copies of DLLs on your DLL search path. These DLLs should only be installed in %%oracle_home_bin%%. All other copies should be removed from your system. This can be done by renaming them to <filename>.OLD. Select DLLs that you would like the Installer to automatically rename.  Files that are not renamed will be written to %%oracle_home%%\RSF_DLLS.TXT, so you can manually rename them at a later time.");
  181.  
  182.  
  183. /*
  184.       auto_rename = nls("auto_rename",
  185.                         "The Installer has found copies of the following DLLs in %%oracle_home_bin%%. These may conflict with the DLLs that are being installed with this product. To avoid conflict, these copies should be renamed to <filename>.old. The Installer can rename these files for you. To do this, select the files you want to have renamed and select OK. You can select several files by holding the CTRL button and using he mouse to select the DLLs you want to rename. Files that you do not rename are written in %%oracle_home%%\RSF_DLL.TXT. You can manually rename them at a later time.");
  186.       auto_rename_content = nls("auto_rename_content", "DLL Conflict");
  187.       auto_rename_help = nls("auto_rename_help",
  188.  
  189. "A DLL is executable code that may be used by one or more programs. The Installer has detected copies of certain DLLs in %%oracle_home_bin%%, where %%oracle_home_drive%% is the drive on which these files are located. These DLLs may conflict with the DLLs that are being installed with this product.
  190.  
  191. To avoid any conflict, these copies should be renamed to <filename>.old. For example, if the current name is ORASPAWN.DLL, the file should be renamed to ORASPAWN.OLD.
  192.  
  193. The Installer can automatically rename these files for you. To do this, select the files you want to have renamed and select OK. You can select seral files by holding down the CTRL button and using he mouse to select the DLLa you want to rename.
  194.  
  195. Any files that have not been renamed are written to %%oracle_home%%\RSF_DLL.TXT. You can rename these files at a later time.
  196.  
  197. ");
  198. */
  199.       /* ok to add oracle_home/bin to path? */
  200.       mod_autoexec_prompt = nls("mod_autoexec_prompt","The PATH variable does not include the %%oracle_home_bin%% directory. Since the Installer has removed some redundant DLLs from your DLL search path, it is strongly recommended that you add %%oracle_home_bin%% to your PATH. Do you wish to do this?");
  201.       mod_autoexec_content = nls("mod_autoexec_content","PATH Problem");
  202.       mod_autoexec_help = nls("mod_autoexec_help","The PATH variable does not include the %%oracle_home_bin%% directory. Third party products that use Oracle libraries and SQL*Net drivers may not function properly unless %%oracle_home_bin%% is on your PATH. It is strongly recommended that you add %%oracle_home_bin%% to your PATH.");
  203.       autoexec_was_changed = nls("autoexec_was_changed","In order for the changes to your AUTOEXEC.BAT files to take effect, your PC must be rebooted. Please reboot your computer now.");
  204.  
  205.       /* something is wrong with path */
  206.       pth_problem_prompt = nls("pth_problem_prompt","The PATH variable correctly includes %%oracle_home_bin%% in your %%autoexec_bat%% file, but does not do so in the environment. Some Oracle products and some third party products will not function properly until the PATH variable has been corrected.");
  207.       pth_problem_content = nls("pth_problem_content","PATH Problem");
  208.       pth_problem_help = nls("pth_problem_help","The PATH variable correctly includes %%oracle_home_bin%% in your %%autoexec_bat%% file, but does not do so the environment. This problem may have arisen from a manual change of the PATH variable, in which case rebooting your computer will resolve the problem. It is also possible that your PATH variable has been changed by some other software you are running or by a batch file you have executed. In that case, it is necessary for you to track the problem manually." );
  209.  
  210.       rsf72_inst = nls("rsf72_inst",
  211.                        "A Required Support Files DLL (%%chkdll%%) is being used. Please stop all Oracle applications and services before installing %%product_label%%.");
  212.       rsf72_inst_content = nls("rsf72_inst_content","%%product_label%% DLL Used");
  213.       rsf72_inst_help = nls("rsf72_inst_help",
  214.                        "The Oracle Installer has detected that a Required Support Files DLL (%%chkdll%%) is being used. Please stop all Oracle applications and services before installing %%product_label%%.");
  215.       rsf72_inst_term = nls("rsf72_inst_term","%%product_label%% installation terminated.");
  216.       installing_scripts = nls("installing_scripts",
  217.                                "Installing %%product_label%% Scripts...");
  218.       installing_dlls = nls("installing_dlls",
  219.                                "Installing %%product_label%% Dynamic Link Libraries...");
  220.       installing_sys = nls("installing_sys",
  221.                                "Installing %%product_label%% System Files...");
  222.       installing_msbs = nls("installing_msbs",
  223.                                "Installing %%product_label%% Message Files...");
  224.       installing_nls = nls("installing_nls",
  225.                                "Installing %%product_label%% Data Files...");
  226.       installing_sql = nls("installing_sql",
  227.                                "Installing %%product_label%% SQL Scripts...");
  228.       modifying_config = nls("modifying_config",
  229.                                "Modifying 95 Registry...");
  230.       registering = nls("registering","Registering %%product_label%%...");
  231.  
  232.       yes_prompt = nls("yes_prompt", "Yes");
  233.       no_prompt = nls("no_prompt", "No");
  234.       ynprompt = list(yes_prompt, no_prompt);
  235.  
  236.       /**********************************************************************
  237.          Check whether we should proceed with installation or not
  238.       ***********************************************************************/
  239.  
  240.       chkdll_list = list("ORA72.DLL","ORASPAWN.DLL","KG72.DLL","SQLLIB17.DLL", "CORE34.DLL");
  241.       while(not(empty(chkdll_list)))
  242.       {
  243.           chkdll = first(chkdll_list);
  244.           chkdll_list = rest(chkdll_list);
  245.         { move_file("%ORACLE_HOME%\bin\%chkdll%", "%ORACLE_HOME%\bin\%chkdll%"); }
  246.     [ 'PERMISSION_DENIED, 'INVALID_FILE_NAME, 'OS_ERROR, 'WRITE_ERROR:
  247.     {
  248.                 information_dialog(instantiate(rsf72_inst), instantiate(rsf72_inst_content), instantiate(rsf72_inst_help));
  249.                 signal('FAILURE, instantiate(rsf72_inst_term));
  250.     }
  251.       'FILE_NOT_FOUND:
  252.         continue();
  253.     ]
  254.       }
  255.  
  256.                 
  257.       /**********************************************************************
  258.          DLL version checking...
  259.       ***********************************************************************/
  260.  
  261.       {
  262.         registration_comment = "";
  263.         old_dlls_txt = ""; /* initialize to "" to indicate not modified yet */
  264.  
  265.         no_version_version = "0.0.0.0.0.0.0";
  266.         reinstall_or_downgrade = (version_status == 'reinstall) ||
  267.                                  (version_status == 'downgrade);
  268.  
  269.         /********************************************************************
  270.            Get the path and try to get rid of white space...
  271.          ********************************************************************/
  272.  
  273.         {
  274.           path = v6_translate("%%PATH%%");
  275.           path = replace(path,"; ",";");
  276.           path = replace(path," ;",";");
  277.           path = replace(path,"%tab_character%;",";");
  278.           path = replace(path,";%tab_character%",";");
  279.         } [ 'OS_ERROR: path = "";
  280.             'UNBOUND_ENVIRONMENT_VARIABLE: path = ""; ]
  281.  
  282.         /********************************************************************
  283.            Separate the path into its components.  Add %boot_drive%:\WINDOWS,
  284.            %boot_drive%:\WINDOWS\SYSTEM, and %oracle_home%\BIN
  285.          ********************************************************************/
  286.  
  287.         old_exploded_path = explode(path,";");
  288.         subtract(old_exploded_path,list(".","..")); /* don't count . and .. */
  289.  
  290.         oracle_home_bin = "%oracle_home%\BIN";
  291.  
  292.         /* Note:  Don't change the order below!!!! */
  293.         exploded_path = list(oracle_home_bin,windows_directory(),
  294.                              windows_system_directory());
  295.  
  296.         union(exploded_path,old_exploded_path);
  297.  
  298.         extra_list = list();
  299.         extra_version_list = list();
  300.         dll_with_extra_list = list();
  301.         write_to_file_list = list();
  302.         rename_list = list();
  303.         bin_list = list();
  304.         overwrite_list = list();
  305.         path_overwrite = list();
  306.         bin_overwrite = list();
  307.  
  308.         /* loop for each member of target_list */
  309.         while (not(empty(target_list)))
  310.           {
  311.             target = first(target_list);
  312.             target_list = rest(target_list);
  313.  
  314.             target_base = first(explode(target,"."));
  315.             bin_dll = "%oracle_home%\BIN\%target%"; 
  316.             new_dll = "%product_location%\%target%";
  317.  
  318.             ui_action(instantiate(searching_path));
  319.  
  320.             /****************************************************************
  321.                Get the version of new_dll...
  322.              ****************************************************************/
  323.  
  324.             if (not((earlier_version(installer_version,"3.0.9.5.0"))))
  325.               {
  326.                 {
  327.                   version_no = windows_file_version(new_dll);
  328.                 } [ 'OS_ERROR: version_no = no_version_version; ]
  329.               }
  330.             else
  331.               version_no = no_version_version;
  332.  
  333.             unsorted_dll_list = list(list(version_no,new_dll));
  334.  
  335.             ui_action(sorting_dlls);
  336.  
  337.             /****************************************************************
  338.                Get the versions of all DLL's...
  339.              ****************************************************************/
  340.  
  341.             dll_path = exploded_path;         /* don't modify exploded_path */
  342.             while (not(empty(dll_path)))
  343.               {
  344.                 path_member = first(dll_path);
  345.                 dll_path = rest(dll_path);
  346.  
  347.                 if (file_name(path_member)==".")
  348.                   continue();
  349.                 full_target = replace("%path_member%\%target%","\\","\");
  350.                 ui_action(instantiate(searching_file));
  351.                 if (exists(full_target))
  352.                   {
  353.                     if (not((earlier_version(installer_version,"3.0.9.5.0"))))
  354.                       {
  355.                         {
  356.                           version_no = windows_file_version(full_target);
  357.                         } [ 'OS_ERROR: version_no = no_version_version; ]
  358.                       }
  359.                     else
  360.                       version_no = no_version_version;
  361.                     unsorted_dll_list = cons(list(version_no,full_target),
  362.                                              unsorted_dll_list);
  363.                   }
  364.               } [ 'INVALID_FILE_NAME,'PERMISSION_DENIED,'OS_ERROR: continue(); ]
  365.  
  366.             /****************************************************************
  367.                Sort list of DLLs by version number.  dll_list will contain
  368.                list of DLL_path with newest version at head of list.
  369.                version_list will be in same order but will give list of form
  370.                "DLL_path DLL_version", with special format for currently
  371.                installed version, and version from installation media.  This
  372.                has to be a STABLE sort!
  373.              ****************************************************************/
  374.  
  375.             bin_str = "";            /* necessary b/c bin_dll may not exist */
  376.  
  377.             dll_list = list();
  378.             version_list = list();
  379.  
  380.             done = false;
  381.             while (not(done))
  382.               {
  383.  
  384.                 /************************************************************
  385.                    Get the oldest version of the dll...
  386.                  ************************************************************/
  387.  
  388.                 oldest = first(unsorted_dll_list);
  389.                 oldest_version_no = first(oldest);
  390.  
  391.                 tmp_list = rest(unsorted_dll_list);
  392.                 while ((oldest_version_no != no_version_version) &&
  393.                        not(empty(tmp_list)))
  394.                   {
  395.                     current = first(tmp_list);
  396.                     tmp_list = rest(tmp_list);
  397.                     current_version_no = first(current);
  398.                     if (earlier_version(current_version_no,oldest_version_no))
  399.                       {
  400.                         oldest = current;
  401.                         oldest_version_no = current_version_no;
  402.                       }
  403.                   }
  404.  
  405.                 /************************************************************
  406.                    Remove the oldest version from unsorted_dll_list and cons
  407.                    it to dll_list and version_list
  408.                  ************************************************************/
  409.  
  410.                 extract(unsorted_dll_list,oldest);
  411.                 oldest_dll = first(rest(oldest));
  412.                 dll_list = cons(oldest_dll,dll_list);
  413.  
  414.                 /* The spaces in " %no_version_version%" and "
  415.                    %no_version_info%" are important.  Don't change them. */
  416.                 if (oldest_dll == bin_dll)
  417.                   {
  418.                     bin_str = replace(instantiate(bin_format),
  419.                                       " %no_version_version%",
  420.                                       " %no_version_info%");
  421.                     str = bin_str;
  422.                   }
  423.                 else if (oldest_dll==new_dll)
  424.                   {
  425.                     new_str = replace(instantiate(new_format),
  426.                                       " %no_version_version%",
  427.                                       " %no_version_info%");
  428.                     str = new_str;
  429.                   }
  430.                 else
  431.                   str = replace(instantiate(default_format),
  432.                                 " %no_version_version%",
  433.                                 " %no_version_info%");
  434.  
  435.                 if (empty(unsorted_dll_list))
  436.                   {
  437.                     done = TRUE;
  438.                     newest_str = str;
  439.                     newest_dll = oldest_dll;
  440.                     newest_version_no = oldest_version_no;
  441.                   }
  442.  
  443.                 version_list = cons(str,version_list);
  444.               }
  445.  
  446.             /****************************************************************
  447.               Create lists that will help to determine which dll to install 
  448.               in the bin directory
  449.              ****************************************************************/
  450.  
  451.             if ((newest_dll != new_dll) && not(reinstall_or_downgrade))
  452.               {
  453.  
  454.                /* list of dlls with newer version than the ones on install media */
  455.                 overwrite_list = cons(newest_dll,overwrite_list); 
  456.                 if (newest_dll == bin_dll)
  457.                    bin_list = cons(bin_dll,bin_list);
  458.               }
  459.             extract(dll_list,new_dll);
  460.             extract(dll_list,bin_dll);
  461.  
  462.             if (not(empty(dll_list)))
  463.               {
  464.                 extract(version_list,bin_str);
  465.                 extract(version_list,new_str);
  466.                /* list of  lists of extra copies of a dlls on the path */
  467.                 extra_list = cons(dll_list,extra_list);
  468.                /* same as above, but with version numbers attached */
  469.                 extra_version_list = cons(version_list,extra_version_list);
  470.                 dll_with_extra_list = cons(target,dll_with_extra_list);
  471.               }
  472.           }
  473.           /*******************************************************************
  474.              If there are dlls on the path with newer version number than the
  475.              one on the install media, ask users to select the ones they want
  476.           ********************************************************************/
  477.           if (not(empty(overwrite_list)))
  478.             {
  479.               selected = multiple_selection_dialog(choose_dll,overwrite_list, list(), choose_dll_content,choose_dll_help,'NOCHECKBOX);
  480.               while(not(empty(overwrite_list)))
  481.                 {
  482.                   if (member(selected,first(overwrite_list)))
  483.                     {
  484.                       if (member(bin_list,first(overwrite_list)))
  485.                          bin_overwrite = cons(first(overwrite_list),bin_overwrite);
  486.                       else
  487.                          path_overwrite = cons(first(overwrite_list),path_overwrite);
  488.                       /****************************************************************
  489.                           Note the version number of the installed version...
  490.                        ****************************************************************/
  491.                       if (not((earlier_version(installer_version,"3.0.9.5.0"))))
  492.                         {
  493.                           {
  494.                             final_version_no = windows_file_version(first(overwrite_list));
  495.                             final_version_no = " %final_version_no%";
  496.                           } [ 'OS_ERROR: final_version_no = ""; ]
  497.                         }
  498.                       else
  499.                         final_version_no = "";
  500.  
  501.                       if (final_version_no=="")
  502.                         registration_comment = "%registration_comment%%target% %no_version_info%; ";
  503.                       else
  504.                         registration_comment = "%registration_comment%%target%%final_version_no%; ";
  505.                     }
  506.                     overwrite_list = rest(overwrite_list);
  507.                 }
  508.             }  
  509.  
  510.           /****************************************************************
  511.              If there are extra dlls in the system, ask to rename them...
  512.            ****************************************************************/
  513.           if (not(empty(dll_with_extra_list)))
  514.             {
  515.              selected = multiple_selection_dialog(instantiate(auto_rename),
  516.                                                   dll_with_extra_list,
  517.                                                   list(),
  518.                                                   auto_rename_content,
  519.                                                   instantiate(auto_rename_help),
  520.                                                   'NOCHECKBOX);
  521.  
  522.              while(not(empty(dll_with_extra_list)))
  523.                {
  524.                   if (member(selected,first(dll_with_extra_list)))
  525.                      rename_list = cons(first(extra_list),rename_list);
  526.                   else 
  527.                     {
  528.                      write_to_file_list = cons(first(extra_version_list),write_to_file_list);
  529.                     }
  530.                   extra_list = rest(extra_list);
  531.                   extra_version_list = rest(extra_version_list);
  532.                   dll_with_extra_list = rest(dll_with_extra_list);
  533.  
  534.                }
  535.  
  536.             }
  537.         }
  538.  
  539.       if (not(empty(rename_list)))
  540.         {
  541.           {
  542.             environment_path = v6_translate("%%PATH%%");
  543.           }['OS_ERROR: enviroment_path = "";
  544.             'UNBOUND_ENVIRONMENT_VARIABLE: environment_path = "";
  545.            ]
  546.           if (not(member(explode(environment_path,";"),oracle_home_bin)))
  547.             { 
  548. /*              if (yesno_dialog(instantiate(mod_autoexec_prompt),TRUE,
  549.                                mod_autoexec_content,
  550.                                instantiate("%mod_autoexec_help%")))                
  551.                 add_bin_to_path = true;
  552. */
  553.                 done = single_selection_dialog(instantiate(mod_autoexec_prompt),
  554.                                                ynprompt,
  555.                                                yes_prompt,
  556.                                                mod_autoexec_content,
  557.                                                instantiate("%mod_autoexec_help%"));
  558.                 if (done == yes_prompt)
  559.                   add_bin_to_path = true;
  560.  
  561.             }
  562.         }
  563.  
  564.       /*********************
  565.        Check if system files already exist or if they are old 
  566.        before installing them.
  567.       **********************/
  568.  
  569.       total_sys_size = 0;
  570.       copy_list = list();
  571.       sgroup = "0";
  572.       system_files = group_files(sys);
  573.       product_directory = implode(list(product_home,
  574.                                        product_location(current_product)),"\");
  575.       pathify(product_directory);
  576.       win95_sys_dir = windows_system_directory();
  577.       while (not(empty(system_files)))
  578.       {
  579.          /* Set up the filenames and versions */
  580.          current_destination_file = first(system_files);
  581.  
  582.      if (file_name(current_destination_file) == "msvcrt20.dll")
  583.         sgroup = "20";
  584.  
  585.          current_source_file = implode(list(product_directory,
  586.                                             file_name(current_destination_file)),
  587.                                        "\");
  588.          pathify(current_source_file);
  589.          current_destination_file = instantiate(current_destination_file);
  590.  
  591.          { source_file_version = windows_file_version(current_source_file); }
  592.      ['OS_ERROR: source_file_version = no_version_version; ]
  593.  
  594.      { early_ver = windows_earlier_version(current_destination_file, source_file_version); }
  595.      [ 'OS_ERROR: early_ver = FALSE; ]
  596.  
  597.          if ((not(exists(current_destination_file)))
  598.             || early_ver) 
  599.          {
  600.            add(copy_list, sgroup);
  601.            total_sys_size = total_sys_size + size(current_source_file);
  602.          }
  603.          system_files = rest(system_files);
  604.       }
  605.       ['OS_ERROR:
  606.          {
  607.            system_files = rest(system_files);
  608.            continue();
  609.          }
  610.       ]
  611.  
  612.  
  613.       /***********************************************************************
  614.            Return total size of files depending upon which options were
  615.            selected for installation...
  616.       ************************************************************************/
  617.  
  618.       return(sum(deinstl,dll,nlsfiles,msg,nls_abbreviation,sql)+total_sys_size);
  619.     }
  620.   else
  621.     {
  622.       refresh_map_file = FALSE;
  623.       return(0);
  624.     }
  625. }
  626.