Module: Ryb::VisualStudio

Defined in:
lib/ryb/visual_studio.rb

Constant Summary collapse

POSSIBLE_INSTALL_DIRECTORY_REGISTRY_KEYS =
["SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\12.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\12.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\12.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\12.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\11.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\11.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\11.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\10.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\10.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\10.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\9.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\9.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\9.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\8.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\8.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\8.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\7.1\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\7.1\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\7.1\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\7.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\7.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\7.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\7.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\6.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup\\VC",
"SOFTWARE\\Wow6432Node\\Microsoft\\VCExpress\\6.0\\Setup\\VC",
"SOFTWARE\\Microsoft\\VCExpress\\6.0\\Setup\\VC"]

Class Method Summary collapse

Class Method Details

.installObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/ryb/visual_studio.rb', line 37

def self.install
  if Ryb.platform == :windows
    if ENV.key?('VCInstallDir')
      ENV['VCInstallDir']
    else
      # TODO(mtwilliams): Escape, i.e. .gsub(/\\/,'/').gsub(/\ /,'\\ ')?

      self.installs.first
    end
  end
end

.installed?Boolean



48
49
50
# File 'lib/ryb/visual_studio.rb', line 48

def self.installed?
  !self.install.nil?
end

.installsObject



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ryb/visual_studio.rb', line 52

def self.installs
  if Ryb.platform == :windows
    require 'win32/registry'
    @installs ||= begin
      (POSSIBLE_INSTALL_DIRECTORY_REGISTRY_KEYS.map do |key|
        begin
          ::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, ::Win32::Registry::KEY_READ)['ProductDir']
        rescue
        end
      end).compact
    end
  end
end