vagrant-vbguest 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44a151b1f54cf71bf74136930643a59a6d1be529273fa43186dfccaf4cb39e4a
4
- data.tar.gz: 6daf1818af365093140ab387a37ec760b328c5ff8bcf4e74bf076a204507de23
3
+ metadata.gz: fe9b19c92b1f9e06b0e17defbb0b412cfec21fd0b2bb75c9508f2901e70a972f
4
+ data.tar.gz: 8e856da6367fcd028b1a98e21a17daf32a7090d627d2d55893b7b17ea6f8b330
5
5
  SHA512:
6
- metadata.gz: 04ae3fb888ff4e75728e56e76cfd2f413fce56728823d75992639cff74bfa57bafe95b7af95573ea0712556233dea6c159c266eaa67a2a5f24ad6138710b43de
7
- data.tar.gz: 1917aca9323da9545380f5eb8be9276a9617072e17162932783cca7a987a64883931c4a78c44dc94dd9b129da3c29840492a2e525e267bbd7de07db05b46db9f
6
+ metadata.gz: 1189d19dda9bdb84b82c4fdec404bbc1192429ee7d9ba985a0a63f394099f717ee23bd78a950c62de9bdc5657eb03bf33a05dbc642f122ddaa8b0f867ac200f0
7
+ data.tar.gz: dd9fce0ae08011b8c58a8588bf4e4fce03e5d0fefc6ad59b591436ac50772fcc76ba9969e380862ab6eec63659e98494433ac3636c7720975be73a48fdad8584
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
+ ## 0.20.0 (2019-09-27)
2
+
3
+ - Add Windows support. @thumperward [GH-343]
4
+ - Add `allow_downgrade` config. Set it to `false` to prevent downgrades. [GH-310]
5
+ - the gem version is now hold in a plain text file `VERSION` (additionally to the ruby constant `VagrantVbguest::VERSION`)
6
+
1
7
  ## 0.19.0 (2019-07-09)
2
8
 
3
- - Relax verion pin on micormachine dependency. Allow 2.x to 3.x. @johanneskastl [GH-341]
9
+ - Relax version pin on micromachine dependency. Allow 2.x to 3.x. @johanneskastl [GH-341]
4
10
 
5
11
  ## 0.18.0 (2019-05-20)
6
12
 
data/Gemfile CHANGED
@@ -6,9 +6,6 @@ group :development do
6
6
  # Vagrant environment itself using `vagrant plugin`.
7
7
  gem "vagrant", :git => "https://github.com/hashicorp/vagrant.git"
8
8
  gem "rake", "~> 10.0"
9
-
10
- gem "ed25519"
11
- gem "bcrypt_pbkdf"
12
9
  end
13
10
 
14
11
  group :plugins do
data/Readme.md CHANGED
@@ -53,6 +53,7 @@ vbguest will try to autodetect the best option for your system. WTF? see below.
53
53
  * `iso_mount_point` (String, default: `/mnt`): Where to mount the VBoxGuestAdditions.iso file on the guest system.
54
54
  * `auto_update` (Boolean, default: `true`) : Whether to check the correct additions version on each start (where start is _not_ resuming a box).
55
55
  * `auto_reboot` (Boolean, default: `true` when running as a middleware, `false` when running as a command) : Whether to reboot the box after GuestAdditions has been installed, but not loaded.
56
+ * `allow_downgrade` (Boolean, default: `true`) : Allow to install an older version of Guest Additions onto the guest. (Eg. your are running a host with VirtualBox 5 and the box is already on 6).
56
57
  * `no_install` (Boolean, default: `false`) : Whether to check the correct additions version only. This will warn you about version mis-matches, but will not try to install anything.
57
58
  * `no_remote` (Boolean, default: `false`) : Whether to _not_ download the iso file from a remote location. This includes any `http` location!
58
59
  * `installer` (`VagrantVbguest::Installers::Base`, optional) : Reference to a (custom) installer class
@@ -259,6 +260,14 @@ If you find yourself copying the same installer in each of your vagrant project,
259
260
 
