dlwGetSdkPath : error was not clear after a winqueryreg fail.
[scilab.git] / scilab / modules / dynamic_link / macros / windows / dlwGetSdkPath.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) DIGITEO - 2010-2011 - Allan CORNET
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9
10 //=============================================================================
11 function SDKpath = dlwGetSdkPath()
12
13     SDKpath = [];
14
15     compiler = findmsvccompiler();
16     entries = [];
17
18     //detect sdk 8 only for VS >= 2012
19     if find(compiler == ["msvc120express";"msvc120pro";"msvc110express";"msvc110pro"]) <> [] then;
20         entries = [entries ;
21         "Software\Microsoft\Microsoft SDKs\Windows\v8.0A" "InstallationFolder" ; .. // Windows 8 A
22         "Software\Microsoft\Microsoft SDKs\Windows\v8.0" "InstallationFolder" .. // Windows 8
23         ];
24     end
25
26     entries = [entries;
27     "Software\Microsoft\Microsoft SDKs\Windows\v7.0" "InstallationFolder"; .. // Microsoft Windows SDK 7.0
28     "Software\Microsoft\Microsoft SDKs\Windows\v7.0A" "InstallationFolder"; .. // Microsoft Windows SDK 7.0A
29     "Software\Microsoft\Microsoft SDKs\Windows\v7.1" "InstallationFolder"; .. // Microsoft Windows SDK 7.1
30     "Software\Microsoft\Microsoft SDKs\Windows" "CurrentInstallFolder" ; .. // Vista & Seven SDK
31     "Software\Microsoft\MicrosoftSDK\InstalledSDKs\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1" "Install Dir" ; .. // Windows 2003 R2 SDK
32     "Software\Microsoft\MicrosoftSDK\InstalledSDKs\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3" "Install Dir" .. // Windows 2003 SDK
33     ];
34
35     for i = 1:size(entries(:,1),"*")
36         err = execstr("SDKpath = winqueryreg(""HKEY_LOCAL_MACHINE"", entries(i,1), entries(i,2))", "errcatch");
37         // remove last file separator if it exists
38         if err == 0 & SDKpath <> [] then
39             SDKpath = pathconvert(SDKpath, %f, %t);
40             // We check that returned path exists
41             // case: install and uninstall sdk, uninstaller does not remove registry key
42             if isdir(SDKpath) then
43                 break;
44             else
45                 SDKpath = [];
46             end
47         else
48             errclear();
49         end
50     end
51 endfunction
52 //=============================================================================