diff --git a/logging.pm b/logging.pm index 1e4b751..d7060cd 100644 --- a/logging.pm +++ b/logging.pm @@ -23,6 +23,7 @@ require Exporter; set_current_pkg_name get_win_major get_win_version + get_real_win_version get_default_vars set_datetime_vars compare_versions @@ -207,6 +208,15 @@ sub get_win_version () return $osmajor.'.'.$osminor; } +sub get_real_win_version () +{ + my ($osver, $osmajor, $osminor, $osbuild) = Win32::GetOSVersion(); + + $osmajor = 11 if $osmajor == 10 && $osbuild >= 20000; + + return $osmajor.'.'.$osminor; +} + sub get_default_vars (;$) { my ($config) = @_; @@ -229,15 +239,24 @@ sub get_default_vars (;$) my ($osver, $osmajor, $osminor, $osbuild) = Win32::GetOSVersion(); if ($osmajor == 5 && $osminor == 1) { $$vars{os} = 'xp'; + $$vars{osfixed} = 'xp'; } elsif ($osmajor == 6 && $osminor == 1) { $$vars{os} = '7'; + $$vars{osfixed} = '7'; } elsif ($osmajor == 10) { $$vars{os} = '10'; + if (int($osbuild) < 20000) { + $$vars{osfixed} = '10'; + } + else { + $$vars{osfixed} = '11'; + } } else { $$vars{os} = 'unknown'; + $$vars{osfixed} = 'unknown'; } $$vars{osversion} = $osmajor.'.'.$osminor; $$vars{osmajor} = $osmajor; diff --git a/pkgtool.pm b/pkgtool.pm index b5faf34..27873bc 100644 --- a/pkgtool.pm +++ b/pkgtool.pm @@ -2530,9 +2530,9 @@ sub scan_package_dirs ($$) return undef unless defined $filename && defined $dirs; $maxdepth = 1 unless defined $maxdepth; - print_log('global', INFO, 'Scanning package directories'); - my $vars = get_default_vars($config); + print_log('global', INFO, 'OS version: %s.%s.%s OS major: %s OS major fixed: %s', $$vars{osmajor}, $$vars{osminor}, $$vars{osbuild}, $$vars{os}, $$vars{osfixed}); + print_log('global', INFO, 'Scanning package directories'); foreach my $dir (@$dirs) { my $scandir = substitute_variables($vars, $dir, 1, $basedir, 'global'); my $error = scan_package_dir($config, $scandir, $maxdepth, $filename); @@ -2806,7 +2806,7 @@ sub get_patch_vars ($$$$$) $$vars{patchkbnum} = $kbnum; $$vars{patchnum} = $number; $$vars{patchextra} = $extra; - $$vars{patchprefix} = defined $$patchdef{prefix} ? $$patchdef{prefix} : 'Windows'.get_win_version().'-'; + $$vars{patchprefix} = defined $$patchdef{prefix} ? $$patchdef{prefix} : 'Windows'.get_real_win_version().'-'; $$vars{patchkbname} = defined $$patchdef{kbname} ? $$patchdef{kbname} : 'KB'; $$vars{patchedition} = defined $$patchdef{edition} ? $$patchdef{edition} : ''; $$vars{patcharch} = defined $$patchdef{arch} ? $$patchdef{arch} : '-'.$$vars{xarch};