| // ************************************************************* |
| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| // ************************************************************* |
| |
| // This script asks for variables, which are necessary for building the |
| // examples of the Office Development Kit. The script duplicates the template |
| // script and inserts the variables into the copied script. |
| // The Script was developed for the operating systems Microsoft Windows. |
| var regKeyOfficeCurrentUser6432Node = "HKEY_CURRENT_USER\\Software\\Wow6432Node\\OpenOffice\\UNO\\InstallPath\\"; |
| var regKeyOfficeLocaleMachine6432Node = "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\OpenOffice\\UNO\\InstallPath\\"; |
| var regKeyOfficeCurrentUser = "HKEY_CURRENT_USER\\Software\\OpenOffice\\UNO\\InstallPath\\"; |
| var regKeyOfficeLocaleMachine = "HKEY_LOCAL_MACHINE\\Software\\OpenOffice\\UNO\\InstallPath\\"; |
| var regKeyDotNetInstallRoot = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\.NETFramework\\InstallRoot"; |
| var regKeyDotNet1_1 = "HKLM\\Software\\Microsoft\\.NETFramework\\policy\\v1.1\\4322"; |
| var sDirDotNet1_1 = "v1.1.4322"; |
| var regKeyDotNet2_0 = "HKLM\\Software\\Microsoft\\.NETFramework\\Policy\\v2.0\\50727"; |
| var sDirDotNet2_0 = "v2.0.50727"; |
| |
| var regKeyJDK = "HKLM\\Software\\JavaSoft\\Java Development Kit\\"; |
| //var regKeyVC70 = "HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\7.0\\Setup\\VC\\ProductDir"; |
| //var regKeyVC71 = "HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VC\\ProductDir"; |
| var regKeyVC90 = "HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir"; |
| |
| //var regKeyVCExpress80 = "HKLM\\SOFTWARE\\Microsoft\\VCExpress\\8.0\\Setup\\VC\\ProductDir"; |
| var regKeyVCExpress90 = "HKLM\\SOFTWARE\\Microsoft\\VCExpress\\9.0\\Setup\\VC\\ProductDir"; |
| var regKeyVCExpress90_2 = "HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\9.0\\Setup\\VC\\ProductDir"; |
| var regKeyWindowsSDK = "HKLM\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\CurrentInstallFolder"; |
| |
| var WshShell = WScript.CreateObject("WScript.Shell"); |
| var WshSysEnv = WshShell.Environment("process"); |
| var aFileSystemObject = new ActiveXObject("Scripting.FileSystemObject"); |
| var stdin = WScript.StdIn; |
| var stdout = WScript.StdOut; |
| |
| stdout.WriteLine("\n" + |
| " *** Configure your SDK environment ***\n\n" + |
| " NOTE: This script is working only for Windows 2000, Windows XP or newer versions!\n"); |
| |
| var oo_sdk_name=WshSysEnv("OO_SDK_NAME"); |
| var stldebug=""; |
| var oo_sdk_home=getSdkHome(); |
| var oo_user_sdk_dir=WshSysEnv("APPDATA") + "\\" + oo_sdk_name; |
| var oo_user_sdk_env_script=oo_user_sdk_dir + "\\setsdkenv_windows.bat"; |
| |
| var office_home=getOfficeHome(); |
| var office_base_home=getOfficeBaseHome(); |
| |
| var oo_sdk_make_home=getMakeHome(); |
| var oo_sdk_zip_home=getZipHome(); |
| var oo_sdk_cat_home=getCatHome(); |
| var oo_sdk_sed_home=getSedHome(); |
| var oo_sdk_manifest_used=""; |
| var oo_sdk_windowssdk=""; |
| var oo_sdk_cpp_home=getCppHome(); |
| var oo_sdk_cli_home=getCliHome(); |
| var oo_sdk_java_home=getJavaHome(); |
| var oo_sdk_out=getOutputDir(); |
| var sdk_auto_deployment=getAutoDeployment(); |
| |
| writeBatFile(oo_user_sdk_dir, oo_user_sdk_env_script); |
| |
| stdout.Write( |
| "\n ******************************************************************\n" + |
| " * ... \"" + oo_user_sdk_env_script + "\"\n" + |
| " * batch file has been prepared.\n" + |
| " * This batch file will be used in the future to prepare your\n" + |
| " * personal configured SDK environment.\n" + |
| " ******************************************************************\n\n"); |
| // " * For each time you want to use this configured SDK environment,\n" + |
| // " * you have to run the \"setsdkenv_windows.bat\" file in a new shell!\n" + |
| |
| // done ------------------------------------------------------------------------- |
| |
| |
| function skipChoice(msg) |
| { |
| stdout.Write("\n Do you want to skip the choice of " + msg + " (YES/NO) [YES]:"); |
| var sChoice = stdin.ReadLine(); |
| if (sChoice == "" || sChoice.toLowerCase() == "yes") |
| return true; |
| |
| return false; |
| } |
| |
| function getSdkHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_HOME"); |
| if (sSuggestedHome.length == 0) { |
| var scriptname = WScript.ScriptFullName; |
| sSuggestedHome = scriptname.substr(0,scriptname.length-10); |
| } |
| |
| while(true) |
| { |
| stdout.Write("\n Enter the Office Software Development Kit directory [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, use default. |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\". An SDK is required, please" + |
| " specify the path to a valid installation."); |
| continue; |
| } |
| sHome = sSuggestedHome; |
| } |
| else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist. Please enter the path to a" + |
| "valid SDK installation."); |
| continue; |
| } |
| } |
| //Check if this is an sdk folder by looking for the idl sub - dir |
| var idlDir = sHome + "\\idl"; |
| if (! aFileSystemObject.FolderExists(idlDir)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| idlDir + "\". An SDK is required, please specify " + |
| "the path to a valid SDK installation."); |
| continue; |
| } |
| |
| if (aFileSystemObject.FileExists(sHome + "\\lib\\stlport_vc71_stldebug.lib")) { |
| stldebug="_stldebug"; |
| } |
| |
| return sHome; |
| } |
| } |
| |
| function getOfficeOrUre() |
| { |
| var suggestion = "Office"; |
| var choice; |
| while (choice != "office" && choice != "ure") { |
| stdout.Write( |
| "\n Use an installed Office or an installed UNO Runtime" |
| + " Environment (Office/URE) [" + suggestion + "]:"); |
| choice = stdin.ReadLine(); |
| if (choice == "") { |
| choice = suggestion; |
| } |
| choice = choice.toLowerCase(); |
| } |
| return choice; |
| } |
| |
| function getOfficeHome() |
| { |
| var sSuggestedHome = WshSysEnv("OFFICE_HOME"); |
| if (sSuggestedHome.length == 0) |
| { |
| try { |
| sSuggestedHome = WshShell.RegRead(regKeyOfficeCurrentUser6432Node); |
| //The registry entry points to the program folder but we need the |
| //installation folder |
| } catch(exc) {} |
| if (sSuggestedHome.length == 0) |
| { |
| try { |
| sSuggestedHome = WshShell.RegRead(regKeyOfficeLocaleMachine6432Node); |
| //The registry entry points to the program folder but we need |
| //the installation folder |
| } catch (exc) {} |
| } |
| if (sSuggestedHome.length == 0) |
| { |
| try { |
| sSuggestedHome = WshShell.RegRead(regKeyOfficeLocaleMachine); |
| //The registry entry points to the program folder but we need |
| //the installation folder |
| } catch (exc) {} |
| } |
| if (sSuggestedHome.length == 0) |
| { |
| try { |
| sSuggestedHome = WshShell.RegRead(regKeyOfficeLocaleMachine); |
| //The registry entry points to the program folder but we need |
| //the installation folder |
| } catch (exc) {} |
| } |
| |
| var index=0; |
| if ((index = sSuggestedHome.lastIndexOf("\\")) != -1) |
| sSuggestedHome = sSuggestedHome.substr(0, index); |
| |
| if (sSuggestedHome.length == 0) |
| sSuggestedHome = searchOffice(); |
| } |
| |
| while(true) |
| { |
| stdout.Write("\n Enter the Office base installation directory [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, use default. |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\" An office installation is " + |
| "required, please specify the path to a valid " + |
| "office installation."); |
| sSuggestedHome = ""; |
| continue; |
| } |
| sHome = sSuggestedHome; |
| } else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist. Please specify the path to " + |
| "a valid office installation."); |
| continue; |
| } |
| } |
| //Check if this is a valid office installtion folder by looking for the |
| //program sub-directory |
| var progDir = sHome + "\\program"; |
| if (! aFileSystemObject.FolderExists(progDir)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| progDir + "\". An office installation is required, " + |
| "please specify the path to a valid office " + |
| "installation."); |
| continue; |
| } |
| return sHome; |
| } |
| } |
| |
| function searchOffice() |
| { |
| var tmp = oo_sdk_home; |
| var officepath =""; |
| var index=-1; |
| |
| if ((index = tmp.lastIndexOf("\\sdk")) != -1) { |
| tmp = tmp.substr(0, index); |
| } |
| |
| if (aFileSystemObject.FileExists(tmp + "\\program\\soffice.exe")) { |
| return tmp; |
| } |
| |
| return ""; |
| } |
| |
| |
| function getOfficeBaseHome() |
| { |
| var officebase = oo_sdk_home; |
| var index=officebase.lastIndexOf("\\"); |
| |
| officebase = officebase.substr(0, index); |
| |
| return officebase; |
| } |
| |
| function getMakeHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_MAKE_HOME"); |
| |
| while(true) |
| { |
| stdout.Write("\n Enter GNU make (3.79.1 or higher) tools directory [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, use default. |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\". GNU make is required, " + |
| "please specify a GNU make tools directory."); |
| sSuggestedHome = ""; |
| continue; |
| } |
| sHome = sSuggestedHome; |
| } else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist. GNU make is required, " + |
| "please specify a GNU make tools directory."); |
| continue; |
| } |
| } |
| //Check for the make executable |
| var sMakePath = sHome + "\\make.exe"; |
| if (! aFileSystemObject.FileExists(sMakePath)) |
| { |
| sMakePath = sHome + "\\mingw32-make.exe"; |
| } |
| if (! aFileSystemObject.FileExists(sMakePath)) |
| { |
| stdout.WriteLine("\n Error: Could not find \"" + sMakePath + |
| "\". GNU make is required, please specify a GNU " + |
| "make tools directory."); |
| continue; |
| } |
| return sHome; |
| } |
| } |
| |
| function getZipHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_ZIP_HOME"); |
| |
| if (sSuggestedHome.length == 0 && oo_sdk_make_home.length > 0) { |
| sSuggestedHome = oo_sdk_make_home; |
| } |
| |
| while(true) |
| { |
| stdout.Write("\n Enter a zip (2.3 or higher) tools directory [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, use default. |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\". zip is required, please " + |
| "specify a zip tools directory."); |
| sSuggestedHome = ""; |
| continue; |
| } |
| sHome = sSuggestedHome; |
| } |
| else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist. zip is required, please " + |
| "specify a zip tools directory."); |
| continue; |
| } |
| } |
| //Check for the make executable |
| var sZipPath = sHome + "\\zip.exe"; |
| if (! aFileSystemObject.FileExists(sZipPath)) |
| { |
| stdout.WriteLine("\n Error: Could not find \"" + sZipPath + |
| "\". zip is required, please specify a zip tools " + |
| "directory."); |
| continue; |
| } |
| return sHome; |
| } |
| } |
| |
| function getCatHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_CAT_HOME"); |
| |
| if (sSuggestedHome.length == 0 && oo_sdk_make_home.length > 0) { |
| sSuggestedHome = oo_sdk_make_home; |
| } |
| |
| while(true) |
| { |
| stdout.Write("\n Enter a cat (2.0 or higher) tools directory [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, use default. |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\". cat is required, please " + |
| "specify a cat tools directory." + |
| "\nYou can get cat from " + |
| "http://sourceforge.net/projects/unxutils/files/latest/download"); |
| sSuggestedHome = ""; |
| continue; |
| } |
| sHome = sSuggestedHome; |
| } |
| else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist. cat is required, please " + |
| "specify a cat tools directory." + |
| "\nYou can get cat from " + |
| "http://sourceforge.net/projects/unxutils/files/latest/download"); |
| continue; |
| } |
| } |
| //Check for the make executable |
| var sCatPath = sHome + "\\cat.exe"; |
| if (! aFileSystemObject.FileExists(sCatPath)) |
| { |
| stdout.WriteLine("\n Error: Could not find \"" + sCatPath + |
| "\". cat is required, please specify a cat tools " + |
| "directory." + |
| "\nYou can get cat from " + |
| "http://sourceforge.net/projects/unxutils/files/latest/download"); |
| continue; |
| } |
| return sHome; |
| } |
| } |
| |
| function getSedHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_SED_HOME"); |
| |
| if (sSuggestedHome.length == 0 && oo_sdk_make_home.length > 0) { |
| sSuggestedHome = oo_sdk_make_home; |
| } |
| |
| while(true) |
| { |
| stdout.Write("\n Enter a sed (3.02 or higher) tools directory [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, use default. |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\". sed is required, please " + |
| "specify a sed tools directory." + |
| "\nYou can get sed from " + |
| "http://sourceforge.net/projects/unxutils/files/latest/download"); |
| sSuggestedHome = ""; |
| continue; |
| } |
| sHome = sSuggestedHome; |
| } |
| else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist. sed is required, please " + |
| "specify a sed tools directory." + |
| "\nYou can get sed from " + |
| "http://sourceforge.net/projects/unxutils/files/latest/download"); |
| continue; |
| } |
| } |
| //Check for the make executable |
| var sSedPath = sHome + "\\sed.exe"; |
| if (! aFileSystemObject.FileExists(sSedPath)) |
| { |
| stdout.WriteLine("\n Error: Could not find \"" + sSedPath + |
| "\". sed is required, please specify a sed tools " + |
| "directory." + |
| "\nYou can get sed from " + |
| "http://sourceforge.net/projects/unxutils/files/latest/download"); |
| continue; |
| } |
| return sHome; |
| } |
| } |
| |
| function getCppHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_CPP_HOME"); |
| if (sSuggestedHome.length == 0) |
| { |
| var sVC=""; |
| try { |
| sVC = WshShell.RegRead(regKeyVCExpress90); |
| }catch (exc) {} |
| if (sVC.length == 0) |
| { |
| try { |
| sVC = WshShell.RegRead(regKeyVCExpress90_2); |
| }catch (exc) {} |
| } |
| if (sVC.length == 0) |
| { |
| try { |
| sVC = WshShell.RegRead(regKeyVC90); |
| }catch (exc) {} |
| } |
| // check Windows SDK if VC 9 |
| if (sVC.length > 0) |
| { |
| oo_sdk_manifest_used="true"; |
| try { |
| oo_sdk_windowssdk = WshShell.RegRead(regKeyWindowsSDK); |
| }catch (exc) {} |
| } |
| if (sVC.length == 0) |
| { |
| try { |
| sVC = WshShell.RegRead(regKeyVCExpress80); |
| }catch (exc) {} |
| if (sVC.length > 0) |
| oo_sdk_manifest_used="true"; |
| } |
| if (sVC.length == 0) |
| { |
| try { |
| sVC = WshShell.RegRead(regKeyVC80); |
| }catch (exc) {} |
| if (sVC.length > 0) |
| oo_sdk_manifest_used="true"; |
| } |
| if (sVC.length == 0) |
| { |
| try { |
| sVC = WshShell.RegRead(regKeyVC71); |
| }catch (exc) {} |
| } |
| if (sVC.length > 0) |
| { |
| sVC += "bin"; |
| if (aFileSystemObject.FileExists(sVC + "\\cl.exe")) |
| sSuggestedHome = sVC; |
| } |
| } |
| |
| var bSkip = false; |
| while(true) |
| { |
| stdout.Write("\n Enter the directory of the C++ compiler (optional) [" + |
| sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, check OO_SDK_CPP_HOME or suggested value |
| if ( sSuggestedHome.length == 0 ) { |
| bSkip = true; |
| } else { |
| if ( !aFileSystemObject.FolderExists(sSuggestedHome) ) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\"."); |
| sSuggestedHome = ""; |
| bSkip = true; |
| } |
| } |
| |
| sHome = sSuggestedHome; |
| } else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sHome + "\"."); |
| bSkip = true; |
| } |
| } |
| |
| if ( !bSkip) { |
| //Check if the C++ compiler exist |
| var cl = sHome + "\\cl.exe"; |
| var mt = sHome + "\\mt.exe"; |
| |
| if (! aFileSystemObject.FileExists(cl)) |
| { |
| stdout.WriteLine("\n Error: Could not find the C++ compiler \"" |
| + cl + "\"."); |
| sHome = ""; |
| bSkip = true; |
| } else { |
| if (aFileSystemObject.FileExists(mt)) { |
| oo_sdk_vc8_used="true"; |
| } |
| } |
| } |
| |
| if ( bSkip ) { |
| if ( skipChoice("the C++ compiler") ) { |
| return ""; |
| } else { |
| bSkip = false; |
| continue; |
| } |
| } |
| |
| return sHome; |
| } |
| } |
| |
| function getCliHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_CLI_HOME"); |
| |
| if (sSuggestedHome.length == 0) |
| { |
| try { |
| var _ver = WshShell.RegRead(regKeyDotNet2_0); |
| if (_ver.length > 0) |
| { |
| sSuggestedHome = WshShell.RegRead(regKeyDotNetInstallRoot); |
| sSuggestedHome += sDirDotNet2_0; |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| sSuggestedHome = ""; |
| } |
| |
| if (sSuggestedHome.length == 0) |
| { |
| _ver = WshShell.RegRead(regKeyDotNet1_1); |
| if (_ver.length > 0) |
| { |
| sSuggestedHome = WshShell.RegRead(regKeyDotNetInstallRoot); |
| sSuggestedHome += sDirDotNet1_1; |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome)) |
| sSuggestedHome = ""; |
| } |
| } |
| } catch (exc) {} |
| } |
| |
| var bSkip = false; |
| while(true) |
| { |
| stdout.Write("\n Enter the directory of the C# and VB.NET compilers (optional) [" + sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, check OO_SDK_CLI_HOME or suggested value |
| if ( sSuggestedHome.length == 0 ) { |
| bSkip = true; |
| } else { |
| if ( !aFileSystemObject.FolderExists(sSuggestedHome) ) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\"."); |
| sSuggestedHome = ""; |
| bSkip = true; |
| } |
| } |
| |
| sHome = sSuggestedHome; |
| } |
| else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist."); |
| bSkip = true; |
| } |
| } |
| |
| if ( !bSkip ) { |
| //Check if the C# and VB.NET compiler exist |
| var csc = sHome + "\\csc.exe"; |
| var vbc = sHome + "\\vbc.exe"; |
| |
| if (! aFileSystemObject.FileExists(csc)) |
| { |
| stdout.WriteLine("\n Error: Could not find the C# compiler \"" + |
| csc + "\"."); |
| bSkip = true; |
| } |
| if (! aFileSystemObject.FileExists(vbc)) |
| { |
| stdout.WriteLine("\n Error: Could not find the VB.NET compiler \"" + |
| vbc + "\"."); |
| bSkip = true; |
| } |
| } |
| |
| if ( bSkip ) { |
| if ( skipChoice("the C# and VB.NET compilers") ) { |
| return ""; |
| } else { |
| bSkip = false; |
| continue; |
| } |
| } |
| |
| return sHome; |
| } |
| } |
| |
| function getJavaHome() |
| { |
| var sSuggestedHome = WshSysEnv("OO_SDK_JAVA_HOME"); |
| if (sSuggestedHome.length == 0) |
| { |
| try { |
| var currentVersion = WshShell.RegRead(regKeyJDK + "CurrentVersion"); |
| if (currentVersion.length > 0) |
| { |
| sSuggestedHome = WshShell.RegRead(regKeyJDK + currentVersion + |
| "\\JavaHome"); |
| if ( ! aFileSystemObject.FolderExists(sSuggestedHome) ) |
| sSuggestedHome = ""; |
| } |
| } catch (exc) {} |
| } |
| |
| var bSkip = false; |
| while(true) |
| { |
| stdout.Write("\n Enter JAVA SDK (1.4.1_01 or higher) installation directory (optional) [" + sSuggestedHome + "]:"); |
| var sHome = stdin.ReadLine(); |
| if (sHome.length == 0) |
| { |
| //No user input, check OO_SDK_JAVA_HOME or suggested value |
| if ( sSuggestedHome.length == 0 ) { |
| bSkip = true; |
| } else { |
| if ( !aFileSystemObject.FolderExists(sSuggestedHome) ) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedHome + "\"."); |
| sSuggestedHome = ""; |
| bSkip=true; |
| } |
| } |
| |
| sHome = sSuggestedHome; |
| } else |
| { |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sHome)) |
| { |
| stdout.WriteLine("\n Error: The directory \"" + sHome + |
| "\" does not exist."); |
| bSkip = true; |
| } |
| } |
| |
| if ( !bSkip) { |
| //Check if this is an sdk folder by looking for the javac compiler |
| var javacompiler = sHome + "\\bin\\javac.exe"; |
| if (! aFileSystemObject.FileExists(javacompiler)) |
| { |
| stdout.WriteLine("\n Error: Could not find \"" + |
| javacompiler + "\"."); |
| bSkip = true; |
| } |
| } |
| |
| if ( bSkip ) { |
| if ( skipChoice("the Java SDK") ) { |
| return ""; |
| } else { |
| bSkip = false; |
| continue; |
| } |
| } |
| |
| return sHome; |
| } |
| } |
| |
| function getOutputDir() |
| { |
| var defaultdir = "c:\\" + oo_sdk_name; |
| var sSuggestedDir = WshSysEnv("OO_SDK_OUT"); |
| if (sSuggestedDir.length == 0) |
| sSuggestedDir = defaultdir; |
| |
| var bSkip = false; |
| while(true) |
| { |
| stdout.Write( |
| "\n Default output directory is the \"c:\\" + oo_sdk_name + "\".\n" + |
| " Enter an existent directory if you prefer a different one. But note" + |
| " that only\n a path without spaces is allowed because of a" + |
| " limitation of gnu make. (optional) [" + sSuggestedDir + "]:"); |
| var sDir = stdin.ReadLine(); |
| if (sDir.length == 0) |
| { |
| //No user input, check OO_SDK_OUT or suggested value |
| if ( sSuggestedDir.length == 0 ) { |
| bSkip = true; |
| } else { |
| if (sSuggestedDir == oo_user_sdk_dir || sSuggestedDir == defaultdir) { |
| var fso = new ActiveXObject("Scripting.FileSystemObject"); |
| if ( !fso.FolderExists(sSuggestedDir) ) |
| fso.CreateFolder(sSuggestedDir); |
| } |
| if ( !aFileSystemObject.FolderExists(sSuggestedDir) ) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sSuggestedDir + "\"."); |
| sSuggestedDir = ""; |
| bSkip = true; |
| } |
| } |
| |
| sDir = sSuggestedDir; |
| } |
| else |
| { |
| if (sDir.indexOf(' ') != -1) { |
| stdout.WriteLine("\n Error: your specified output directory " + |
| "\"" + sDir + "\" " + |
| "contains one or more spaces.\n That " + |
| "causes problems with gnu make. Please specifiy" + |
| " a directory without spaces."); |
| bSkip = true; |
| } |
| //validate the user input |
| if ( ! aFileSystemObject.FolderExists(sDir)) |
| { |
| stdout.WriteLine("\n Error: Could not find directory \"" + |
| sDir + "\"."); |
| bSkip = true; |
| } |
| } |
| |
| if ( bSkip ) { |
| if ( skipChoice("a special output directory") ) { |
| return ""; |
| } else { |
| bSkip = false; |
| continue; |
| } |
| } |
| |
| return sDir; |
| } |
| } |
| |
| function getAutoDeployment() |
| { |
| var sSuggestedAuto = WshSysEnv("SDK_AUTO_DEPLOYMENT"); |
| if (sSuggestedAuto.length == 0) |
| sSuggestedAuto = "YES"; |
| |
| while(true) |
| { |
| stdout.Write("\n Automatic deployment of UNO components (YES/NO) ["+ |
| sSuggestedAuto + "]:"); |
| var sAuto = stdin.ReadLine(); |
| if (sAuto.length == 0) |
| sAuto = sSuggestedAuto; |
| else |
| { |
| sAutoU = sAuto.toUpperCase(); |
| if (sAutoU != "YES" && sAutoU != "NO") |
| { |
| stdout.WriteLine("\n Error: The value \"" + sAuto + "\" is " + |
| "invalid. Please answer YES or NO.") |
| continue; |
| } |
| sAuto = sAutoU; |
| } |
| return sAuto; |
| } |
| } |
| |
| //The function uses sp2bv.exe to obtain a file URL from a |
| //system path. The URL is already escaped for use as bootstrap variable. |
| //($ -> \$). Then the resulting string is escaped for use in a bat file. |
| //That is % signs are made to double % (% -> %%); |
| function makeBootstrapFileUrl(systemPath) |
| { |
| var oExec = WshShell.Exec("sp2bv.exe \"" + systemPath + "\""); |
| var output=""; |
| while (true) |
| { |
| if (!oExec.StdOut.AtEndOfStream) |
| { |
| var next = oExec.StdOut.Read(1); |
| if (next == '%') |
| output += "%%"; |
| else |
| output += next; |
| } |
| else |
| break; |
| } |
| return output; |
| } |
| |
| function writeBatFile(fdir, file) |
| { |
| var fso = new ActiveXObject("Scripting.FileSystemObject"); |
| if ( !fso.FolderExists(fdir) ) |
| fso.CreateFolder(fdir); |
| var newFile = fso.CreateTextFile(file, true); |
| |
| newFile.Write( |
| "@echo off\n" + |
| "REM This script sets all environment variables, which\n" + |
| "REM are necessary for building the examples of the Office Development Kit.\n" + |
| "REM The Script was developed for the operating systems Windows.\n" + |
| "REM The SDK name\n" + |
| "REM Example: @set \"OO_SDK_NAME=openoffice4.0_sdk\"\n" + |
| "@set \"OO_SDK_NAME=" + oo_sdk_name + |
| "\"\n\n" + |
| "REM Installation directory of the Software Development Kit.\n" + |
| "REM Example: @set \"OO_SDK_HOME=C:\\Program Files\\OpenOffice\\4\\sdk\"\n" + |
| "@set \"OO_SDK_HOME=" + oo_sdk_home + |
| "\"\n\n" + |
| "REM Office installation directory.\n" + |
| "REM Example: @set \"OFFICE_HOME=C:\\Program Files\\OpenOffice 4\"\n" + |
| "@set \"OFFICE_HOME=" + office_home + |
| "\"\n\n" + |
| "REM Directory of the make command.\n" + |
| "REM Example: @set \"OO_SDK_MAKE_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" + |
| "@set \"OO_SDK_MAKE_HOME=" + oo_sdk_make_home + |
| "\"\n\n" + |
| "REM Directory of the zip tool.\n" + |
| "REM Example: @set \"OO_SDK_ZIP_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" + |
| "@set \"OO_SDK_ZIP_HOME=" + oo_sdk_zip_home + |
| "\"\n\n" + |
| "REM Directory of the cat tool.\n" + |
| "REM Example: @set \"OO_SDK_CAT_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" + |
| "@set \"OO_SDK_CAT_HOME=" + oo_sdk_cat_home + |
| "\"\n\n" + |
| "REM Directory of the sed tool.\n" + |
| "REM Example: @set \"OO_SDK_SED_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" + |
| "@set \"OO_SDK_SED_HOME=" + oo_sdk_sed_home + |
| "\"\n\n" + |
| "REM Directory of the C++ compiler.\n" + |
| "REM Example: @set \"OO_SDK_CPP_HOME=C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\bin\"\n" + |
| "@set \"OO_SDK_CPP_HOME=" + oo_sdk_cpp_home + |
| "\"\n@set \"CPP_MANIFEST=" + oo_sdk_manifest_used + |
| "\"\n@set \"CPP_WINDOWS_SDK=" + oo_sdk_windowssdk + |
| "\"\n\n" + |
| "REM Directory of the C# and VB.NET compilers.\n" + |
| "REM Example: @set \"OO_SDK_CLI_HOME=C:\\WINXP\\Microsoft.NET\\Framework\\v1.0.3705\"\n" + |
| "@set \"OO_SDK_CLI_HOME=" + oo_sdk_cli_home + |
| "\"\n\n" + |
| "REM Java SDK installation directory.\n" + |
| "REM Example: @set \"OO_SDK_JAVA_HOME=C:\\Program Files\\Java\\jdk1.6.0_05\"\n" + |
| "@set \"OO_SDK_JAVA_HOME=" + oo_sdk_java_home + |
| "\"\n\n" + |
| "REM Special output directory\n" + |
| "REM Example: @set \"OO_SDK_OUT=C:\\" + oo_sdk_name + "\"\n" + |
| "@set \"OO_SDK_OUT=" + oo_sdk_out + |
| "\"\n\n" + |
| "REM Automatic deployment\n" + |
| "REM Example: @set \"SDK_AUTO_DEPLOYMENT=YES\"\n" + |
| "@set \"SDK_AUTO_DEPLOYMENT=" + sdk_auto_deployment + |
| "\"\n\n" + |
| "REM Check installation path for the Office Development Kit.\n" + |
| "if not defined OO_SDK_HOME (\n" + |
| " echo Error: the variable OO_SDK_HOME is missing!\n" + |
| " goto :error\n" + |
| " )\n" + |
| "\n\n" + |
| "REM Check installation path for GNU make.\n" + |
| "if not defined OO_SDK_MAKE_HOME (\n" + |
| " echo Error: the variable OO_SDK_MAKE_HOME is missing!\n" + |
| " goto :error\n" + |
| " )\n" + |
| "\n" + |
| "REM Check installation path for the zip tool.\n" + |
| "if not defined OO_SDK_ZIP_HOME (\n" + |
| " echo Error: the variable OO_SDK_ZIP_HOME is missing!\n" + |
| " goto :error\n" + |
| " )\n" + |
| "\n" + |
| "REM Check installation path for the cat tool.\n" + |
| "if not defined OO_SDK_CAT_HOME (\n" + |
| " echo Error: the variable OO_SDK_CAT_HOME is missing!\n" + |
| " goto :error\n" + |
| " )\n" + |
| "\n" + |
| "REM Check installation path for the sed tool.\n" + |
| "if not defined OO_SDK_SED_HOME (\n" + |
| " echo Error: the variable OO_SDK_SED_HOME is missing!\n" + |
| " goto :error\n" + |
| " )\n" + |
| "\n" + |
| "REM Set library path. \n" + |
| "@set \"LIB=%OO_SDK_HOME%\\lib;%LIB%\"\n" + |
| "if defined CPP_WINDOWS_SDK (\n" + |
| " @set \"LIB=%LIB%;%CPP_WINDOWS_SDK%\\lib\"\n" + |
| " )\n" + |
| "\n" + |
| "REM Set office program path.\n" + |
| "if defined OFFICE_HOME (\n" + |
| " @set \"OFFICE_PROGRAM_PATH=%OFFICE_HOME%\\program\"\n" + |
| " )" + |
| "\n" + |
| "REM Set UNO path, necessary to ensure that the cpp examples using the\n" + |
| "REM new UNO bootstrap mechanism use the configured office installation\n" + |
| "REM (only set when using an Office).\n" + |
| "if defined OFFICE_HOME (\n" + |
| " @set \"UNO_PATH=%OFFICE_PROGRAM_PATH%\"\n" + |
| " )\n" + |
| "\n\n" + |
| "@set \"OO_SDK_OFFICE_BIN_DIR=%OFFICE_PROGRAM_PATH%\"\n" + |
| "@set \"OO_SDK_OFFICE_LIB_DIR=%OFFICE_PROGRAM_PATH%\"\n" + |
| "@set \"OO_SDK_OFFICE_JAVA_DIR=%OFFICE_PROGRAM_PATH%\\classes\"\n" + |
| "\n" + |
| "REM Set classpath\n" + |
| "@set \"CLASSPATH=%OO_SDK_OFFICE_JAVA_DIR%\\juh.jar;%OO_SDK_OFFICE_JAVA_DIR%\\jurt.jar;%OO_SDK_OFFICE_JAVA_DIR%\\ridl.jar;%OO_SDK_OFFICE_JAVA_DIR%\\unoloader.jar;%OO_SDK_OFFICE_JAVA_DIR%\\unoil.jar\"\n" + |
| "\n" + |
| "REM Add directory of the SDK tools to the path.\n" + |
| "set \"PATH=%OO_SDK_HOME%\\bin;%OO_SDK_OFFICE_BIN_DIR%;%OO_SDK_OFFICE_BIN_DIR%;%OO_SDK_HOME%\\WINexample.out\\bin;%OO_SDK_MAKE_HOME%;%OO_SDK_ZIP_HOME%;%OO_SDK_CAT_HOME%;%OO_SDK_SED_HOME%;%PATH%\"\n" + |
| "\n" + |
| "REM Set PATH appropriate to the output directory\n" + |
| "if defined OO_SDK_OUT (\n" + |
| " @set \"PATH=%OO_SDK_OUT%\\WINexample.out\\bin;%PATH%\"\n" + |
| " ) else (\n" + |
| " @set \"PATH=%OO_SDK_HOME%\\WINexample.out\\bin;%PATH%\"\n" + |
| " )\n" + |
| "\n" + |
| "REM Add directory of the Win SDK to the path, if necessary.\n" + |
| "if defined CPP_WINDOWS_SDK (\n" + |
| " @set \"PATH=%CPP_WINDOWS_SDK\\bin%;%PATH%\"\n" + |
| " @set \"INCLUDE=%CPP_WINDOWS_SDK\\Include%;%INCLUDE%\"\n" + |
| ")\n" + |
| "REM Add directory of the C# and VB.NET compilers to the path, if necessary.\n" + |
| "if defined OO_SDK_CLI_HOME @set \"PATH=%OO_SDK_CLI_HOME%;%PATH%\"\n" + |
| "\n" + |
| "REM Add directory of the Java tools to the path, if necessary.\n" + |
| "if defined OO_SDK_JAVA_HOME @set \"PATH=%OO_SDK_JAVA_HOME%\\bin;%OO_SDK_JAVA_HOME%\\jre\\bin;%PATH%\"\n" + |
| "\n" + |
| "REM Set environment for C++ compiler tools, if necessary.\n" + |
| "if defined OO_SDK_CPP_HOME call \"%OO_SDK_CPP_HOME%\\VCVARS32.bat\"\n" + |
| "\n" + |
| "REM Set tilte to identify the prepared shell.\n" + |
| "title Shell prepared for SDK\n" + |
| "\nREM Prepare shell with all necessary environment variables.\n" + |
| "echo.\n" + |
| "echo ******************************************************************\n" + |
| "echo *\n" + |
| "echo * SDK environment is prepared for Windows\n" + |
| "echo *\n" + |
| "echo * SDK = %OO_SDK_HOME%\n" + |
| "echo * Office = %OFFICE_HOME%\n" + |
| "echo * Make = %OO_SDK_MAKE_HOME%\n" + |
| "echo * Zip = %OO_SDK_ZIP_HOME%\n" + |
| "echo * cat = %OO_SDK_CAT_HOME%\n" + |
| "echo * sed = %OO_SDK_SED_HOME%\n" + |
| "echo * C++ Compiler = %OO_SDK_CPP_HOME%\n" + |
| "echo * C# and VB.NET compilers = %OO_SDK_CLI_HOME%\n" + |
| "echo * Java = %OO_SDK_JAVA_HOME%\n" + |
| "echo * Special Output directory = %OO_SDK_OUT%\n" + |
| "echo * Auto deployment = %SDK_AUTO_DEPLOYMENT%\n" + |
| "echo *\n" + |
| "echo ******************************************************************\n" + |
| "echo.\n" + |
| "goto end\n" + |
| "\n" + |
| " :error\n" + |
| "Error: Please insert the necessary environment variables into the batch file.\n" + |
| "\n" + |
| " :end\n" |
| ); |
| newFile.Close(); |
| } |