xref: /aoo4110/main/odk/cfgWin.js (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski// *************************************************************
2*b1cdbd2cSJim Jagielski//
3*b1cdbd2cSJim Jagielski//  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski//  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski//  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski//  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski//  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski//  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski//  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski//
11*b1cdbd2cSJim Jagielski//    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski//
13*b1cdbd2cSJim Jagielski//  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski//  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski//  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski//  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski//  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski//  under the License.
19*b1cdbd2cSJim Jagielski//
20*b1cdbd2cSJim Jagielski// *************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski// This script asks for variables, which are necessary for building the
23*b1cdbd2cSJim Jagielski// examples of the Office Development Kit. The script duplicates the template
24*b1cdbd2cSJim Jagielski// script and inserts the variables into the copied script.
25*b1cdbd2cSJim Jagielski// The Script was developed for the operating systems Microsoft Windows.
26*b1cdbd2cSJim Jagielskivar regKeyOfficeCurrentUser6432Node = "HKEY_CURRENT_USER\\Software\\Wow6432Node\\OpenOffice\\UNO\\InstallPath\\";
27*b1cdbd2cSJim Jagielskivar regKeyOfficeLocaleMachine6432Node = "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\OpenOffice\\UNO\\InstallPath\\";
28*b1cdbd2cSJim Jagielskivar regKeyOfficeCurrentUser = "HKEY_CURRENT_USER\\Software\\OpenOffice\\UNO\\InstallPath\\";
29*b1cdbd2cSJim Jagielskivar regKeyOfficeLocaleMachine = "HKEY_LOCAL_MACHINE\\Software\\OpenOffice\\UNO\\InstallPath\\";
30*b1cdbd2cSJim Jagielskivar regKeyDotNetInstallRoot = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\.NETFramework\\InstallRoot";
31*b1cdbd2cSJim Jagielskivar regKeyDotNet1_1 = "HKLM\\Software\\Microsoft\\.NETFramework\\policy\\v1.1\\4322";
32*b1cdbd2cSJim Jagielskivar sDirDotNet1_1 = "v1.1.4322";
33*b1cdbd2cSJim Jagielskivar regKeyDotNet2_0 = "HKLM\\Software\\Microsoft\\.NETFramework\\Policy\\v2.0\\50727";
34*b1cdbd2cSJim Jagielskivar sDirDotNet2_0 = "v2.0.50727";
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskivar regKeyJDK = "HKLM\\Software\\JavaSoft\\Java Development Kit\\";
37*b1cdbd2cSJim Jagielski//var regKeyVC70 = "HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\7.0\\Setup\\VC\\ProductDir";
38*b1cdbd2cSJim Jagielski//var regKeyVC71 = "HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VC\\ProductDir";
39*b1cdbd2cSJim Jagielskivar regKeyVC90 = "HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir";
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski//var regKeyVCExpress80 = "HKLM\\SOFTWARE\\Microsoft\\VCExpress\\8.0\\Setup\\VC\\ProductDir";
42*b1cdbd2cSJim Jagielskivar regKeyVCExpress90 = "HKLM\\SOFTWARE\\Microsoft\\VCExpress\\9.0\\Setup\\VC\\ProductDir";
43*b1cdbd2cSJim Jagielskivar regKeyVCExpress90_2 = "HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\9.0\\Setup\\VC\\ProductDir";
44*b1cdbd2cSJim Jagielskivar regKeyWindowsSDK = "HKLM\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\CurrentInstallFolder";
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielskivar WshShell = WScript.CreateObject("WScript.Shell");
47*b1cdbd2cSJim Jagielskivar WshSysEnv = WshShell.Environment("process");
48*b1cdbd2cSJim Jagielskivar aFileSystemObject =  new ActiveXObject("Scripting.FileSystemObject");
49*b1cdbd2cSJim Jagielskivar stdin = WScript.StdIn;
50*b1cdbd2cSJim Jagielskivar stdout = WScript.StdOut;
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielskistdout.WriteLine("\n" +
53*b1cdbd2cSJim Jagielski" *** Configure your SDK environment ***\n\n" +
54*b1cdbd2cSJim Jagielski" NOTE: This script is working only for Windows 2000, Windows XP or newer versions!\n");
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielskivar oo_sdk_name=WshSysEnv("OO_SDK_NAME");
57*b1cdbd2cSJim Jagielskivar stldebug="";
58*b1cdbd2cSJim Jagielskivar oo_sdk_home=getSdkHome();
59*b1cdbd2cSJim Jagielskivar oo_user_sdk_dir=WshSysEnv("APPDATA") + "\\" + oo_sdk_name;
60*b1cdbd2cSJim Jagielskivar oo_user_sdk_env_script=oo_user_sdk_dir + "\\setsdkenv_windows.bat";
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielskivar office_home=getOfficeHome();
63*b1cdbd2cSJim Jagielskivar office_base_home=getOfficeBaseHome();
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielskivar oo_sdk_make_home=getMakeHome();
66*b1cdbd2cSJim Jagielskivar oo_sdk_zip_home=getZipHome();
67*b1cdbd2cSJim Jagielskivar oo_sdk_cat_home=getCatHome();
68*b1cdbd2cSJim Jagielskivar oo_sdk_sed_home=getSedHome();
69*b1cdbd2cSJim Jagielskivar oo_sdk_manifest_used="";
70*b1cdbd2cSJim Jagielskivar oo_sdk_windowssdk="";
71*b1cdbd2cSJim Jagielskivar oo_sdk_cpp_home=getCppHome();
72*b1cdbd2cSJim Jagielskivar oo_sdk_cli_home=getCliHome();
73*b1cdbd2cSJim Jagielskivar oo_sdk_java_home=getJavaHome();
74*b1cdbd2cSJim Jagielskivar oo_sdk_out=getOutputDir();
75*b1cdbd2cSJim Jagielskivar sdk_auto_deployment=getAutoDeployment();
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim JagielskiwriteBatFile(oo_user_sdk_dir, oo_user_sdk_env_script);
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielskistdout.Write(
80*b1cdbd2cSJim Jagielski	"\n ******************************************************************\n" +
81*b1cdbd2cSJim Jagielski    " * ... \"" + oo_user_sdk_env_script + "\"\n" +
82*b1cdbd2cSJim Jagielski    " * batch file has been prepared.\n" +
83*b1cdbd2cSJim Jagielski    " * This batch file will be used in the future to prepare your\n" +
84*b1cdbd2cSJim Jagielski	" * personal configured SDK environment.\n" +
85*b1cdbd2cSJim Jagielski	" ******************************************************************\n\n");
86*b1cdbd2cSJim Jagielski//    " * For each time you want to use this configured SDK environment,\n" +
87*b1cdbd2cSJim Jagielski//    " * you have to run the \"setsdkenv_windows.bat\" file in a new shell!\n" +
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski// done -------------------------------------------------------------------------
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielskifunction skipChoice(msg)
93*b1cdbd2cSJim Jagielski{
94*b1cdbd2cSJim Jagielski	stdout.Write("\n Do you want to skip the choice of " + msg + " (YES/NO) [YES]:");
95*b1cdbd2cSJim Jagielski	var sChoice = stdin.ReadLine();
96*b1cdbd2cSJim Jagielski    if (sChoice == "" || sChoice.toLowerCase() == "yes")
97*b1cdbd2cSJim Jagielski	   return true;
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski	return false;
100*b1cdbd2cSJim Jagielski}
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielskifunction getSdkHome()
103*b1cdbd2cSJim Jagielski{
104*b1cdbd2cSJim Jagielski	var sSuggestedHome = WshSysEnv("OO_SDK_HOME");
105*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0) {
106*b1cdbd2cSJim Jagielski        var scriptname = WScript.ScriptFullName;
107*b1cdbd2cSJim Jagielski        sSuggestedHome = scriptname.substr(0,scriptname.length-10);
108*b1cdbd2cSJim Jagielski    }
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski    while(true)
111*b1cdbd2cSJim Jagielski    {
112*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter the Office Software Development Kit directory [" +
113*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
114*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
115*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
116*b1cdbd2cSJim Jagielski        {
117*b1cdbd2cSJim Jagielski            //No user input, use default.
118*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
119*b1cdbd2cSJim Jagielski            {
120*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
121*b1cdbd2cSJim Jagielski                                 sSuggestedHome + "\". An SDK is required, please" +
122*b1cdbd2cSJim Jagielski								 " specify the path to a valid installation.");
123*b1cdbd2cSJim Jagielski                continue;
124*b1cdbd2cSJim Jagielski            }
125*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
126*b1cdbd2cSJim Jagielski        }
127*b1cdbd2cSJim Jagielski        else
128*b1cdbd2cSJim Jagielski        {
129*b1cdbd2cSJim Jagielski            //validate the user input
130*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
131*b1cdbd2cSJim Jagielski            {
132*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
133*b1cdbd2cSJim Jagielski                                 "\" does not exist. Please enter the path to a" +
134*b1cdbd2cSJim Jagielski								 "valid SDK installation.");
135*b1cdbd2cSJim Jagielski                continue;
136*b1cdbd2cSJim Jagielski            }
137*b1cdbd2cSJim Jagielski        }
138*b1cdbd2cSJim Jagielski        //Check if this is an sdk folder by looking for the idl sub - dir
139*b1cdbd2cSJim Jagielski        var idlDir = sHome + "\\idl";
140*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FolderExists(idlDir))
141*b1cdbd2cSJim Jagielski        {
142*b1cdbd2cSJim Jagielski            stdout.WriteLine("\n Error: Could not find directory \"" +
143*b1cdbd2cSJim Jagielski                             idlDir + "\". An SDK is required, please specify " +
144*b1cdbd2cSJim Jagielski                             "the path to a valid SDK installation.");
145*b1cdbd2cSJim Jagielski            continue;
146*b1cdbd2cSJim Jagielski        }
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski        if (aFileSystemObject.FileExists(sHome + "\\lib\\stlport_vc71_stldebug.lib")) {
149*b1cdbd2cSJim Jagielski		    stldebug="_stldebug";
150*b1cdbd2cSJim Jagielski		}
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski        return sHome;
153*b1cdbd2cSJim Jagielski    }
154*b1cdbd2cSJim Jagielski}
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielskifunction getOfficeOrUre()
157*b1cdbd2cSJim Jagielski{
158*b1cdbd2cSJim Jagielski    var suggestion = "Office";
159*b1cdbd2cSJim Jagielski    var choice;
160*b1cdbd2cSJim Jagielski    while (choice != "office" && choice != "ure") {
161*b1cdbd2cSJim Jagielski        stdout.Write(
162*b1cdbd2cSJim Jagielski            "\n Use an installed Office or an installed UNO Runtime"
163*b1cdbd2cSJim Jagielski            + " Environment (Office/URE) [" + suggestion + "]:");
164*b1cdbd2cSJim Jagielski        choice = stdin.ReadLine();
165*b1cdbd2cSJim Jagielski        if (choice == "") {
166*b1cdbd2cSJim Jagielski            choice = suggestion;
167*b1cdbd2cSJim Jagielski        }
168*b1cdbd2cSJim Jagielski        choice = choice.toLowerCase();
169*b1cdbd2cSJim Jagielski    }
170*b1cdbd2cSJim Jagielski    return choice;
171*b1cdbd2cSJim Jagielski}
172*b1cdbd2cSJim Jagielski
173*b1cdbd2cSJim Jagielskifunction getOfficeHome()
174*b1cdbd2cSJim Jagielski{
175*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OFFICE_HOME");
176*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0)
177*b1cdbd2cSJim Jagielski    {
178*b1cdbd2cSJim Jagielski        try {
179*b1cdbd2cSJim Jagielski            sSuggestedHome = WshShell.RegRead(regKeyOfficeCurrentUser6432Node);
180*b1cdbd2cSJim Jagielski	    //The registry entry points to the program folder but we need the
181*b1cdbd2cSJim Jagielski	    //installation folder
182*b1cdbd2cSJim Jagielski        } catch(exc) {}
183*b1cdbd2cSJim Jagielski        if (sSuggestedHome.length == 0)
184*b1cdbd2cSJim Jagielski        {
185*b1cdbd2cSJim Jagielski            try {
186*b1cdbd2cSJim Jagielski                sSuggestedHome = WshShell.RegRead(regKeyOfficeLocaleMachine6432Node);
187*b1cdbd2cSJim Jagielski                //The registry entry points to the program folder but we need
188*b1cdbd2cSJim Jagielski		//the installation folder
189*b1cdbd2cSJim Jagielski            } catch (exc) {}
190*b1cdbd2cSJim Jagielski        }
191*b1cdbd2cSJim Jagielski 	if (sSuggestedHome.length == 0)
192*b1cdbd2cSJim Jagielski        {
193*b1cdbd2cSJim Jagielski            try {
194*b1cdbd2cSJim Jagielski                sSuggestedHome = WshShell.RegRead(regKeyOfficeLocaleMachine);
195*b1cdbd2cSJim Jagielski                //The registry entry points to the program folder but we need
196*b1cdbd2cSJim Jagielski		//the installation folder
197*b1cdbd2cSJim Jagielski            } catch (exc) {}
198*b1cdbd2cSJim Jagielski        }
199*b1cdbd2cSJim Jagielski 	if (sSuggestedHome.length == 0)
200*b1cdbd2cSJim Jagielski        {
201*b1cdbd2cSJim Jagielski            try {
202*b1cdbd2cSJim Jagielski                sSuggestedHome = WshShell.RegRead(regKeyOfficeLocaleMachine);
203*b1cdbd2cSJim Jagielski                //The registry entry points to the program folder but we need
204*b1cdbd2cSJim Jagielski		//the installation folder
205*b1cdbd2cSJim Jagielski            } catch (exc) {}
206*b1cdbd2cSJim Jagielski        }
207*b1cdbd2cSJim Jagielski
208*b1cdbd2cSJim Jagielski		var index=0;
209*b1cdbd2cSJim Jagielski        if ((index = sSuggestedHome.lastIndexOf("\\")) != -1)
210*b1cdbd2cSJim Jagielski		   sSuggestedHome = sSuggestedHome.substr(0, index);
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski        if (sSuggestedHome.length == 0)
213*b1cdbd2cSJim Jagielski		   sSuggestedHome = searchOffice();
214*b1cdbd2cSJim Jagielski    }
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski    while(true)
217*b1cdbd2cSJim Jagielski    {
218*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter the Office base installation directory [" +
219*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
220*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
221*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
222*b1cdbd2cSJim Jagielski        {
223*b1cdbd2cSJim Jagielski            //No user input, use default.
224*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
225*b1cdbd2cSJim Jagielski            {
226*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
227*b1cdbd2cSJim Jagielski                                 sSuggestedHome + "\" An office installation is " +
228*b1cdbd2cSJim Jagielski								 "required, please specify the path to a valid " +
229*b1cdbd2cSJim Jagielski								 "office installation.");
230*b1cdbd2cSJim Jagielski                sSuggestedHome = "";
231*b1cdbd2cSJim Jagielski                continue;
232*b1cdbd2cSJim Jagielski            }
233*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
234*b1cdbd2cSJim Jagielski        } else
235*b1cdbd2cSJim Jagielski        {
236*b1cdbd2cSJim Jagielski            //validate the user input
237*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
238*b1cdbd2cSJim Jagielski            {
239*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
240*b1cdbd2cSJim Jagielski                                 "\" does not exist. Please specify the path to " +
241*b1cdbd2cSJim Jagielski								 "a valid office installation.");
242*b1cdbd2cSJim Jagielski                continue;
243*b1cdbd2cSJim Jagielski            }
244*b1cdbd2cSJim Jagielski        }
245*b1cdbd2cSJim Jagielski        //Check if this is a valid office installtion folder by looking for the
246*b1cdbd2cSJim Jagielski		//program sub-directory
247*b1cdbd2cSJim Jagielski        var progDir = sHome + "\\program";
248*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FolderExists(progDir))
249*b1cdbd2cSJim Jagielski        {
250*b1cdbd2cSJim Jagielski            stdout.WriteLine("\n Error: Could not find directory \"" +
251*b1cdbd2cSJim Jagielski                             progDir + "\". An office installation is required, " +
252*b1cdbd2cSJim Jagielski							 "please specify the path to a valid office " +
253*b1cdbd2cSJim Jagielski							 "installation.");
254*b1cdbd2cSJim Jagielski            continue;
255*b1cdbd2cSJim Jagielski        }
256*b1cdbd2cSJim Jagielski        return sHome;
257*b1cdbd2cSJim Jagielski    }
258*b1cdbd2cSJim Jagielski}
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielskifunction searchOffice()
261*b1cdbd2cSJim Jagielski{
262*b1cdbd2cSJim Jagielski	var tmp = oo_sdk_home;
263*b1cdbd2cSJim Jagielski	var officepath ="";
264*b1cdbd2cSJim Jagielski	var index=-1;
265*b1cdbd2cSJim Jagielski
266*b1cdbd2cSJim Jagielski	if ((index = tmp.lastIndexOf("\\sdk")) != -1) {
267*b1cdbd2cSJim Jagielski	   tmp = tmp.substr(0, index);
268*b1cdbd2cSJim Jagielski	}
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski	if (aFileSystemObject.FileExists(tmp + "\\program\\soffice.exe")) {
271*b1cdbd2cSJim Jagielski	   return tmp;
272*b1cdbd2cSJim Jagielski	}
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielski	return "";
275*b1cdbd2cSJim Jagielski}
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielskifunction getOfficeBaseHome()
279*b1cdbd2cSJim Jagielski{
280*b1cdbd2cSJim Jagielski	var officebase = oo_sdk_home;
281*b1cdbd2cSJim Jagielski	var index=officebase.lastIndexOf("\\");
282*b1cdbd2cSJim Jagielski
283*b1cdbd2cSJim Jagielski	officebase = officebase.substr(0, index);
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski	return officebase;
286*b1cdbd2cSJim Jagielski}
287*b1cdbd2cSJim Jagielski
288*b1cdbd2cSJim Jagielskifunction getMakeHome()
289*b1cdbd2cSJim Jagielski{
290*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_MAKE_HOME");
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski    while(true)
293*b1cdbd2cSJim Jagielski    {
294*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter GNU make (3.79.1 or higher) tools directory [" +
295*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
296*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
297*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
298*b1cdbd2cSJim Jagielski        {
299*b1cdbd2cSJim Jagielski            //No user input, use default.
300*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
301*b1cdbd2cSJim Jagielski            {
302*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
303*b1cdbd2cSJim Jagielski								 sSuggestedHome + "\". GNU make is required, " +
304*b1cdbd2cSJim Jagielski								 "please specify a GNU make tools directory.");
305*b1cdbd2cSJim Jagielski                sSuggestedHome = "";
306*b1cdbd2cSJim Jagielski                continue;
307*b1cdbd2cSJim Jagielski            }
308*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
309*b1cdbd2cSJim Jagielski        } else
310*b1cdbd2cSJim Jagielski        {
311*b1cdbd2cSJim Jagielski            //validate the user input
312*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
313*b1cdbd2cSJim Jagielski            {
314*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
315*b1cdbd2cSJim Jagielski                                 "\" does not exist. GNU make is required, " +
316*b1cdbd2cSJim Jagielski								 "please specify a GNU make tools directory.");
317*b1cdbd2cSJim Jagielski                continue;
318*b1cdbd2cSJim Jagielski            }
319*b1cdbd2cSJim Jagielski        }
320*b1cdbd2cSJim Jagielski        //Check for the make executable
321*b1cdbd2cSJim Jagielski        var sMakePath = sHome + "\\make.exe";
322*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FileExists(sMakePath))
323*b1cdbd2cSJim Jagielski	{
324*b1cdbd2cSJim Jagielski		sMakePath = sHome + "\\mingw32-make.exe";
325*b1cdbd2cSJim Jagielski	}
326*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FileExists(sMakePath))
327*b1cdbd2cSJim Jagielski        {
328*b1cdbd2cSJim Jagielski            stdout.WriteLine("\n Error: Could not find \"" + sMakePath +
329*b1cdbd2cSJim Jagielski							 "\". GNU make is required, please specify a GNU " +
330*b1cdbd2cSJim Jagielski							 "make tools directory.");
331*b1cdbd2cSJim Jagielski            continue;
332*b1cdbd2cSJim Jagielski        }
333*b1cdbd2cSJim Jagielski        return sHome;
334*b1cdbd2cSJim Jagielski    }
335*b1cdbd2cSJim Jagielski}
336*b1cdbd2cSJim Jagielski
337*b1cdbd2cSJim Jagielskifunction getZipHome()
338*b1cdbd2cSJim Jagielski{
339*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_ZIP_HOME");
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0 && oo_sdk_make_home.length > 0) {
342*b1cdbd2cSJim Jagielski       sSuggestedHome = oo_sdk_make_home;
343*b1cdbd2cSJim Jagielski    }
344*b1cdbd2cSJim Jagielski
345*b1cdbd2cSJim Jagielski    while(true)
346*b1cdbd2cSJim Jagielski    {
347*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter a zip (2.3 or higher) tools directory [" +
348*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
349*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
350*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
351*b1cdbd2cSJim Jagielski        {
352*b1cdbd2cSJim Jagielski            //No user input, use default.
353*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
354*b1cdbd2cSJim Jagielski            {
355*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
356*b1cdbd2cSJim Jagielski								 sSuggestedHome + "\". zip is required, please " +
357*b1cdbd2cSJim Jagielski								 "specify a zip tools directory.");
358*b1cdbd2cSJim Jagielski                sSuggestedHome = "";
359*b1cdbd2cSJim Jagielski                continue;
360*b1cdbd2cSJim Jagielski            }
361*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
362*b1cdbd2cSJim Jagielski        }
363*b1cdbd2cSJim Jagielski        else
364*b1cdbd2cSJim Jagielski        {
365*b1cdbd2cSJim Jagielski            //validate the user input
366*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
367*b1cdbd2cSJim Jagielski            {
368*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
369*b1cdbd2cSJim Jagielski                                 "\" does not exist. zip is required, please " +
370*b1cdbd2cSJim Jagielski								 "specify a zip tools directory.");
371*b1cdbd2cSJim Jagielski                continue;
372*b1cdbd2cSJim Jagielski            }
373*b1cdbd2cSJim Jagielski        }
374*b1cdbd2cSJim Jagielski        //Check for the make executable
375*b1cdbd2cSJim Jagielski        var sZipPath = sHome + "\\zip.exe";
376*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FileExists(sZipPath))
377*b1cdbd2cSJim Jagielski        {
378*b1cdbd2cSJim Jagielski            stdout.WriteLine("\n Error: Could not find \"" + sZipPath +
379*b1cdbd2cSJim Jagielski                             "\". zip is required, please specify a zip tools " +
380*b1cdbd2cSJim Jagielski							 "directory.");
381*b1cdbd2cSJim Jagielski            continue;
382*b1cdbd2cSJim Jagielski        }
383*b1cdbd2cSJim Jagielski        return sHome;
384*b1cdbd2cSJim Jagielski    }
385*b1cdbd2cSJim Jagielski}
386*b1cdbd2cSJim Jagielski
387*b1cdbd2cSJim Jagielskifunction getCatHome()
388*b1cdbd2cSJim Jagielski{
389*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_CAT_HOME");
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0 && oo_sdk_make_home.length > 0) {
392*b1cdbd2cSJim Jagielski       sSuggestedHome = oo_sdk_make_home;
393*b1cdbd2cSJim Jagielski    }
394*b1cdbd2cSJim Jagielski
395*b1cdbd2cSJim Jagielski    while(true)
396*b1cdbd2cSJim Jagielski    {
397*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter a cat (2.0 or higher) tools directory [" +
398*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
399*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
400*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
401*b1cdbd2cSJim Jagielski        {
402*b1cdbd2cSJim Jagielski            //No user input, use default.
403*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
404*b1cdbd2cSJim Jagielski            {
405*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
406*b1cdbd2cSJim Jagielski                                 sSuggestedHome + "\". cat is required, please " +
407*b1cdbd2cSJim Jagielski                                 "specify a cat tools directory." +
408*b1cdbd2cSJim Jagielski                                 "\nYou can get cat from " +
409*b1cdbd2cSJim Jagielski                                 "http://sourceforge.net/projects/unxutils/files/latest/download");
410*b1cdbd2cSJim Jagielski                sSuggestedHome = "";
411*b1cdbd2cSJim Jagielski                continue;
412*b1cdbd2cSJim Jagielski            }
413*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
414*b1cdbd2cSJim Jagielski        }
415*b1cdbd2cSJim Jagielski        else
416*b1cdbd2cSJim Jagielski        {
417*b1cdbd2cSJim Jagielski            //validate the user input
418*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
419*b1cdbd2cSJim Jagielski            {
420*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
421*b1cdbd2cSJim Jagielski                                 "\" does not exist. cat is required, please " +
422*b1cdbd2cSJim Jagielski                                 "specify a cat tools directory." +
423*b1cdbd2cSJim Jagielski                                 "\nYou can get cat from " +
424*b1cdbd2cSJim Jagielski                                 "http://sourceforge.net/projects/unxutils/files/latest/download");
425*b1cdbd2cSJim Jagielski                continue;
426*b1cdbd2cSJim Jagielski            }
427*b1cdbd2cSJim Jagielski        }
428*b1cdbd2cSJim Jagielski        //Check for the make executable
429*b1cdbd2cSJim Jagielski        var sCatPath = sHome + "\\cat.exe";
430*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FileExists(sCatPath))
431*b1cdbd2cSJim Jagielski        {
432*b1cdbd2cSJim Jagielski            stdout.WriteLine("\n Error: Could not find \"" + sCatPath +
433*b1cdbd2cSJim Jagielski                             "\". cat is required, please specify a cat tools " +
434*b1cdbd2cSJim Jagielski                             "directory." +
435*b1cdbd2cSJim Jagielski                             "\nYou can get cat from " +
436*b1cdbd2cSJim Jagielski                             "http://sourceforge.net/projects/unxutils/files/latest/download");
437*b1cdbd2cSJim Jagielski            continue;
438*b1cdbd2cSJim Jagielski        }
439*b1cdbd2cSJim Jagielski        return sHome;
440*b1cdbd2cSJim Jagielski    }
441*b1cdbd2cSJim Jagielski}
442*b1cdbd2cSJim Jagielski
443*b1cdbd2cSJim Jagielskifunction getSedHome()
444*b1cdbd2cSJim Jagielski{
445*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_SED_HOME");
446*b1cdbd2cSJim Jagielski
447*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0 && oo_sdk_make_home.length > 0) {
448*b1cdbd2cSJim Jagielski       sSuggestedHome = oo_sdk_make_home;
449*b1cdbd2cSJim Jagielski    }
450*b1cdbd2cSJim Jagielski
451*b1cdbd2cSJim Jagielski    while(true)
452*b1cdbd2cSJim Jagielski    {
453*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter a sed (3.02 or higher) tools directory [" +
454*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
455*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
456*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
457*b1cdbd2cSJim Jagielski        {
458*b1cdbd2cSJim Jagielski            //No user input, use default.
459*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
460*b1cdbd2cSJim Jagielski            {
461*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
462*b1cdbd2cSJim Jagielski                                 sSuggestedHome + "\". sed is required, please " +
463*b1cdbd2cSJim Jagielski                                 "specify a sed tools directory." +
464*b1cdbd2cSJim Jagielski                                 "\nYou can get sed from " +
465*b1cdbd2cSJim Jagielski                                 "http://sourceforge.net/projects/unxutils/files/latest/download");
466*b1cdbd2cSJim Jagielski                sSuggestedHome = "";
467*b1cdbd2cSJim Jagielski                continue;
468*b1cdbd2cSJim Jagielski            }
469*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
470*b1cdbd2cSJim Jagielski        }
471*b1cdbd2cSJim Jagielski        else
472*b1cdbd2cSJim Jagielski        {
473*b1cdbd2cSJim Jagielski            //validate the user input
474*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
475*b1cdbd2cSJim Jagielski            {
476*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
477*b1cdbd2cSJim Jagielski                                 "\" does not exist. sed is required, please " +
478*b1cdbd2cSJim Jagielski                                 "specify a sed tools directory." +
479*b1cdbd2cSJim Jagielski                                 "\nYou can get sed from " +
480*b1cdbd2cSJim Jagielski                                 "http://sourceforge.net/projects/unxutils/files/latest/download");
481*b1cdbd2cSJim Jagielski                continue;
482*b1cdbd2cSJim Jagielski            }
483*b1cdbd2cSJim Jagielski        }
484*b1cdbd2cSJim Jagielski        //Check for the make executable
485*b1cdbd2cSJim Jagielski        var sSedPath = sHome + "\\sed.exe";
486*b1cdbd2cSJim Jagielski        if (! aFileSystemObject.FileExists(sSedPath))
487*b1cdbd2cSJim Jagielski        {
488*b1cdbd2cSJim Jagielski            stdout.WriteLine("\n Error: Could not find \"" + sSedPath +
489*b1cdbd2cSJim Jagielski                             "\". sed is required, please specify a sed tools " +
490*b1cdbd2cSJim Jagielski                             "directory." +
491*b1cdbd2cSJim Jagielski                             "\nYou can get sed from " +
492*b1cdbd2cSJim Jagielski                             "http://sourceforge.net/projects/unxutils/files/latest/download");
493*b1cdbd2cSJim Jagielski            continue;
494*b1cdbd2cSJim Jagielski        }
495*b1cdbd2cSJim Jagielski        return sHome;
496*b1cdbd2cSJim Jagielski    }
497*b1cdbd2cSJim Jagielski}
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielskifunction getCppHome()
500*b1cdbd2cSJim Jagielski{
501*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_CPP_HOME");
502*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0)
503*b1cdbd2cSJim Jagielski    {
504*b1cdbd2cSJim Jagielski        var sVC="";
505*b1cdbd2cSJim Jagielski        try {
506*b1cdbd2cSJim Jagielski            sVC = WshShell.RegRead(regKeyVCExpress90);
507*b1cdbd2cSJim Jagielski        }catch (exc) {}
508*b1cdbd2cSJim Jagielski        if (sVC.length == 0)
509*b1cdbd2cSJim Jagielski        {
510*b1cdbd2cSJim Jagielski	   try {
511*b1cdbd2cSJim Jagielski	       sVC = WshShell.RegRead(regKeyVCExpress90_2);
512*b1cdbd2cSJim Jagielski	   }catch (exc) {}
513*b1cdbd2cSJim Jagielski	}
514*b1cdbd2cSJim Jagielski	if (sVC.length == 0)
515*b1cdbd2cSJim Jagielski        {
516*b1cdbd2cSJim Jagielski	   try {
517*b1cdbd2cSJim Jagielski	       sVC = WshShell.RegRead(regKeyVC90);
518*b1cdbd2cSJim Jagielski	   }catch (exc) {}
519*b1cdbd2cSJim Jagielski	}
520*b1cdbd2cSJim Jagielski	// check Windows SDK if VC 9
521*b1cdbd2cSJim Jagielski        if (sVC.length > 0)
522*b1cdbd2cSJim Jagielski        {
523*b1cdbd2cSJim Jagielski		    oo_sdk_manifest_used="true";
524*b1cdbd2cSJim Jagielski			try {
525*b1cdbd2cSJim Jagielski				oo_sdk_windowssdk = WshShell.RegRead(regKeyWindowsSDK);
526*b1cdbd2cSJim Jagielski			}catch (exc) {}
527*b1cdbd2cSJim Jagielski		}
528*b1cdbd2cSJim Jagielski        if (sVC.length == 0)
529*b1cdbd2cSJim Jagielski        {
530*b1cdbd2cSJim Jagielski	        try {
531*b1cdbd2cSJim Jagielski				sVC = WshShell.RegRead(regKeyVCExpress80);
532*b1cdbd2cSJim Jagielski			}catch (exc) {}
533*b1cdbd2cSJim Jagielski	        if (sVC.length > 0)
534*b1cdbd2cSJim Jagielski			   oo_sdk_manifest_used="true";
535*b1cdbd2cSJim Jagielski		}
536*b1cdbd2cSJim Jagielski        if (sVC.length == 0)
537*b1cdbd2cSJim Jagielski        {
538*b1cdbd2cSJim Jagielski	        try {
539*b1cdbd2cSJim Jagielski				sVC = WshShell.RegRead(regKeyVC80);
540*b1cdbd2cSJim Jagielski			}catch (exc) {}
541*b1cdbd2cSJim Jagielski	        if (sVC.length > 0)
542*b1cdbd2cSJim Jagielski			   oo_sdk_manifest_used="true";
543*b1cdbd2cSJim Jagielski		}
544*b1cdbd2cSJim Jagielski        if (sVC.length == 0)
545*b1cdbd2cSJim Jagielski        {
546*b1cdbd2cSJim Jagielski	        try {
547*b1cdbd2cSJim Jagielski				sVC = WshShell.RegRead(regKeyVC71);
548*b1cdbd2cSJim Jagielski			}catch (exc) {}
549*b1cdbd2cSJim Jagielski		}
550*b1cdbd2cSJim Jagielski        if (sVC.length > 0)
551*b1cdbd2cSJim Jagielski        {
552*b1cdbd2cSJim Jagielski            sVC += "bin";
553*b1cdbd2cSJim Jagielski            if (aFileSystemObject.FileExists(sVC + "\\cl.exe"))
554*b1cdbd2cSJim Jagielski                sSuggestedHome = sVC;
555*b1cdbd2cSJim Jagielski        }
556*b1cdbd2cSJim Jagielski    }
557*b1cdbd2cSJim Jagielski
558*b1cdbd2cSJim Jagielski    var bSkip = false;
559*b1cdbd2cSJim Jagielski    while(true)
560*b1cdbd2cSJim Jagielski    {
561*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter the directory of the C++ compiler (optional) [" +
562*b1cdbd2cSJim Jagielski                     sSuggestedHome + "]:");
563*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
564*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
565*b1cdbd2cSJim Jagielski        {
566*b1cdbd2cSJim Jagielski            //No user input, check OO_SDK_CPP_HOME or suggested value
567*b1cdbd2cSJim Jagielski	    if ( sSuggestedHome.length == 0 ) {
568*b1cdbd2cSJim Jagielski		bSkip = true;
569*b1cdbd2cSJim Jagielski	    } else {
570*b1cdbd2cSJim Jagielski	        if ( !aFileSystemObject.FolderExists(sSuggestedHome) )
571*b1cdbd2cSJim Jagielski		{
572*b1cdbd2cSJim Jagielski		    stdout.WriteLine("\n Error: Could not find directory \"" +
573*b1cdbd2cSJim Jagielski				     sSuggestedHome + "\".");
574*b1cdbd2cSJim Jagielski		    sSuggestedHome = "";
575*b1cdbd2cSJim Jagielski		    bSkip = true;
576*b1cdbd2cSJim Jagielski		}
577*b1cdbd2cSJim Jagielski	    }
578*b1cdbd2cSJim Jagielski
579*b1cdbd2cSJim Jagielski            sHome = sSuggestedHome;
580*b1cdbd2cSJim Jagielski        } else
581*b1cdbd2cSJim Jagielski        {
582*b1cdbd2cSJim Jagielski            //validate the user input
583*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
584*b1cdbd2cSJim Jagielski            {
585*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
586*b1cdbd2cSJim Jagielski                                 sHome + "\".");
587*b1cdbd2cSJim Jagielski                bSkip = true;
588*b1cdbd2cSJim Jagielski            }
589*b1cdbd2cSJim Jagielski        }
590*b1cdbd2cSJim Jagielski
591*b1cdbd2cSJim Jagielski		if ( !bSkip) {
592*b1cdbd2cSJim Jagielski		    //Check if the C++ compiler exist
593*b1cdbd2cSJim Jagielski		    var cl = sHome + "\\cl.exe";
594*b1cdbd2cSJim Jagielski		    var mt = sHome + "\\mt.exe";
595*b1cdbd2cSJim Jagielski
596*b1cdbd2cSJim Jagielski			if (! aFileSystemObject.FileExists(cl))
597*b1cdbd2cSJim Jagielski			{
598*b1cdbd2cSJim Jagielski				stdout.WriteLine("\n Error: Could not find the C++ compiler \""
599*b1cdbd2cSJim Jagielski								 + cl + "\".");
600*b1cdbd2cSJim Jagielski				sHome = "";
601*b1cdbd2cSJim Jagielski				bSkip = true;
602*b1cdbd2cSJim Jagielski			} else {
603*b1cdbd2cSJim Jagielski			    if (aFileSystemObject.FileExists(mt)) {
604*b1cdbd2cSJim Jagielski				    oo_sdk_vc8_used="true";
605*b1cdbd2cSJim Jagielski				}
606*b1cdbd2cSJim Jagielski			}
607*b1cdbd2cSJim Jagielski		}
608*b1cdbd2cSJim Jagielski
609*b1cdbd2cSJim Jagielski		if ( bSkip ) {
610*b1cdbd2cSJim Jagielski		   if ( skipChoice("the C++ compiler") ) {
611*b1cdbd2cSJim Jagielski			   return "";
612*b1cdbd2cSJim Jagielski		   } else {
613*b1cdbd2cSJim Jagielski			   bSkip = false;
614*b1cdbd2cSJim Jagielski			   continue;
615*b1cdbd2cSJim Jagielski		   }
616*b1cdbd2cSJim Jagielski		}
617*b1cdbd2cSJim Jagielski
618*b1cdbd2cSJim Jagielski        return sHome;
619*b1cdbd2cSJim Jagielski    }
620*b1cdbd2cSJim Jagielski}
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielskifunction getCliHome()
623*b1cdbd2cSJim Jagielski{
624*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_CLI_HOME");
625*b1cdbd2cSJim Jagielski
626*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0)
627*b1cdbd2cSJim Jagielski    {
628*b1cdbd2cSJim Jagielski        try {
629*b1cdbd2cSJim Jagielski            var _ver = WshShell.RegRead(regKeyDotNet2_0);
630*b1cdbd2cSJim Jagielski            if (_ver.length > 0)
631*b1cdbd2cSJim Jagielski            {
632*b1cdbd2cSJim Jagielski                sSuggestedHome = WshShell.RegRead(regKeyDotNetInstallRoot);
633*b1cdbd2cSJim Jagielski                sSuggestedHome += sDirDotNet2_0;
634*b1cdbd2cSJim Jagielski                if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
635*b1cdbd2cSJim Jagielski                    sSuggestedHome = "";
636*b1cdbd2cSJim Jagielski            }
637*b1cdbd2cSJim Jagielski
638*b1cdbd2cSJim Jagielski			if (sSuggestedHome.length == 0)
639*b1cdbd2cSJim Jagielski			{
640*b1cdbd2cSJim Jagielski				_ver = WshShell.RegRead(regKeyDotNet1_1);
641*b1cdbd2cSJim Jagielski				if (_ver.length > 0)
642*b1cdbd2cSJim Jagielski				{
643*b1cdbd2cSJim Jagielski					sSuggestedHome = WshShell.RegRead(regKeyDotNetInstallRoot);
644*b1cdbd2cSJim Jagielski					sSuggestedHome += sDirDotNet1_1;
645*b1cdbd2cSJim Jagielski					if ( ! aFileSystemObject.FolderExists(sSuggestedHome))
646*b1cdbd2cSJim Jagielski					   sSuggestedHome = "";
647*b1cdbd2cSJim Jagielski				}
648*b1cdbd2cSJim Jagielski			}
649*b1cdbd2cSJim Jagielski		} catch (exc) {}
650*b1cdbd2cSJim Jagielski    }
651*b1cdbd2cSJim Jagielski
652*b1cdbd2cSJim Jagielski    var bSkip = false;
653*b1cdbd2cSJim Jagielski    while(true)
654*b1cdbd2cSJim Jagielski    {
655*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter the directory of the C# and VB.NET compilers (optional) [" + sSuggestedHome + "]:");
656*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
657*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
658*b1cdbd2cSJim Jagielski        {
659*b1cdbd2cSJim Jagielski            //No user input, check OO_SDK_CLI_HOME or suggested value
660*b1cdbd2cSJim Jagielski			if ( sSuggestedHome.length == 0 ) {
661*b1cdbd2cSJim Jagielski			    bSkip = true;
662*b1cdbd2cSJim Jagielski			} else {
663*b1cdbd2cSJim Jagielski			    if ( !aFileSystemObject.FolderExists(sSuggestedHome) )
664*b1cdbd2cSJim Jagielski				{
665*b1cdbd2cSJim Jagielski					stdout.WriteLine("\n Error: Could not find directory \"" +
666*b1cdbd2cSJim Jagielski									 sSuggestedHome + "\".");
667*b1cdbd2cSJim Jagielski					sSuggestedHome = "";
668*b1cdbd2cSJim Jagielski					bSkip = true;
669*b1cdbd2cSJim Jagielski				}
670*b1cdbd2cSJim Jagielski			}
671*b1cdbd2cSJim Jagielski
672*b1cdbd2cSJim Jagielski		    sHome = sSuggestedHome;
673*b1cdbd2cSJim Jagielski        }
674*b1cdbd2cSJim Jagielski        else
675*b1cdbd2cSJim Jagielski        {
676*b1cdbd2cSJim Jagielski            //validate the user input
677*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
678*b1cdbd2cSJim Jagielski            {
679*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
680*b1cdbd2cSJim Jagielski                                 "\" does not exist.");
681*b1cdbd2cSJim Jagielski                bSkip = true;
682*b1cdbd2cSJim Jagielski            }
683*b1cdbd2cSJim Jagielski        }
684*b1cdbd2cSJim Jagielski
685*b1cdbd2cSJim Jagielski		if ( !bSkip ) {
686*b1cdbd2cSJim Jagielski		    //Check if the C# and VB.NET compiler exist
687*b1cdbd2cSJim Jagielski		    var csc = sHome + "\\csc.exe";
688*b1cdbd2cSJim Jagielski		    var vbc = sHome + "\\vbc.exe";
689*b1cdbd2cSJim Jagielski
690*b1cdbd2cSJim Jagielski			if (! aFileSystemObject.FileExists(csc))
691*b1cdbd2cSJim Jagielski			{
692*b1cdbd2cSJim Jagielski				stdout.WriteLine("\n Error: Could not find the C# compiler \"" +
693*b1cdbd2cSJim Jagielski								 csc + "\".");
694*b1cdbd2cSJim Jagielski				bSkip = true;
695*b1cdbd2cSJim Jagielski			}
696*b1cdbd2cSJim Jagielski			if (! aFileSystemObject.FileExists(vbc))
697*b1cdbd2cSJim Jagielski			{
698*b1cdbd2cSJim Jagielski				stdout.WriteLine("\n Error: Could not find the VB.NET compiler \"" +
699*b1cdbd2cSJim Jagielski								 vbc + "\".");
700*b1cdbd2cSJim Jagielski				bSkip = true;
701*b1cdbd2cSJim Jagielski			}
702*b1cdbd2cSJim Jagielski		}
703*b1cdbd2cSJim Jagielski
704*b1cdbd2cSJim Jagielski		if ( bSkip ) {
705*b1cdbd2cSJim Jagielski		   if ( skipChoice("the C# and VB.NET compilers") ) {
706*b1cdbd2cSJim Jagielski			   return "";
707*b1cdbd2cSJim Jagielski		   } else {
708*b1cdbd2cSJim Jagielski			   bSkip = false;
709*b1cdbd2cSJim Jagielski			   continue;
710*b1cdbd2cSJim Jagielski		   }
711*b1cdbd2cSJim Jagielski		}
712*b1cdbd2cSJim Jagielski
713*b1cdbd2cSJim Jagielski        return sHome;
714*b1cdbd2cSJim Jagielski    }
715*b1cdbd2cSJim Jagielski}
716*b1cdbd2cSJim Jagielski
717*b1cdbd2cSJim Jagielskifunction getJavaHome()
718*b1cdbd2cSJim Jagielski{
719*b1cdbd2cSJim Jagielski    var sSuggestedHome = WshSysEnv("OO_SDK_JAVA_HOME");
720*b1cdbd2cSJim Jagielski    if (sSuggestedHome.length == 0)
721*b1cdbd2cSJim Jagielski    {
722*b1cdbd2cSJim Jagielski        try {
723*b1cdbd2cSJim Jagielski            var currentVersion = WshShell.RegRead(regKeyJDK + "CurrentVersion");
724*b1cdbd2cSJim Jagielski            if (currentVersion.length > 0)
725*b1cdbd2cSJim Jagielski            {
726*b1cdbd2cSJim Jagielski                sSuggestedHome = WshShell.RegRead(regKeyJDK + currentVersion +
727*b1cdbd2cSJim Jagielski												  "\\JavaHome");
728*b1cdbd2cSJim Jagielski                if ( ! aFileSystemObject.FolderExists(sSuggestedHome) )
729*b1cdbd2cSJim Jagielski                    sSuggestedHome = "";
730*b1cdbd2cSJim Jagielski            }
731*b1cdbd2cSJim Jagielski        } catch (exc) {}
732*b1cdbd2cSJim Jagielski    }
733*b1cdbd2cSJim Jagielski
734*b1cdbd2cSJim Jagielski    var bSkip = false;
735*b1cdbd2cSJim Jagielski    while(true)
736*b1cdbd2cSJim Jagielski    {
737*b1cdbd2cSJim Jagielski        stdout.Write("\n Enter JAVA SDK (1.4.1_01 or higher) installation directory (optional) [" + sSuggestedHome + "]:");
738*b1cdbd2cSJim Jagielski        var sHome = stdin.ReadLine();
739*b1cdbd2cSJim Jagielski        if (sHome.length == 0)
740*b1cdbd2cSJim Jagielski        {
741*b1cdbd2cSJim Jagielski            //No user input, check OO_SDK_JAVA_HOME or suggested value
742*b1cdbd2cSJim Jagielski			if ( sSuggestedHome.length == 0 ) {
743*b1cdbd2cSJim Jagielski			    bSkip = true;
744*b1cdbd2cSJim Jagielski			} else {
745*b1cdbd2cSJim Jagielski			    if ( !aFileSystemObject.FolderExists(sSuggestedHome) )
746*b1cdbd2cSJim Jagielski				{
747*b1cdbd2cSJim Jagielski					stdout.WriteLine("\n Error: Could not find directory \"" +
748*b1cdbd2cSJim Jagielski									 sSuggestedHome + "\".");
749*b1cdbd2cSJim Jagielski					sSuggestedHome = "";
750*b1cdbd2cSJim Jagielski					bSkip=true;
751*b1cdbd2cSJim Jagielski				}
752*b1cdbd2cSJim Jagielski			}
753*b1cdbd2cSJim Jagielski
754*b1cdbd2cSJim Jagielski			sHome = sSuggestedHome;
755*b1cdbd2cSJim Jagielski        } else
756*b1cdbd2cSJim Jagielski        {
757*b1cdbd2cSJim Jagielski            //validate the user input
758*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sHome))
759*b1cdbd2cSJim Jagielski            {
760*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The directory \"" + sHome +
761*b1cdbd2cSJim Jagielski                                 "\" does not exist.");
762*b1cdbd2cSJim Jagielski				bSkip = true;
763*b1cdbd2cSJim Jagielski            }
764*b1cdbd2cSJim Jagielski        }
765*b1cdbd2cSJim Jagielski
766*b1cdbd2cSJim Jagielski		if ( !bSkip) {
767*b1cdbd2cSJim Jagielski		    //Check if this is an sdk folder by looking for the javac compiler
768*b1cdbd2cSJim Jagielski			var javacompiler = sHome + "\\bin\\javac.exe";
769*b1cdbd2cSJim Jagielski			if (! aFileSystemObject.FileExists(javacompiler))
770*b1cdbd2cSJim Jagielski			{
771*b1cdbd2cSJim Jagielski				stdout.WriteLine("\n Error: Could not find \"" +
772*b1cdbd2cSJim Jagielski								 javacompiler + "\".");
773*b1cdbd2cSJim Jagielski				bSkip = true;
774*b1cdbd2cSJim Jagielski			}
775*b1cdbd2cSJim Jagielski        }
776*b1cdbd2cSJim Jagielski
777*b1cdbd2cSJim Jagielski		if ( bSkip ) {
778*b1cdbd2cSJim Jagielski		   if ( skipChoice("the Java SDK") ) {
779*b1cdbd2cSJim Jagielski			   return "";
780*b1cdbd2cSJim Jagielski		   } else {
781*b1cdbd2cSJim Jagielski			   bSkip = false;
782*b1cdbd2cSJim Jagielski			   continue;
783*b1cdbd2cSJim Jagielski		   }
784*b1cdbd2cSJim Jagielski		}
785*b1cdbd2cSJim Jagielski
786*b1cdbd2cSJim Jagielski        return sHome;
787*b1cdbd2cSJim Jagielski    }
788*b1cdbd2cSJim Jagielski}
789*b1cdbd2cSJim Jagielski
790*b1cdbd2cSJim Jagielskifunction getOutputDir()
791*b1cdbd2cSJim Jagielski{
792*b1cdbd2cSJim Jagielski	var defaultdir = "c:\\" + oo_sdk_name;
793*b1cdbd2cSJim Jagielski    var sSuggestedDir = WshSysEnv("OO_SDK_OUT");
794*b1cdbd2cSJim Jagielski	if (sSuggestedDir.length == 0)
795*b1cdbd2cSJim Jagielski	   sSuggestedDir = defaultdir;
796*b1cdbd2cSJim Jagielski
797*b1cdbd2cSJim Jagielski    var bSkip = false;
798*b1cdbd2cSJim Jagielski    while(true)
799*b1cdbd2cSJim Jagielski    {
800*b1cdbd2cSJim Jagielski        stdout.Write(
801*b1cdbd2cSJim Jagielski			"\n Default output directory is the \"c:\\" + oo_sdk_name + "\".\n" +
802*b1cdbd2cSJim Jagielski            " Enter an existent directory if you prefer a different one. But note" +
803*b1cdbd2cSJim Jagielski			" that only\n a path without spaces is allowed because of a" +
804*b1cdbd2cSJim Jagielski			" limitation of gnu make. (optional) [" + sSuggestedDir + "]:");
805*b1cdbd2cSJim Jagielski        var sDir = stdin.ReadLine();
806*b1cdbd2cSJim Jagielski        if (sDir.length == 0)
807*b1cdbd2cSJim Jagielski        {
808*b1cdbd2cSJim Jagielski            //No user input, check OO_SDK_OUT or suggested value
809*b1cdbd2cSJim Jagielski			if ( sSuggestedDir.length == 0 ) {
810*b1cdbd2cSJim Jagielski			    bSkip = true;
811*b1cdbd2cSJim Jagielski			} else {
812*b1cdbd2cSJim Jagielski				if (sSuggestedDir == oo_user_sdk_dir || sSuggestedDir == defaultdir) {
813*b1cdbd2cSJim Jagielski				    var fso = new ActiveXObject("Scripting.FileSystemObject");
814*b1cdbd2cSJim Jagielski					if ( !fso.FolderExists(sSuggestedDir) )
815*b1cdbd2cSJim Jagielski						fso.CreateFolder(sSuggestedDir);
816*b1cdbd2cSJim Jagielski				}
817*b1cdbd2cSJim Jagielski			    if ( !aFileSystemObject.FolderExists(sSuggestedDir) )
818*b1cdbd2cSJim Jagielski				{
819*b1cdbd2cSJim Jagielski					stdout.WriteLine("\n Error: Could not find directory \"" +
820*b1cdbd2cSJim Jagielski									 sSuggestedDir + "\".");
821*b1cdbd2cSJim Jagielski					sSuggestedDir = "";
822*b1cdbd2cSJim Jagielski					bSkip = true;
823*b1cdbd2cSJim Jagielski				}
824*b1cdbd2cSJim Jagielski			}
825*b1cdbd2cSJim Jagielski
826*b1cdbd2cSJim Jagielski            sDir = sSuggestedDir;
827*b1cdbd2cSJim Jagielski        }
828*b1cdbd2cSJim Jagielski        else
829*b1cdbd2cSJim Jagielski        {
830*b1cdbd2cSJim Jagielski			if (sDir.indexOf(' ') != -1) {
831*b1cdbd2cSJim Jagielski				stdout.WriteLine("\n Error: your specified output directory " +
832*b1cdbd2cSJim Jagielski								 "\"" + sDir + "\" " +
833*b1cdbd2cSJim Jagielski								 "contains one or more spaces.\n        That " +
834*b1cdbd2cSJim Jagielski								 "causes problems with gnu make. Please specifiy" +
835*b1cdbd2cSJim Jagielski								 " a directory without spaces.");
836*b1cdbd2cSJim Jagielski				bSkip = true;
837*b1cdbd2cSJim Jagielski			}
838*b1cdbd2cSJim Jagielski            //validate the user input
839*b1cdbd2cSJim Jagielski            if ( ! aFileSystemObject.FolderExists(sDir))
840*b1cdbd2cSJim Jagielski            {
841*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: Could not find directory \"" +
842*b1cdbd2cSJim Jagielski                                 sDir + "\".");
843*b1cdbd2cSJim Jagielski                bSkip = true;
844*b1cdbd2cSJim Jagielski            }
845*b1cdbd2cSJim Jagielski        }
846*b1cdbd2cSJim Jagielski
847*b1cdbd2cSJim Jagielski		if ( bSkip ) {
848*b1cdbd2cSJim Jagielski		   if ( skipChoice("a special output directory") ) {
849*b1cdbd2cSJim Jagielski			   return "";
850*b1cdbd2cSJim Jagielski		   } else {
851*b1cdbd2cSJim Jagielski			   bSkip = false;
852*b1cdbd2cSJim Jagielski			   continue;
853*b1cdbd2cSJim Jagielski		   }
854*b1cdbd2cSJim Jagielski		}
855*b1cdbd2cSJim Jagielski
856*b1cdbd2cSJim Jagielski        return sDir;
857*b1cdbd2cSJim Jagielski    }
858*b1cdbd2cSJim Jagielski}
859*b1cdbd2cSJim Jagielski
860*b1cdbd2cSJim Jagielskifunction getAutoDeployment()
861*b1cdbd2cSJim Jagielski{
862*b1cdbd2cSJim Jagielski    var sSuggestedAuto = WshSysEnv("SDK_AUTO_DEPLOYMENT");
863*b1cdbd2cSJim Jagielski    if (sSuggestedAuto.length == 0)
864*b1cdbd2cSJim Jagielski        sSuggestedAuto = "YES";
865*b1cdbd2cSJim Jagielski
866*b1cdbd2cSJim Jagielski    while(true)
867*b1cdbd2cSJim Jagielski    {
868*b1cdbd2cSJim Jagielski        stdout.Write("\n Automatic deployment of UNO components (YES/NO) ["+
869*b1cdbd2cSJim Jagielski                     sSuggestedAuto + "]:");
870*b1cdbd2cSJim Jagielski        var sAuto = stdin.ReadLine();
871*b1cdbd2cSJim Jagielski        if (sAuto.length == 0)
872*b1cdbd2cSJim Jagielski            sAuto = sSuggestedAuto;
873*b1cdbd2cSJim Jagielski        else
874*b1cdbd2cSJim Jagielski        {
875*b1cdbd2cSJim Jagielski            sAutoU = sAuto.toUpperCase();
876*b1cdbd2cSJim Jagielski            if (sAutoU != "YES" && sAutoU != "NO")
877*b1cdbd2cSJim Jagielski            {
878*b1cdbd2cSJim Jagielski                stdout.WriteLine("\n Error: The value \"" + sAuto + "\" is " +
879*b1cdbd2cSJim Jagielski								 "invalid. Please answer YES or NO.")
880*b1cdbd2cSJim Jagielski                    continue;
881*b1cdbd2cSJim Jagielski            }
882*b1cdbd2cSJim Jagielski            sAuto = sAutoU;
883*b1cdbd2cSJim Jagielski        }
884*b1cdbd2cSJim Jagielski        return sAuto;
885*b1cdbd2cSJim Jagielski    }
886*b1cdbd2cSJim Jagielski}
887*b1cdbd2cSJim Jagielski
888*b1cdbd2cSJim Jagielski//The function uses sp2bv.exe to obtain a file URL from a
889*b1cdbd2cSJim Jagielski//system path. The URL is already escaped for use as bootstrap variable.
890*b1cdbd2cSJim Jagielski//($ -> \$). Then the resulting string is escaped for use in a bat file.
891*b1cdbd2cSJim Jagielski//That is % signs are made to double % (% -> %%);
892*b1cdbd2cSJim Jagielskifunction makeBootstrapFileUrl(systemPath)
893*b1cdbd2cSJim Jagielski{
894*b1cdbd2cSJim Jagielski    var oExec = WshShell.Exec("sp2bv.exe \"" + systemPath + "\"");
895*b1cdbd2cSJim Jagielski    var output="";
896*b1cdbd2cSJim Jagielski    while (true)
897*b1cdbd2cSJim Jagielski    {
898*b1cdbd2cSJim Jagielski        if (!oExec.StdOut.AtEndOfStream)
899*b1cdbd2cSJim Jagielski        {
900*b1cdbd2cSJim Jagielski            var next = oExec.StdOut.Read(1);
901*b1cdbd2cSJim Jagielski            if (next == '%')
902*b1cdbd2cSJim Jagielski                output += "%%";
903*b1cdbd2cSJim Jagielski            else
904*b1cdbd2cSJim Jagielski                output += next;
905*b1cdbd2cSJim Jagielski        }
906*b1cdbd2cSJim Jagielski        else
907*b1cdbd2cSJim Jagielski            break;
908*b1cdbd2cSJim Jagielski    }
909*b1cdbd2cSJim Jagielski    return output;
910*b1cdbd2cSJim Jagielski}
911*b1cdbd2cSJim Jagielski
912*b1cdbd2cSJim Jagielskifunction writeBatFile(fdir, file)
913*b1cdbd2cSJim Jagielski{
914*b1cdbd2cSJim Jagielski    var fso = new ActiveXObject("Scripting.FileSystemObject");
915*b1cdbd2cSJim Jagielski    if ( !fso.FolderExists(fdir) )
916*b1cdbd2cSJim Jagielski       fso.CreateFolder(fdir);
917*b1cdbd2cSJim Jagielski    var newFile = fso.CreateTextFile(file, true);
918*b1cdbd2cSJim Jagielski
919*b1cdbd2cSJim Jagielski    newFile.Write(
920*b1cdbd2cSJim Jagielski        "@echo off\n" +
921*b1cdbd2cSJim Jagielski        "REM This script sets all enviroment variables, which\n" +
922*b1cdbd2cSJim Jagielski        "REM are necessary for building the examples of the Office Development Kit.\n" +
923*b1cdbd2cSJim Jagielski        "REM The Script was developed for the operating systems Windows.\n" +
924*b1cdbd2cSJim Jagielski        "REM The SDK name\n" +
925*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_NAME=openoffice4.0_sdk\"\n" +
926*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_NAME=" + oo_sdk_name  +
927*b1cdbd2cSJim Jagielski        "\"\n\n" +
928*b1cdbd2cSJim Jagielski        "REM Installation directory of the Software Development Kit.\n" +
929*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_HOME=C:\\Program Files\\OpenOffice\\4\\sdk\"\n" +
930*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_HOME=" + oo_sdk_home  +
931*b1cdbd2cSJim Jagielski        "\"\n\n" +
932*b1cdbd2cSJim Jagielski        "REM Office installation directory.\n" +
933*b1cdbd2cSJim Jagielski        "REM Example: @set \"OFFICE_HOME=C:\\Program Files\\OpenOffice 4\"\n" +
934*b1cdbd2cSJim Jagielski        "@set \"OFFICE_HOME=" + office_home +
935*b1cdbd2cSJim Jagielski        "\"\n\n" +
936*b1cdbd2cSJim Jagielski        "REM Directory of the make command.\n" +
937*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_MAKE_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" +
938*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_MAKE_HOME=" + oo_sdk_make_home +
939*b1cdbd2cSJim Jagielski        "\"\n\n" +
940*b1cdbd2cSJim Jagielski	"REM Directory of the zip tool.\n" +
941*b1cdbd2cSJim Jagielski	"REM Example: @set \"OO_SDK_ZIP_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" +
942*b1cdbd2cSJim Jagielski	"@set \"OO_SDK_ZIP_HOME=" + oo_sdk_zip_home +
943*b1cdbd2cSJim Jagielski        "\"\n\n" +
944*b1cdbd2cSJim Jagielski        "REM Directory of the cat tool.\n" +
945*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_CAT_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" +
946*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_CAT_HOME=" + oo_sdk_cat_home +
947*b1cdbd2cSJim Jagielski        "\"\n\n" +
948*b1cdbd2cSJim Jagielski        "REM Directory of the sed tool.\n" +
949*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_SED_HOME=C:\\UnxUtils\\usr\\local\\wbin\"\n" +
950*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_SED_HOME=" + oo_sdk_sed_home +
951*b1cdbd2cSJim Jagielski        "\"\n\n" +
952*b1cdbd2cSJim Jagielski        "REM Directory of the C++ compiler.\n" +
953*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_CPP_HOME=C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\bin\"\n" +
954*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_CPP_HOME=" + oo_sdk_cpp_home +
955*b1cdbd2cSJim Jagielski	"\"\n@set \"CPP_MANIFEST=" + oo_sdk_manifest_used +
956*b1cdbd2cSJim Jagielski	"\"\n@set \"CPP_WINDOWS_SDK=" + oo_sdk_windowssdk +
957*b1cdbd2cSJim Jagielski        "\"\n\n" +
958*b1cdbd2cSJim Jagielski        "REM Directory of the C# and VB.NET compilers.\n" +
959*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_CLI_HOME=C:\\WINXP\\Microsoft.NET\\Framework\\v1.0.3705\"\n" +
960*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_CLI_HOME=" + oo_sdk_cli_home +
961*b1cdbd2cSJim Jagielski        "\"\n\n" +
962*b1cdbd2cSJim Jagielski        "REM Java SDK installation directory.\n" +
963*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_JAVA_HOME=C:\\Program Files\\Java\\jdk1.6.0_05\"\n" +
964*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_JAVA_HOME=" + oo_sdk_java_home +
965*b1cdbd2cSJim Jagielski        "\"\n\n" +
966*b1cdbd2cSJim Jagielski        "REM Special output directory\n" +
967*b1cdbd2cSJim Jagielski        "REM Example: @set \"OO_SDK_OUT=C:\\" + oo_sdk_name + "\"\n" +
968*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_OUT=" + oo_sdk_out +
969*b1cdbd2cSJim Jagielski        "\"\n\n" +
970*b1cdbd2cSJim Jagielski        "REM Automatic deployment\n" +
971*b1cdbd2cSJim Jagielski        "REM Example: @set \"SDK_AUTO_DEPLOYMENT=YES\"\n" +
972*b1cdbd2cSJim Jagielski        "@set \"SDK_AUTO_DEPLOYMENT=" + sdk_auto_deployment +
973*b1cdbd2cSJim Jagielski        "\"\n\n" +
974*b1cdbd2cSJim Jagielski	"REM Check installation path for the Office Development Kit.\n" +
975*b1cdbd2cSJim Jagielski        "if not defined OO_SDK_HOME (\n" +
976*b1cdbd2cSJim Jagielski        "   echo Error: the variable OO_SDK_HOME is missing!\n" +
977*b1cdbd2cSJim Jagielski        "   goto :error\n" +
978*b1cdbd2cSJim Jagielski        " )\n" +
979*b1cdbd2cSJim Jagielski        "\n\n" +
980*b1cdbd2cSJim Jagielski        "REM Check installation path for GNU make.\n" +
981*b1cdbd2cSJim Jagielski        "if not defined OO_SDK_MAKE_HOME (\n" +
982*b1cdbd2cSJim Jagielski        "   echo Error: the variable OO_SDK_MAKE_HOME is missing!\n" +
983*b1cdbd2cSJim Jagielski        "   goto :error\n" +
984*b1cdbd2cSJim Jagielski        " )\n" +
985*b1cdbd2cSJim Jagielski        "\n" +
986*b1cdbd2cSJim Jagielski        "REM Check installation path for the zip tool.\n" +
987*b1cdbd2cSJim Jagielski        "if not defined OO_SDK_ZIP_HOME (\n" +
988*b1cdbd2cSJim Jagielski        "   echo Error: the variable OO_SDK_ZIP_HOME is missing!\n" +
989*b1cdbd2cSJim Jagielski        "   goto :error\n" +
990*b1cdbd2cSJim Jagielski        " )\n" +
991*b1cdbd2cSJim Jagielski        "\n" +
992*b1cdbd2cSJim Jagielski        "REM Check installation path for the cat tool.\n" +
993*b1cdbd2cSJim Jagielski        "if not defined OO_SDK_CAT_HOME (\n" +
994*b1cdbd2cSJim Jagielski        "   echo Error: the variable OO_SDK_CAT_HOME is missing!\n" +
995*b1cdbd2cSJim Jagielski        "   goto :error\n" +
996*b1cdbd2cSJim Jagielski        " )\n" +
997*b1cdbd2cSJim Jagielski        "\n" +
998*b1cdbd2cSJim Jagielski        "REM Check installation path for the sed tool.\n" +
999*b1cdbd2cSJim Jagielski        "if not defined OO_SDK_SED_HOME (\n" +
1000*b1cdbd2cSJim Jagielski        "   echo Error: the variable OO_SDK_SED_HOME is missing!\n" +
1001*b1cdbd2cSJim Jagielski        "   goto :error\n" +
1002*b1cdbd2cSJim Jagielski        " )\n" +
1003*b1cdbd2cSJim Jagielski        "\n" +
1004*b1cdbd2cSJim Jagielski        "REM Set library path. \n" +
1005*b1cdbd2cSJim Jagielski        "@set \"LIB=%OO_SDK_HOME%\\lib;%LIB%\"\n" +
1006*b1cdbd2cSJim Jagielski        "if defined CPP_WINDOWS_SDK (\n" +
1007*b1cdbd2cSJim Jagielski        "   @set \"LIB=%LIB%;%CPP_WINDOWS_SDK%\\lib\"\n" +
1008*b1cdbd2cSJim Jagielski        " )\n" +
1009*b1cdbd2cSJim Jagielski        "\n" +
1010*b1cdbd2cSJim Jagielski        "REM Set office program path.\n" +
1011*b1cdbd2cSJim Jagielski        "if defined OFFICE_HOME (\n" +
1012*b1cdbd2cSJim Jagielski        "   @set \"OFFICE_PROGRAM_PATH=%OFFICE_HOME%\\program\"\n" +
1013*b1cdbd2cSJim Jagielski        " )" +
1014*b1cdbd2cSJim Jagielski        "\n" +
1015*b1cdbd2cSJim Jagielski        "REM Set UNO path, necessary to ensure that the cpp examples using the\n" +
1016*b1cdbd2cSJim Jagielski	"REM new UNO bootstrap mechanism use the configured office installation\n" +
1017*b1cdbd2cSJim Jagielski	 "REM (only set when using an Office).\n" +
1018*b1cdbd2cSJim Jagielski	"if defined OFFICE_HOME (\n" +
1019*b1cdbd2cSJim Jagielski	"   @set \"UNO_PATH=%OFFICE_PROGRAM_PATH%\"\n" +
1020*b1cdbd2cSJim Jagielski	" )\n" +
1021*b1cdbd2cSJim Jagielski        "\n\n" +
1022*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_OFFICE_BIN_DIR=%OFFICE_PROGRAM_PATH%\"\n" +
1023*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_OFFICE_LIB_DIR=%OFFICE_PROGRAM_PATH%\"\n" +
1024*b1cdbd2cSJim Jagielski        "@set \"OO_SDK_OFFICE_JAVA_DIR=%OFFICE_PROGRAM_PATH%\\classes\"\n" +
1025*b1cdbd2cSJim Jagielski        "\n" +
1026*b1cdbd2cSJim Jagielski        "REM Set classpath\n" +
1027*b1cdbd2cSJim Jagielski        "@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" +
1028*b1cdbd2cSJim Jagielski        "\n" +
1029*b1cdbd2cSJim Jagielski        "REM Add directory of the SDK tools to the path.\n" +
1030*b1cdbd2cSJim Jagielski        "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" +
1031*b1cdbd2cSJim Jagielski        "\n" +
1032*b1cdbd2cSJim Jagielski        "REM Set PATH appropriate to the output directory\n" +
1033*b1cdbd2cSJim Jagielski        "if defined OO_SDK_OUT (\n" +
1034*b1cdbd2cSJim Jagielski        "   @set \"PATH=%OO_SDK_OUT%\\WINexample.out\\bin;%PATH%\"\n" +
1035*b1cdbd2cSJim Jagielski        " ) else (\n" +
1036*b1cdbd2cSJim Jagielski        "   @set \"PATH=%OO_SDK_HOME%\\WINexample.out\\bin;%PATH%\"\n" +
1037*b1cdbd2cSJim Jagielski        " )\n" +
1038*b1cdbd2cSJim Jagielski        "\n" +
1039*b1cdbd2cSJim Jagielski        "REM Add directory of the Win SDK to the path, if necessary.\n" +
1040*b1cdbd2cSJim Jagielski        "if defined CPP_WINDOWS_SDK (\n" +
1041*b1cdbd2cSJim Jagielski	"   @set \"PATH=%CPP_WINDOWS_SDK\\bin%;%PATH%\"\n" +
1042*b1cdbd2cSJim Jagielski	"   @set \"INCLUDE=%CPP_WINDOWS_SDK\\Include%;%INCLUDE%\"\n" +
1043*b1cdbd2cSJim Jagielski        ")\n" +
1044*b1cdbd2cSJim Jagielski        "REM Add directory of the C# and VB.NET compilers to the path, if necessary.\n" +
1045*b1cdbd2cSJim Jagielski        "if defined OO_SDK_CLI_HOME @set \"PATH=%OO_SDK_CLI_HOME%;%PATH%\"\n" +
1046*b1cdbd2cSJim Jagielski        "\n" +
1047*b1cdbd2cSJim Jagielski        "REM Add directory of the Java tools to the path, if necessary.\n" +
1048*b1cdbd2cSJim Jagielski        "if defined OO_SDK_JAVA_HOME @set \"PATH=%OO_SDK_JAVA_HOME%\\bin;%OO_SDK_JAVA_HOME%\\jre\\bin;%PATH%\"\n" +
1049*b1cdbd2cSJim Jagielski        "\n" +
1050*b1cdbd2cSJim Jagielski        "REM Set environment for C++ compiler tools, if necessary.\n" +
1051*b1cdbd2cSJim Jagielski        "if defined OO_SDK_CPP_HOME call \"%OO_SDK_CPP_HOME%\\VCVARS32.bat\"\n" +
1052*b1cdbd2cSJim Jagielski        "\n" +
1053*b1cdbd2cSJim Jagielski        "REM Set tilte to identify the prepared shell.\n" +
1054*b1cdbd2cSJim Jagielski        "title Shell prepared for SDK\n" +
1055*b1cdbd2cSJim Jagielski        "\nREM Prepare shell with all necessary environment variables.\n" +
1056*b1cdbd2cSJim Jagielski        "echo.\n" +
1057*b1cdbd2cSJim Jagielski        "echo  ******************************************************************\n" +
1058*b1cdbd2cSJim Jagielski        "echo  *\n" +
1059*b1cdbd2cSJim Jagielski        "echo  * SDK environment is prepared for Windows\n" +
1060*b1cdbd2cSJim Jagielski        "echo  *\n" +
1061*b1cdbd2cSJim Jagielski        "echo  * SDK = %OO_SDK_HOME%\n" +
1062*b1cdbd2cSJim Jagielski        "echo  * Office = %OFFICE_HOME%\n" +
1063*b1cdbd2cSJim Jagielski        "echo  * Make = %OO_SDK_MAKE_HOME%\n" +
1064*b1cdbd2cSJim Jagielski        "echo  * Zip = %OO_SDK_ZIP_HOME%\n" +
1065*b1cdbd2cSJim Jagielski        "echo  * cat = %OO_SDK_CAT_HOME%\n" +
1066*b1cdbd2cSJim Jagielski        "echo  * sed = %OO_SDK_SED_HOME%\n" +
1067*b1cdbd2cSJim Jagielski        "echo  * C++ Compiler = %OO_SDK_CPP_HOME%\n" +
1068*b1cdbd2cSJim Jagielski        "echo  * C# and VB.NET compilers = %OO_SDK_CLI_HOME%\n" +
1069*b1cdbd2cSJim Jagielski        "echo  * Java = %OO_SDK_JAVA_HOME%\n" +
1070*b1cdbd2cSJim Jagielski        "echo  * Special Output directory = %OO_SDK_OUT%\n" +
1071*b1cdbd2cSJim Jagielski        "echo  * Auto deployment = %SDK_AUTO_DEPLOYMENT%\n" +
1072*b1cdbd2cSJim Jagielski        "echo  *\n" +
1073*b1cdbd2cSJim Jagielski        "echo  ******************************************************************\n" +
1074*b1cdbd2cSJim Jagielski        "echo.\n" +
1075*b1cdbd2cSJim Jagielski        "goto end\n" +
1076*b1cdbd2cSJim Jagielski        "\n" +
1077*b1cdbd2cSJim Jagielski        " :error\n" +
1078*b1cdbd2cSJim Jagielski        "Error: Please insert the necessary environment variables into the batch file.\n" +
1079*b1cdbd2cSJim Jagielski        "\n" +
1080*b1cdbd2cSJim Jagielski        " :end\n"
1081*b1cdbd2cSJim Jagielski        );
1082*b1cdbd2cSJim Jagielski        newFile.Close();
1083*b1cdbd2cSJim Jagielski}
1084