260
261
  This project contains a [sample installer gem](https://github.com/dotless-de/vagrant-vbguest/tree/master/testdrive/vagrant-vbguest-unikorn) which might serve as an boilerplate.
261
262
 
263
+
264
+ ## Contributing
265
+
266
+ Bug reports and pull requests are welcome on GitHub at https://github.com/dotless-de/vagrant-vbguest.
267
+
268
+ For the forseeable future, no more pull requests will be accepted which add new guest support/installers. Please build your gem as a plugin to vbguest (see "Very Advanced Usage" section of this file). In fact, please open a pull request to remove support for a guest system if feel confident that your sulution is any better.
269
+
270
+
262
271
  ## Known Issues
263
272
 
264
273
  * The installer script, which mounts and runs the GuestAdditions Installer Binary, works on Linux only. Most likely it will run on most Unix-like platforms.
@@ -266,3 +275,5 @@ This project contains a [sample installer gem](https://github.com/dotless-de/vag
266
275
  * The installer script requires a valid mount point on the guest system. This defaults to `/mnt` but can be overwritten with the `iso_mount_point` option.
267
276
  * On multi vm boxes, the iso file will be downloaded for each vm.
268
277
  * The plugin installation on Windows host systems may not work as expected (using `vagrant gem install vagrant-vbguest`). Try `C:\vagrant\vagrant\embedded\bin\gem.bat install vagrant-vbguest` instead. (See [issue #19](https://github.com/dotless-de/vagrant-vbguest/issues/19#issuecomment-7040304))
278
+ * The Windows guest additions installer will only properly install virtual drivers (enabling e.g. seamless resizing) if a user is logged in during the install. Automatic login is recommended for Windows Vagrant boxes.
279
+ * Uploading GuestAdditions into a Windows guest might take longer than expected.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.20.0
@@ -5,9 +5,10 @@ rescue LoadError
5
5
  end
6
6
 
7
7
  # Add our custom translations to the load path
8
- I18n.load_path << File.expand_path("../../locales/en.yml", __FILE__)
8
+ I18n.load_path += Dir[File.expand_path("../../locales/*.yml", __FILE__)]
9
9
  I18n.reload!
10
10
 
11
+ require "vagrant-vbguest/version"
11
12
  require "vagrant-vbguest/errors"
12
13
  require 'vagrant-vbguest/download'
13
14
  require 'vagrant-vbguest/command'
@@ -28,6 +29,7 @@ require 'vagrant-vbguest/installers/fedora'
28
29
  require 'vagrant-vbguest/installers/opensuse'
29
30
  require 'vagrant-vbguest/installers/suse'
30
31
  require 'vagrant-vbguest/installers/archlinux'
32
+ require 'vagrant-vbguest/installers/windows'
31
33
 
32
34
  require 'vagrant-vbguest/middleware'
33
35
 
@@ -4,7 +4,7 @@ module VagrantVbguest
4
4
 
5
5
  module Attributes
6
6
  attr_accessor :auto_update, :auto_reboot, :no_install, :no_remote,
7
- :installer, :installer_arguments,
7
+ :installer, :installer_arguments, :allow_downgrade,
8
8
  :iso_path, :iso_upload_path, :iso_mount_point, :yes
9
9
  end
10
10
 
@@ -22,6 +22,8 @@ module VagrantVbguest
22
22
  return nil if !@iso_path || @iso_path == :auto
23
23
  @iso_path
24
24
  end
25
+
26
+ def allow_downgrade; @allow_downgrade.nil? ? false : @allow_downgrade end
25
27
  end
26
28
 
27
29
  include Attributes
@@ -38,6 +40,8 @@ module VagrantVbguest
38
40
  @iso_path
39
41
  end
40
42
 
43
+ def allow_downgrade; @allow_downgrade.nil? ? self.class.allow_downgrade : @allow_downgrade end
44
+
41
45
  # explicit hash, to get symbols in hash keys
42
46
  def to_hash
43
47
  {
@@ -50,7 +54,8 @@ module VagrantVbguest
50
54
  :auto_reboot => auto_reboot,
51
55
  :no_install => no_install,
52
56
  :no_remote => no_remote,
53
- :yes => yes
57
+ :yes => yes,
58
+ :allow_downgrade => allow_downgrade
54
59
  }
55
60
  end
56
61
 
@@ -94,7 +94,7 @@ module VagrantVbguest
94
94
  def host_version
95
95
  installer = guest_installer
96
96
  raise NoInstallerFoundError, :method => 'check host version of' if !installer
97
- installer.host.version
97
+ installer.host_version
98
98
  end
99
99
 
100
100
  def running?
@@ -103,16 +103,32 @@ module VagrantVbguest
103
103
  installer.running?
104
104
  end
105
105
 
106
+ def reboot_after_install?
107
+ if (installer = guest_installer)
108
+ guest_installer.reboot_after_install?
109
+ end
110
+ end
111
+
106
112
  # Returns an installer instance for the current vm
107
113
  # This is either the one configured via `installer` option or
108
114
  # detected from all registered installers (see {Installer.detect})
109
115
  #
110
116
  # @return [Installers::Base]
111
117
  def guest_installer
112
- @guest_installer ||= if @options[:installer].is_a? Class
113
- @options[:installer].new(@vm, @options)
118
+ return @guest_installer if @guest_installer
119
+
120
+ if (klass = guest_installer_class)
121
+ @guest_installer = klass.new(@vm, @options)
122
+ end
123
+
124
+ @guest_installer
125
+ end
126
+
127
+ def guest_installer_class
128
+ if @options[:installer].is_a?(Class)
129
+ @options[:installer]
114
130
  else
115
- installer_klass = Installer.detect(@vm, @options) and installer_klass.new(@vm, @options)
131
+ Installer.detect(@vm, @options)
116
132
  end
117
133
  end
118
134
 
@@ -113,7 +113,7 @@ module VagrantVbguest
113
113
 
114
114
  # Determinates if the GuestAdditions kernel module is loaded.
115
115
  # This method tests if there is a working GuestAdditions
116
- # kernel module. If there is none, {#rebuild} is beeing called.
116
+ # kernel module. If there is none, {#rebuild} is being called.
117
117
  # If there is no way of telling if there is a working
118
118
  # GuestAddition for a specific system, this method should
119
119
  # return `true`.
@@ -124,32 +124,43 @@ module VagrantVbguest
124
124
  true
125
125
  end
126
126
 
127
+ # This manipulate the run-list of a the vbguest machine.
128
+ def reboot_after_install?(opts=nil, &block)
129
+ false
130
+ end
131
+
127
132
  # Determinates the GuestAdditions version installed on the
128
133
  # guest system.
129
134
  #
130
135
  # @param reload [Boolean] Whether to read the value again or use
131
- # the cached value form an erlier call.
132
- # @return [String] The version code of the VirtualBox Guest Additions
136
+ # the cached value form an earlier call.
137
+ # @return [Gem::Version] The version code of the VirtualBox Guest Additions
133
138
  # available on the guest, or `nil` if none installed.
134
139
  def guest_version(reload=false)
135
140
  return @guest_version if @guest_version && !reload
136
141
 
137
- guest_version = @host.read_guest_additions_version
138
- guest_version = !guest_version ? nil : guest_version[/\d+\.\d+\.\d+/]
142
+ @guest_version = VagrantVbguest::Version(@host.read_guest_additions_version)
143
+ end
139
144
 
140
- @guest_version = guest_version
145
+ # Determinates the host (eg VirtualBox) version
146
+ # @param reload [Boolean] Whether to read the value again or use
147
+ # the cached value form an earlier call.
148
+ # @return [Gem::Version] The version code of the host provider
149
+ def host_version(reload=false)
150
+ return @host_version if @host_version && !reload
151
+
152
+ @host_version = VagrantVbguest::Version(@host.version)
141
153
  end
142
154
 
143
155
 
144
156
  # Determinates the version of the GuestAdditions installer in use
145
157
  #
146
- # @return [String] The version code of the GuestAdditions installer
158
+ # @return [Gem::Version] The version code of the GuestAdditions installer
147
159
  def installer_version(path_to_installer)
148
160
  version = nil
149
161
  communicate.sudo("#{path_to_installer} --info", :error_check => false) do |type, data|
150
- if (v = data.to_s.match(/\AIdentification.*\s(\d+\.\d+.\d+)/i))
151
- version = v[1]
152
- end
162
+ v = VagrantVbguest::Version(data, /\AIdentification.*\s(\d+\.\d+.\d+)/i)
163
+ version = v if v
153
164
  end
154
165
  version
155
166
  end
@@ -39,8 +39,10 @@ module VagrantVbguest
39
39
  def release_version
40
40
  unless instance_variable_defined?(:@release_version)
41
41
  @release_version = nil
42
+ version_pattern = /(\d+\.\d+(\.\d+)?)/
42
43
  communicate.sudo('cat /etc/centos-release') do |type, data|
43
- @release_version = data.to_s[/(\d+\.\d+(\.\d+)?)/, 1]
44
+ v = VagrantVbguest::Version(data, version_pattern)
45
+ @release_version = v if v
44
46
  end
45
47
  end
46
48
  @release_version
@@ -88,14 +88,14 @@ module VagrantVbguest
88
88
  # additions installed on the host may differ. If this happens, we
89
89
  # assume, that the host binaries are right and yield a warning message.
90
90
  #
91
- # @return [String] The version code of the VirtualBox Guest Additions
92
- # available on the guest, or `nil` if none installed.
91
+ # @return [Gem::Version] The version code of the VirtualBox Guest Additions
92
+ # available on the guest, or `nil` if none installed.
93
93
  def guest_version(reload = false)
94
94
  return @guest_version if @guest_version && !reload
95
- driver_version = super.to_s[/^(\d+\.\d+.\d+)/, 1]
95
+ driver_version = VagrantVbguest::Version(super)
96
96
 
97
97
  communicate.sudo('VBoxService --version', :error_check => false) do |type, data|
98
- service_version = data.to_s[/^(\d+\.\d+.\d+)/, 1]
98
+ service_version = VagrantVbguest::Version(data)
99
99
  if service_version
100
100
  if driver_version != service_version
101
101
  @env.ui.warn(I18n.t("vagrant_vbguest.guest_version_reports_differ", :driver => driver_version, :service => service_version))
@@ -126,7 +126,7 @@ module VagrantVbguest
126
126
  communicate.sudo("#{find_tool('vboxadd')} start", opts, &block)
127
127
  end
128
128
 
129
- if Gem::Version.new("#{guest_version}") >= Gem::Version.new('5.1')
129
+ if guest_version && guest_version >= Gem::Version.new('5.1')
130
130
  if systemd_tool
131
131
  communicate.sudo("#{systemd_tool[:path]} vboxadd-service #{systemd_tool[:up]}", opts, &block)
132
132
  else
@@ -0,0 +1,125 @@
1
+ require "vagrant-vbguest/helpers/os_release"
2
+
3
+ module VagrantVbguest
4
+ module Installers
5
+
6
+ class Windows < Base
7
+ def self.match?(vm)
8
+ raise Error, _key: :do_not_inherit_match_method if self != Windows
9
+ communicate_to(vm).test("(Get-WMIObject win32_operatingsystem).name")
10
+ end
11
+
12
+ def self.os_release(vm)
13
+ @@os_release_info ||= {}
14
+ if !@@os_release_info.has_key?(vm_id(vm)) && communicate_to(vm).test("(Get-WMIObject win32_operatingsystem).Name")
15
+ communicate.execute("(Get-WMIObject win32_operatingsystem).Name") do |type, data|
16
+ @@os_release_info[vm_id(vm)] = data
17
+ end
18
+ end
19
+ @@os_release_info[vm_id(vm)]
20
+ end
21
+
22
+ def os_release
23
+ self.class.os_release(vm)
24
+ end
25
+
26
+ def tmp_path
27
+ options[:iso_upload_path] || "$env:TEMP/VBoxGuestAdditions.iso"
28
+ end
29
+
30
+ def mount_point
31
+ communicate.execute(<<-SHELL) do |type, data|
32
+ (Get-DiskImage -DevicePath (
33
+ Get-DiskImage -ImagePath #{tmp_path}
34
+ ).DevicePath | Get-Volume).DriveLetter
35
+ SHELL
36
+ return data.strip
37
+ end
38
+ end
39
+
40
+ def installer_version(path_to_installer)
41
+ version = nil
42
+ communicate.execute("(get-item #{path_to_installer}).VersionInfo.ProductVersion") do |type, data|
43
+ if (v = data.to_s.match(/(\d+\.\d+.\d+)/i))
44
+ version = v[1]
45
+ end
46
+ end
47
+ version
48
+ end
49
+
50
+ def install(opts = nil, &block)
51
+ upload(iso_file)
52
+ mount_iso(opts, &block)
53
+ execute_installer(opts, &block)
54
+ unmount_iso(opts, &block) unless options[:no_cleanup]
55
+ end
56
+
57
+ def reboot_after_install?(opts = nil, &block)
58
+ true
59
+ end
60
+
61
+ def running?(opts = nil, &block)
62
+ communicate.test("'Running' -eq (Get-Service VBoxService)")
63
+ end
64
+
65
+ def guest_version(reload = false)
66
+ return @guest_version if @guest_version && !reload
67
+ driver_version = VagrantVbguest::Version(super)
68
+
69
+ communicate.execute("VBoxService --version", error_check: false) do |type,data|
70
+ service_version = VagrantVbguest::Version(data)
71
+
72
+ if service_version
73
+ if driver_version != service_version
74
+ @env.ui.warn(I18n.t(
75
+ "vagrant_vbguest.guest_version_reports_differ",
76
+ driver: driver_version, service: service_version
77
+ ))
78
+ end
79
+ @guest_version = service_version
80
+ end
81
+ end
82
+ @guest_version
83
+ end
84
+
85
+ def execute_installer(opts = nil, &block)
86
+ cert_dir = File.join("#{mount_point}:", 'cert')
87
+ installer = File.join("#{mount_point}:", "VBoxWindowsAdditions.exe")
88
+
89
+ yield_installation_warning(installer)
90
+ opts = { elevated: true }.merge(opts || {})
91
+
92
+ # ignore "CRYPT_E_EXISTS" error when re-installing
93
+ communicate.execute(<<-SHELL, opts.merge(error_check: false), &block)
94
+ cd #{cert_dir}; ./VBoxCertUtil.exe add-trusted-publisher *.cer --root *.cer
95
+ SHELL
96
+
97
+ exit_status = communicate.execute(<<-SHELL, opts, &block)
98
+ cd #{cert_dir}; #{installer} /S
99
+ SHELL
100
+
101
+ yield_installation_error_warning(installer) unless exit_status == 0
102
+ exit_status
103
+ end
104
+
105
+ def mount_iso(opts = nil, &block)
106
+ communicate.execute("Mount-DiskImage -ImagePath #{tmp_path}", opts, &block)
107
+ env.ui.info(I18n.t("vagrant_vbguest.mounting_iso", mount_point: mount_point))
108
+ end
109
+
110
+ def unmount_iso(opts = nil, &block)
111
+ env.ui.info(I18n.t("vagrant_vbguest.unmounting_iso",mount_point: mount_point))
112
+ communicate.execute("Dismount-DiskImage -ImagePath #{tmp_path}", opts, &block)
113
+ communicate.execute("Remove-Item -Path #{tmp_path}", opts, &block)
114
+ end
115
+
116
+ def yield_installation_error_warning(path_to_installer)
117
+ @env.ui.warn I18n.t(
118
+ "vagrant_vbguest.windows.install_error",
119
+ installer_version: installer_version(path_to_installer) || I18n.t("vagrant_vbguest.unknown")
120
+ )
121
+ end
122
+ end
123
+ end
124
+ end
125
+ VagrantVbguest::Installer.register(VagrantVbguest::Installers::Windows, 2)
@@ -13,7 +13,7 @@ module VagrantVbguest
13
13
  @logger = Log4r::Logger.new("vagrant::plugins::vbguest-machine")
14
14
  @logger.debug("initialize vbguest machine for VM '#{vm.name}' (#{vm.to_s})")
15
15
 
16
- @installer = Installer.new vm, options
16
+ @installer = Installer.new(vm, options)
17
17
  end
18
18
 
19
19
  def run
@@ -55,7 +55,7 @@ module VagrantVbguest
55
55
  def steps(state)
56
56
  case state
57
57
  when :clean, :unmatched
58
- [:install]
58
+ [:install].tap { |l| l << :reboot if installer.reboot_after_install? }
59
59
  when :not_running
60
60
  installation_ran? ? [:reboot] : [:start, :rebuild, :reboot]
61
61
  else
@@ -69,8 +69,14 @@ module VagrantVbguest
69
69
  running = installer.running?
70
70
  @logger.debug("Current states for VM '#{vm.name}' are : guest_version=#{guest_version} : host_version=#{host_version} : running=#{running}")
71
71
 
72
- return :clean if !guest_version
73
- return :unmatched if host_version != guest_version
72
+ return :clean if !guest_version
73
+
74
+ if host_version != guest_version
75
+ return :unmatched if host_version > guest_version || options[:allow_downgrade] || options[:force]
76
+ return :not_running if !running # still need to check this here, so we don't miss it before running into "skipped_downgrade"
77
+ return :skipped_downgrade if host_version < guest_version
78
+ end
79
+
74
80
  return :not_running if !running
75
81
  return :ok
76
82
  end
@@ -1,3 +1,22 @@
1
+ require "delegate"
2
+
1
3
  module VagrantVbguest
2
- VERSION = "0.19.0"
4
+ VERSION = File.read(File.expand_path("../../../VERSION", __FILE__)).chop
5
+
6
+ # Helper to create a new Gem::Version by parsing the common version pattern.
7
+ # When overwriting the pattern, make sure that the matched version string is
8
+ # the capture `1`
9
+ #
10
+ # @param input [String] The text to parse for a version.
11
+ # @param pattern [Regexp] The optional overwrite of the version string pattern (see +PATTERN+)
12
+ # @return [nil|Gem::Version] returns `nil` if the input could not been pared
13
+ def self.Version(input, pattern = /(\d+\.\d+\.\d+)/)
14
+ if input.nil?
15
+ nil
16
+ elsif Gem::Version === input
17
+ input
18
+ else
19
+ Gem::Version.create(input[pattern, 1])
20
+ end
21
+ end
3
22
  end
data/locales/en.yml CHANGED
@@ -31,6 +31,7 @@ en:
31
31
  unmatched: "[%{vm_name}] GuestAdditions versions on your host (%{host_version}) and guest (%{guest_version}) do not match."
32
32
  not_running: "[%{vm_name}] GuestAdditions seems to be installed (%{guest_version}) correctly, but not running."
33
33
  ok: "[%{vm_name}] GuestAdditions %{guest_version} running --- OK."
34
+ skipped_downgrade: "GuestAdditions are newer than your host but, downgrades are disabled. Skipping."
34
35
 
35
36
  errors:
36
37
  autodetect_iso_path: |-
@@ -0,0 +1,4 @@
1
+ en:
2
+ vagrant_vbguest:
3
+ windows:
4
+ install_error: An error occurred during installation of VirtualBox Guest Additions %{installer_version}. Some functionality may not work as intended.
@@ -1,9 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/vagrant-vbguest/version', __FILE__)
3
-
4
2
  Gem::Specification.new do |s|
5
3
  s.name = "vagrant-vbguest"
6
- s.version = VagrantVbguest::VERSION
4
+ s.version = File.read('VERSION').chop
7
5
  s.platform = Gem::Platform::RUBY
8
6
  s.authors = ["Robert Schulze"]
9
7
  s.email = ["robert@dotless.de"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-vbguest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Schulze
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-09 00:00:00.000000000 Z
11
+ date: 2019-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: micromachine
@@ -73,6 +73,7 @@ files:
73
73
  - LICENSE
74
74
  - Rakefile
75
75
  - Readme.md
76
+ - VERSION
76
77
  - lib/vagrant-vbguest.rb
77
78
  - lib/vagrant-vbguest/command.rb
78
79
  - lib/vagrant-vbguest/config.rb
@@ -95,10 +96,12 @@ files:
95
96
  - lib/vagrant-vbguest/installers/redhat.rb
96
97
  - lib/vagrant-vbguest/installers/suse.rb
97
98
  - lib/vagrant-vbguest/installers/ubuntu.rb
99
+ - lib/vagrant-vbguest/installers/windows.rb
98
100
  - lib/vagrant-vbguest/machine.rb
99
101
  - lib/vagrant-vbguest/middleware.rb
100
102
  - lib/vagrant-vbguest/version.rb
101
103
  - locales/en.yml
104
+ - locales/en_windows.yml
102
105
  - vagrant-vbguest.gemspec
103
106
  homepage: https://github.com/dotless-de/vagrant-vbguest
104
107
  licenses: