 
	
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Add PowerShell build scripts, version.vcxproj
 Based on the sequence of commits to xenbus, add powershell scripts to
build the solution using the EWDK
version.vcxproj generates versioned files (version.h, xeniface.inf and
wmi.mof) using scripts/genfiles.ps1
Strips duplicated functionality from build.py toproduce consistant
builds between python and powershell.
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 build.ps1                                      |  86 ++++++++++++++++++++
 build.py                                       | 107 -------------------------
 include/version.tmpl                           |  22 +++++
 msbuild.ps1                                    |  92 +++++++++++++++++++++
 scripts/genfiles.ps1                           |  91 +++++++++++++++++++++
 src/xencons.inf                                |   4 +-
 symstore.ps1                                   |  36 +++++++++
 vs2015/package/package.vcxproj                 |  16 ++++
 vs2015/version/version.vcxproj                 |  19 +++++
 vs2015/xencons.sln                             |  31 +++++++
 vs2015/xencons/xencons.vcxproj                 |  16 ----
 vs2015/xencons_coinst/xencons_coinst.vcxproj   |   1 -
 vs2015/xencons_monitor/xencons_monitor.vcxproj |   1 -
 vs2015/xencons_tty/xencons_tty.vcxproj         |   1 -
 vs2017/package/package.vcxproj                 |  16 ++++
 vs2017/version/version.vcxproj                 |  16 ++++
 vs2017/xencons.sln                             |  31 +++++++
 vs2017/xencons/xencons.vcxproj                 |  16 ----
 vs2017/xencons_coinst/xencons_coinst.vcxproj   |   1 -
 vs2017/xencons_monitor/xencons_monitor.vcxproj |   1 -
 vs2017/xencons_tty/xencons_tty.vcxproj         |   1 -
 21 files changed, 458 insertions(+), 147 deletions(-)
 create mode 100644 build.ps1
 create mode 100644 include/version.tmpl
 create mode 100644 msbuild.ps1
 create mode 100644 scripts/genfiles.ps1
 create mode 100644 symstore.ps1
 create mode 100644 vs2015/version/version.vcxproj
 create mode 100644 vs2017/version/version.vcxproj
diff --git a/build.ps1 b/build.ps1
new file mode 100644
index 0000000..f154aee
--- /dev/null
+++ b/build.ps1
@@ -0,0 +1,86 @@
+#
+# Main build script
+#
+
+param(
+       [Parameter(Mandatory = $true)]
+       [string]$Type,
+       [switch]$Sdv
+)
+
+#
+# Script Body
+#
+
+Function Build {
+       param(
+               [string]$Arch,
+               [string]$Type
+       )
+
+       $visualstudioversion = $Env:VisualStudioVersion
+       $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
+       $configurationbase = @{ "14.0" = "Windows 8"; "15.0" = "Windows 8"; }
+
+       $params = @{
+               SolutionDir = $solutiondir[$visualstudioversion];
+               ConfigurationBase = $configurationbase[$visualstudioversion];
+               Arch = $Arch;
+               Type = $Type
+               }
+       & ".\msbuild.ps1" @params
+}
+
+Function SdvBuild {
+       $visualstudioversion = $Env:VisualStudioVersion
+       $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
+       $configurationbase = @{ "14.0" = "Windows 10"; "15.0" = "Windows 10"; }
+       $arch = "x64"
+
+       $params = @{
+               SolutionDir = $solutiondir[$visualstudioversion];
+               ConfigurationBase = $configurationbase[$visualstudioversion];
+               Arch = $arch;
+               Type = "sdv"
+               }
+       & ".\msbuild.ps1" @params
+}
+
+if ($Type -ne "free" -and $Type -ne "checked") {
+       Write-Host "Invalid Type"
+       Exit -1
+}
+
+if ([string]::IsNullOrEmpty($Env:VENDOR_NAME)) {
+       Set-Item -Path Env:VENDOR_NAME -Value 'Xen Project'
+}
+
+if ([string]::IsNullOrEmpty($Env:VENDOR_PREFIX)) {
+       Set-Item -Path Env:VENDOR_PREFIX -Value 'XP'
+}
+
+if ([string]::IsNullOrEmpty($Env:PRODUCT_NAME)) {
+       Set-Item -Path Env:PRODUCT_NAME -Value 'Xen'
+}
+
+if ([string]::IsNullOrEmpty($Env:BUILD_NUMBER)) {
+       if (Test-Path ".build_number") {
+               $BuildNum = Get-Content -Path ".build_number"
+               Set-Content -Path ".build_number" -Value ([int]$BuildNum + 1)
+       } else {
+               $BuildNum = '0'
+               Set-Content -Path ".build_number" -Value '1'
+       }
+       Set-Item -Path Env:BUILD_NUMBER -Value $BuildNum
+}
+
+Set-Item -Path Env:MAJOR_VERSION -Value '9'
+Set-Item -Path Env:MINOR_VERSION -Value '0'
+Set-Item -Path Env:MICRO_VERSION -Value '0'
+
+Build "x86" $Type
+Build "x64" $Type
+
+if ($Sdv) {
+       SdvBuild
+}
diff --git a/build.py b/build.py
index 2f29f60..4e89dc8 100644
--- a/build.py
+++ b/build.py
@@ -23,76 +23,6 @@ def next_build_number():
 
     return build_number
 
-
-def make_header():
-    now = datetime.datetime.now()
-
-    file = open('include\\version.h', 'w')
-
-    file.write('#define VENDOR_NAME_STR\t\t"' + os.environ['VENDOR_NAME'] + 
'"\n')
-    file.write('#define VENDOR_PREFIX_STR\t"' + os.environ['VENDOR_PREFIX'] + 
'"\n')
-
-    if 'VENDOR_DEVICE_ID' in os.environ.keys():
-        file.write('#define VENDOR_DEVICE_ID_STR\t"' + 
os.environ['VENDOR_DEVICE_ID'] + '"\n')
-
-    file.write('#define PRODUCT_NAME_STR\t"' + os.environ['PRODUCT_NAME'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define MAJOR_VERSION\t\t' + os.environ['MAJOR_VERSION'] + 
'\n')
-    file.write('#define MAJOR_VERSION_STR\t"' + os.environ['MAJOR_VERSION'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define MINOR_VERSION\t\t' + os.environ['MINOR_VERSION'] + 
'\n')
-    file.write('#define MINOR_VERSION_STR\t"' + os.environ['MINOR_VERSION'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define MICRO_VERSION\t\t' + os.environ['MICRO_VERSION'] + 
'\n')
-    file.write('#define MICRO_VERSION_STR\t"' + os.environ['MICRO_VERSION'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define BUILD_NUMBER\t\t' + os.environ['BUILD_NUMBER'] + '\n')
-    file.write('#define BUILD_NUMBER_STR\t"' + os.environ['BUILD_NUMBER'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define YEAR\t\t\t' + str(now.year) + '\n')
-    file.write('#define YEAR_STR\t\t"' + str(now.year) + '"\n')
-    file.write('\n')
-
-    file.write('#define MONTH\t\t\t' + str(now.month) + '\n')
-    file.write('#define MONTH_STR\t\t"' + str(now.month) + '"\n')
-    file.write('\n')
-
-    file.write('#define DAY\t\t\t' + str(now.day) + '\n')
-    file.write('#define DAY_STR\t\t\t"' + str(now.day) + '"\n')
-    file.write('\n')
-
-    file.close()
-
-
-def copy_inf(vs, name):
-    src = open('src\\%s.inf' % name, 'r')
-    dst = open('%s\\%s.inf' % (vs, name), 'w')
-
-    for line in src:
-        line = re.sub('@MAJOR_VERSION@', os.environ['MAJOR_VERSION'], line)
-        line = re.sub('@MINOR_VERSION@', os.environ['MINOR_VERSION'], line)
-        line = re.sub('@MICRO_VERSION@', os.environ['MICRO_VERSION'], line)
-        line = re.sub('@BUILD_NUMBER@', os.environ['BUILD_NUMBER'], line)
-        line = re.sub('@VENDOR_NAME@', os.environ['VENDOR_NAME'], line)
-        line = re.sub('@VENDOR_PREFIX@', os.environ['VENDOR_PREFIX'], line)
-        line = re.sub('@PRODUCT_NAME@', os.environ['PRODUCT_NAME'], line)
-
-        if re.search('@VENDOR_DEVICE_ID@', line):
-            if 'VENDOR_DEVICE_ID' not in os.environ.keys():
-                continue
-            line = re.sub('@VENDOR_DEVICE_ID@', 
os.environ['VENDOR_DEVICE_ID'], line)
-
-        dst.write(line)
-
-    dst.close()
-    src.close()
-
-
 def get_expired_symbols(name, age = 30):
     path = os.path.join(os.environ['SYMBOL_SERVER'], '000Admin\\history.txt')
 
@@ -213,29 +143,6 @@ def build_sln(name, release, arch, debug, vs):
 
     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
 
-def copy_package(name, release, arch, debug, vs):
-    configuration = get_configuration(release, debug)
-
-    if arch == 'x86':
-        platform = 'Win32'
-    elif arch == 'x64':
-        platform = 'x64'
-
-    pattern = '/'.join([vs, ''.join(configuration.split(' ')), platform, 
'package', '*'])
-    print('Copying package from %s' % pattern)
-
-    files = glob.glob(pattern)
-
-    dst = os.path.join(name, arch)
-
-    os.makedirs(dst, exist_ok=True)
-
-    for file in files:
-        new = shutil.copy(file, dst)
-        print(new)
-
-    print('')
-
 def remove_timestamps(path):
     try:
         os.unlink(path + '.orig')
@@ -409,18 +316,6 @@ def main():
         print(os.environ['GIT_REVISION'], file=revision)
         revision.close()
 
-    print("VENDOR_NAME\t\t'%s'" % os.environ['VENDOR_NAME'])
-    print("VENDOR_PREFIX\t\t'%s'" % os.environ['VENDOR_PREFIX'])
-    print("PRODUCT_NAME\t\t'%s'" % os.environ['PRODUCT_NAME'])
-    print("MAJOR_VERSION\t\t%s" % os.environ['MAJOR_VERSION'])
-    print("MINOR_VERSION\t\t%s" % os.environ['MINOR_VERSION'])
-    print("MICRO_VERSION\t\t%s" % os.environ['MICRO_VERSION'])
-    print("BUILD_NUMBER\t\t%s" % os.environ['BUILD_NUMBER'])
-    print()
-
-    make_header()
-    copy_inf(vs, driver)
-
     symstore_del(driver, 30)
 
     release = { 'vs2015':'Windows 8',
@@ -429,10 +324,8 @@ def main():
     shutil.rmtree(driver, ignore_errors=True)
 
     build_sln(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
-    copy_package(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
 
     build_sln(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
-    copy_package(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
 
     symstore_add(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
     symstore_add(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
diff --git a/include/version.tmpl b/include/version.tmpl
new file mode 100644
index 0000000..d6f9a48
--- /dev/null
+++ b/include/version.tmpl
@@ -0,0 +1,22 @@
+#define VENDOR_NAME_STR      "@VENDOR_NAME@"
+#define PRODUCT_NAME_STR     "@PRODUCT_NAME@"
+#define VENDOR_PREFIX_STR    "@VENDOR_PREFIX@"
+#define VENDOR_DEVICE_ID_STR "@VENDOR_DEVICE_ID@"
+
+#define MAJOR_VERSION_STR    "@MAJOR_VERSION@"
+#define MINOR_VERSION_STR    "@MINOR_VERSION@"
+#define MICRO_VERSION_STR    "@MICRO_VERSION@"
+#define BUILD_NUMBER_STR     "@BUILD_NUMBER@"
+
+#define YEAR_STR             "@YEAR@"
+#define MONTH_STR            "@MONTH@"
+#define DAY_STR              "@DAY@"
+
+#define MAJOR_VERSION        @MAJOR_VERSION@
+#define MINOR_VERSION        @MINOR_VERSION@
+#define MICRO_VERSION        @MICRO_VERSION@
+#define BUILD_NUMBER         @BUILD_NUMBER@
+
+#define YEAR                 @YEAR@
+#define MONTH                @MONTH@
+#define DAY                  @DAY@
diff --git a/msbuild.ps1 b/msbuild.ps1
new file mode 100644
index 0000000..aeac380
--- /dev/null
+++ b/msbuild.ps1
@@ -0,0 +1,92 @@
+#
+# Wrapper script for MSBuild
+#
+param(
+       [string]$SolutionDir = "vs2017",
+       [string]$ConfigurationBase = "Windows 10",
+       [Parameter(Mandatory = $true)]
+       [string]$Arch,
+       [Parameter(Mandatory = $true)]
+       [string]$Type
+)
+
+Function Run-MSBuild {
+       param(
+               [string]$SolutionPath,
+               [string]$Name,
+               [string]$Configuration,
+               [string]$Platform,
+               [string]$Target = "Build",
+               [string]$Inputs = ""
+       )
+
+       $c = "msbuild.exe"
+       $c += " /m:4"
+       $c += [string]::Format(" /p:Configuration=""{0}""", $Configuration)
+       $c += [string]::Format(" /p:Platform=""{0}""", $Platform)
+       $c += [string]::Format(" /t:""{0}"" ", $Target)
+       if ($Inputs) {
+               $c += [string]::Format(" /p:Inputs=""{0}"" ", $Inputs)
+       }
+       $c += Join-Path -Path $SolutionPath -ChildPath $Name
+
+       Invoke-Expression $c
+}
+
+Function Run-MSBuildSDV {
+       param(
+               [string]$SolutionPath,
+               [string]$Name,
+               [string]$Configuration,
+               [string]$Platform
+       )
+
+       $basepath = Get-Location
+       $versionpath = Join-Path -Path $SolutionPath -ChildPath "version"
+       $projpath = Join-Path -Path $SolutionPath -ChildPath $Name
+       Set-Location $projpath
+
+       $project = [string]::Format("{0}.vcxproj", $Name)
+       Run-MSBuild $versionpath "version.vcxproj" $Configuration $Platform 
"Build"
+       Run-MSBuild $projpath $project $Configuration $Platform "Build"
+       Run-MSBuild $projpath $project $Configuration $Platform "sdv" "/clean"
+       Run-MSBuild $projpath $project $Configuration $Platform "sdv" 
"/check:default.sdv /debug"
+       Run-MSBuild $projpath $project $Configuration $Platform "dvl"
+
+       $refine = Join-Path -Path $projpath -ChildPath "refine.sdv"
+       if (Test-Path -Path $refine -PathType Leaf) {
+               Run-MSBuild $projpath $project $Configuration $Platform "sdv" 
"/refine"
+       }
+
+       Copy-Item "*DVL*" -Destination $SolutionPath
+
+       Set-Location $basepath
+}
+
+#
+# Script Body
+#
+
+$configuration = @{ "free" = "$ConfigurationBase Release"; "checked" = 
"$ConfigurationBase Debug"; "sdv" = "$ConfigurationBase Release"; }
+$platform = @{ "x86" = "Win32"; "x64" = "x64" }
+$solutionpath = Resolve-Path $SolutionDir
+
+Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
+
+if ($Type -eq "free") {
+       Run-MSBuild $solutionpath "xencons.sln" $configuration["free"] 
$platform[$Arch]
+}
+elseif ($Type -eq "checked") {
+       Run-MSBuild $solutionpath "xencons.sln" $configuration["checked"] 
$platform[$Arch]
+}
+elseif ($Type -eq "sdv") {
+       $archivepath = "xencons"
+
+       if (-Not (Test-Path -Path $archivepath)) {
+               New-Item -Name $archivepath -ItemType Directory | Out-Null
+       }
+
+       Run-MSBuildSDV $solutionpath "xencons" $configuration["sdv"] 
$platform[$Arch]
+
+       Copy-Item -Path (Join-Path -Path $SolutionPath -ChildPath "*DVL*") 
-Destination $archivepath
+}
diff --git a/scripts/genfiles.ps1 b/scripts/genfiles.ps1
new file mode 100644
index 0000000..ddfca48
--- /dev/null
+++ b/scripts/genfiles.ps1
@@ -0,0 +1,91 @@
+#
+# Generate version.h and xenbus.inf
+#
+param(
+       [string]$Platform = "Win32",
+       [string]$SolutionDir = "vs2017",
+       [string]$IncludeDir = "include",
+       [string]$SourceDir = "src"
+)
+
+# Copy $InFileName -> $OutFileName replacing $Token$_.Key$Token with $_.Value 
from
+# $Replacements
+Function Copy-FileWithReplacements {
+       param(
+               [Parameter(Mandatory = $true)]
+               [string]$InFileName,
+               [Parameter(Mandatory = $true)]
+               [string]$OutFileName,
+               [hashtable]$Replacements,
+               [string]$Token = "@"
+       )
+
+       Write-Host "Copy-FileWithReplacements"
+       Write-Host $InFileName" -> "$OutFileName
+
+       (Get-Content $InFileName) |
+       ForEach-Object {
+               $line = $_
+               $Replacements.GetEnumerator() | ForEach-Object {
+                       $key = [string]::Format("{0}{1}{2}", $Token, $_.Name, 
$Token)
+                       if (([string]::IsNullOrEmpty($_.Value)) -and 
($line.Contains($key))) {
+                               Write-Host "Skipping Line Containing " $_.Name
+                               $line = $null
+                       }
+                       $line = $line -replace $key, $_.Value
+               }
+               $line
+       } |
+       Set-Content $OutFileName
+}
+
+#
+# Script Body
+#
+$TheYear = [int](Get-Date -UFormat "%Y")
+$TheMonth = [int](Get-Date -UFormat "%m")
+$TheDay = [int](Get-Date -UFormat "%d")
+$InfArch = @{ "Win32" = "x86"; "x64" = "amd64" }
+$InfDate = Get-Date -UFormat "%m/%d/%Y"
+
+# if GitRevision is $null, GIT_REVISION will be excluded from the 
Copy-FileWithReplacements
+$GitRevision = & "git.exe" "rev-list" "--max-count=1" "HEAD"
+if ($GitRevision) {
+       Set-Content -Path ".revision" -Value $GitRevision
+}
+
+# [ordered] makes output easier to parse by humans
+$Replacements = [ordered]@{
+       # values determined from the build environment
+       'VENDOR_NAME' = $Env:VENDOR_NAME;
+       'PRODUCT_NAME' = $Env:PRODUCT_NAME;
+       'VENDOR_DEVICE_ID' = $Env:VENDOR_DEVICE_ID;
+       'VENDOR_PREFIX' = $Env:VENDOR_PREFIX;
+
+       'MAJOR_VERSION' = $Env:MAJOR_VERSION;
+       'MINOR_VERSION' = $Env:MINOR_VERSION;
+       'MICRO_VERSION' = $Env:MICRO_VERSION;
+       'BUILD_NUMBER' = $Env:BUILD_NUMBER;
+
+       # generated values
+       'GIT_REVISION' = $GitRevision;
+
+       'INF_DATE' = $InfDate;
+       'INF_ARCH' = $InfArch[$Platform];
+       'YEAR' = $TheYear;
+       'MONTH' = $TheMonth;
+       'DAY' = $TheDay
+}
+
+$Replacements | Out-String | Write-Host
+
+$includepath = Resolve-Path $IncludeDir
+$src = Join-Path -Path $includepath -ChildPath "version.tmpl"
+$dst = Join-Path -Path $includepath -ChildPath "version.h"
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
+
+$sourcepath = Resolve-Path $SourceDir
+$solutionpath = Resolve-Path $SolutionDir
+$src = Join-Path -Path $sourcepath -ChildPath "xencons.inf"
+$dst = Join-Path -Path $solutionpath -ChildPath "xencons.inf"
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
diff --git a/src/xencons.inf b/src/xencons.inf
index 37bc628..5f1c03d 100644
--- a/src/xencons.inf
+++ b/src/xencons.inf
@@ -65,9 +65,9 @@ 
xencons_monitor_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.d
 
xencons_tty_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.exe,xencons_tty.exe
 
 [Manufacturer]
-%Vendor%=Inst,NT$ARCH$
+%Vendor%=Inst,NT@INF_ARCH@
 
-[Inst.NT$ARCH$]
+[Inst.NT@INF_ARCH@]
 ; DisplayName          Section         DeviceID
 ; -----------          -------         --------
 
diff --git a/symstore.ps1 b/symstore.ps1
new file mode 100644
index 0000000..d24d2ac
--- /dev/null
+++ b/symstore.ps1
@@ -0,0 +1,36 @@
+#
+# Store symbols for archived build
+#
+param(
+       [string]$SymbolServer = "c:\symbols",
+       [Parameter(Mandatory = $true)]
+       [string]$Arch
+)
+
+Function Add-Symbols {
+       param(
+               [string]$DriverName,
+               [string]$ArchivePath,
+               [string]$SymbolServer,
+               [string]$Arch
+       )
+
+       Write-Host Store symbols from (Resolve-Path $ArchivePath)
+
+       $cwd = Get-Location
+       Set-Location $ArchivePath
+
+       $path = Join-Path -Path ([string]::Format("{0}Debuggers", 
$env:WDKContentRoot)) -ChildPath $Arch
+       $symstore = Join-Path -Path $path -ChildPath "symstore.exe"
+
+       $inffile = [string]::Format("{0}.inf", $DriverName)
+       $Version = (Get-Content -Path $inffile | Select-String 
"DriverVer").Line.Split(',')[1]
+
+       Get-ChildItem -Path "." -Include "*.pdb" -Name | Write-Host
+       & $symstore "add" "/s" $SymbolServer "/r" "/f" "*.pdb" "/t" $DriverName 
"/v" $Version
+
+       Set-Location $cwd
+}
+
+$archivepath = Join-Path -Path (Resolve-Path "xencons") -ChildPath $Arch
+Add-Symbols "xencons" $archivepath $SymbolServer $Arch
diff --git a/vs2015/package/package.vcxproj b/vs2015/package/package.vcxproj
index d83629d..f204487 100644
--- a/vs2015/package/package.vcxproj
+++ b/vs2015/package/package.vcxproj
@@ -32,6 +32,12 @@
     <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
     <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='Win32'">
+    <ArchiveDir>..\..\$(SolutionName)\x86</ArchiveDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='x64'">
+    <ArchiveDir>..\..\$(SolutionName)\x64</ArchiveDir>
+  </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\xencons\xencons.vcxproj">
       <Project>{4674B8C2-876B-4F2A-AB71-BAC968A9B529}</Project>
@@ -45,6 +51,7 @@
     <ProjectReference Include="..\xencons_tty\xencons_tty.vcxproj">
       <Project>{79D98F83-5A2F-4DE6-B62C-530D70B88C3F}</Project>
     </ProjectReference>
+    <FilesToPackage Include="..\xencons.inf" />
   </ItemGroup>
   <ItemGroup Condition="Exists('$(DPINST_REDIST)')">
     <FilesToPackage Include="$(DPINST_REDIST)\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
@@ -53,4 +60,13 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
+  <ItemGroup>
+    <PackageFiles Include="$(OutDir)\$(ProjectName)\*" />
+  </ItemGroup>
+  <Target Name="Archive" AfterTargets="TestSign">
+    <Copy
+       SourceFiles="@(PackageFiles)"
+       
DestinationFiles="@(PackageFiles->'$(ArchiveDir)\%(FileName)%(Extension)')"
+    />
+  </Target>
 </Project>
diff --git a/vs2015/version/version.vcxproj b/vs2015/version/version.vcxproj
new file mode 100644
index 0000000..e3c95c4
--- /dev/null
+++ b/vs2015/version/version.vcxproj
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <Import Project="..\targets.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{65FA97EA-A569-4FC1-BFE7-D68E109143F7}</ProjectGuid>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Script>..\..\scripts\genfiles.ps1</Script>
+    <SolutionDir>..</SolutionDir>
+    <IncludeDir>..\..\include</IncludeDir>
+    <SourceDir>..\..\src</SourceDir>
+  </PropertyGroup>
+  <Target Name="GetNativeManifest"></Target>
+  <Target Name="Build">
+    <Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile 
-NonInteractive -File $(Script) $(Platform) $(SolutionDir) $(IncludeDir) 
$(SourceDir)" />
+  </Target>
+  <Target Name="GetCopyToOutputDirectoryItems"></Target>
+</Project>
diff --git a/vs2015/xencons.sln b/vs2015/xencons.sln
index 7f55d78..66259fd 100644
--- a/vs2015/xencons.sln
+++ b/vs2015/xencons.sln
@@ -2,16 +2,31 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 14
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", 
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons", 
"xencons\xencons.vcxproj", "{4674B8C2-876B-4F2A-AB71-BAC968A9B529}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons_coinst", 
"xencons_coinst\xencons_coinst.vcxproj", 
"{6CC9B8DD-A5AE-427D-8157-E91D21DD7E19}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons_monitor", 
"xencons_monitor\xencons_monitor.vcxproj", 
"{8991F0A5-408B-43E0-88CC-9550D4AAE616}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons_tty", 
"xencons_tty\xencons_tty.vcxproj", "{79D98F83-5A2F-4DE6-B62C-530D70B88C3F}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", 
"package\package.vcxproj", "{8B5B8F4B-7FF3-4B64-AC4A-5246026217E7}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529} = 
{4674B8C2-876B-4F2A-AB71-BAC968A9B529}
                {6CC9B8DD-A5AE-427D-8157-E91D21DD7E19} = 
{6CC9B8DD-A5AE-427D-8157-E91D21DD7E19}
                {8991F0A5-408B-43E0-88CC-9550D4AAE616} = 
{8991F0A5-408B-43E0-88CC-9550D4AAE616}
@@ -30,6 +45,22 @@ Global
                Windows 8 Release|x64 = Windows 8 Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529}.Windows 10 
Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
diff --git a/vs2015/xencons/xencons.vcxproj b/vs2015/xencons/xencons.vcxproj
index a730afc..3093a13 100644
--- a/vs2015/xencons/xencons.vcxproj
+++ b/vs2015/xencons/xencons.vcxproj
@@ -35,33 +35,20 @@
       
<AdditionalDependencies>$(DDK_LIB_PATH)/Rtlver.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;$(DDK_LIB_PATH)/procgrp.lib;$(DDK_LIB_PATH)/wdmsec.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
-    <Inf>
-      <SpecifyArchitecture>true</SpecifyArchitecture>
-      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-      
<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-      <EnableVerbose>true</EnableVerbose>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
     <ClCompile>
       
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>x86</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
     <ClCompile>
       
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>amd64</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="../../src/xencons/driver.c" />
@@ -77,9 +64,6 @@
   <ItemGroup>
     <ResourceCompile Include="..\..\src\xencons\xencons.rc" />
   </ItemGroup>
-  <ItemGroup>
-    <Inf Include="..\xencons.inf" />
-  </ItemGroup>
   <ItemGroup>
     <None Include="..\package\package.vcxproj" />
   </ItemGroup>
diff --git a/vs2015/xencons_coinst/xencons_coinst.vcxproj 
b/vs2015/xencons_coinst/xencons_coinst.vcxproj
index adf4ddd..1b6ae9a 100644
--- a/vs2015/xencons_coinst/xencons_coinst.vcxproj
+++ b/vs2015/xencons_coinst/xencons_coinst.vcxproj
@@ -48,7 +48,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\coinst\coinst.c" />
diff --git a/vs2015/xencons_monitor/xencons_monitor.vcxproj 
b/vs2015/xencons_monitor/xencons_monitor.vcxproj
index 7b6fe20..c1c8f66 100644
--- a/vs2015/xencons_monitor/xencons_monitor.vcxproj
+++ b/vs2015/xencons_monitor/xencons_monitor.vcxproj
@@ -62,7 +62,6 @@
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
     <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <MessageCompile Include="..\..\src\monitor\messages.mc" />
diff --git a/vs2015/xencons_tty/xencons_tty.vcxproj 
b/vs2015/xencons_tty/xencons_tty.vcxproj
index 135126c..2b42662 100644
--- a/vs2015/xencons_tty/xencons_tty.vcxproj
+++ b/vs2015/xencons_tty/xencons_tty.vcxproj
@@ -48,7 +48,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\tty\tty.c" />
diff --git a/vs2017/package/package.vcxproj b/vs2017/package/package.vcxproj
index e6ffc1f..2248fe0 100644
--- a/vs2017/package/package.vcxproj
+++ b/vs2017/package/package.vcxproj
@@ -32,6 +32,12 @@
     <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
     <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='Win32'">
+    <ArchiveDir>..\..\$(SolutionName)\x86</ArchiveDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='x64'">
+    <ArchiveDir>..\..\$(SolutionName)\x64</ArchiveDir>
+  </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\xencons\xencons.vcxproj">
       <Project>{4674B8C2-876B-4F2A-AB71-BAC968A9B529}</Project>
@@ -45,6 +51,7 @@
     <ProjectReference Include="..\xencons_tty\xencons_tty.vcxproj">
       <Project>{79D98F83-5A2F-4DE6-B62C-530D70B88C3F}</Project>
     </ProjectReference>
+    <FilesToPackage Include="..\xencons.inf" />
   </ItemGroup>
   <ItemGroup Condition="Exists('$(DPINST_REDIST)')">
     <FilesToPackage Include="$(DPINST_REDIST)\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
@@ -53,4 +60,13 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
+  <ItemGroup>
+    <PackageFiles Include="$(OutDir)\$(ProjectName)\*" />
+  </ItemGroup>
+  <Target Name="Archive" AfterTargets="TestSign">
+    <Copy
+       SourceFiles="@(PackageFiles)"
+       
DestinationFiles="@(PackageFiles->'$(ArchiveDir)\%(FileName)%(Extension)')"
+    />
+  </Target>
 </Project>
diff --git a/vs2017/version/version.vcxproj b/vs2017/version/version.vcxproj
new file mode 100644
index 0000000..9d149d0
--- /dev/null
+++ b/vs2017/version/version.vcxproj
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{65FA97EA-A569-4FC1-BFE7-D68E109143F7}</ProjectGuid>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Script>..\..\scripts\genfiles.ps1</Script>
+    <SolutionDir>..</SolutionDir>
+    <IncludeDir>..\..\include</IncludeDir>
+    <SourceDir>..\..\src</SourceDir>
+  </PropertyGroup>
+  <Target Name="Build">
+    <Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile 
-NonInteractive -File $(Script) $(Platform) $(SolutionDir) $(IncludeDir) 
$(SourceDir)" />
+  </Target>
+</Project>
diff --git a/vs2017/xencons.sln b/vs2017/xencons.sln
index 95702da..89d95e3 100644
--- a/vs2017/xencons.sln
+++ b/vs2017/xencons.sln
@@ -1,14 +1,29 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", 
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons", 
"xencons\xencons.vcxproj", "{4674B8C2-876B-4F2A-AB71-BAC968A9B529}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons_coinst", 
"xencons_coinst\xencons_coinst.vcxproj", 
"{6CC9B8DD-A5AE-427D-8157-E91D21DD7E19}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons_monitor", 
"xencons_monitor\xencons_monitor.vcxproj", 
"{8991F0A5-408B-43E0-88CC-9550D4AAE616}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencons_tty", 
"xencons_tty\xencons_tty.vcxproj", "{79D98F83-5A2F-4DE6-B62C-530D70B88C3F}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", 
"package\package.vcxproj", "{8B5B8F4B-7FF3-4B64-AC4A-5246026217E7}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529} = 
{4674B8C2-876B-4F2A-AB71-BAC968A9B529}
                {6CC9B8DD-A5AE-427D-8157-E91D21DD7E19} = 
{6CC9B8DD-A5AE-427D-8157-E91D21DD7E19}
                {8991F0A5-408B-43E0-88CC-9550D4AAE616} = 
{8991F0A5-408B-43E0-88CC-9550D4AAE616}
@@ -27,6 +42,22 @@ Global
                Windows 8 Release|x64 = Windows 8 Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
                {4674B8C2-876B-4F2A-AB71-BAC968A9B529}.Windows 10 
Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
diff --git a/vs2017/xencons/xencons.vcxproj b/vs2017/xencons/xencons.vcxproj
index b9292e9..2b1fdec 100644
--- a/vs2017/xencons/xencons.vcxproj
+++ b/vs2017/xencons/xencons.vcxproj
@@ -36,28 +36,16 @@
       
<AdditionalDependencies>$(DDK_LIB_PATH)/Rtlver.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/ksecdd.lib;$(DDK_LIB_PATH)/procgrp.lib;$(DDK_LIB_PATH)/wdmsec.lib;%(AdditionalDependencies)</AdditionalDependencies>
       
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
-    <Inf>
-      <SpecifyArchitecture>true</SpecifyArchitecture>
-      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-      
<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-      <EnableVerbose>true</EnableVerbose>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
     <ClCompile>
       
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>x86</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
     <ClCompile>
       
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>amd64</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)'=='Windows 8 Release'">
     <ClCompile>
@@ -69,7 +57,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="../../src/xencons/driver.c" />
@@ -85,9 +72,6 @@
   <ItemGroup>
     <ResourceCompile Include="..\..\src\xencons\xencons.rc" />
   </ItemGroup>
-  <ItemGroup>
-    <Inf Include="..\xencons.inf" />
-  </ItemGroup>
   <ItemGroup>
     <None Include="..\package\package.vcxproj" />
   </ItemGroup>
diff --git a/vs2017/xencons_coinst/xencons_coinst.vcxproj 
b/vs2017/xencons_coinst/xencons_coinst.vcxproj
index 006ef20..27f54c5 100644
--- a/vs2017/xencons_coinst/xencons_coinst.vcxproj
+++ b/vs2017/xencons_coinst/xencons_coinst.vcxproj
@@ -48,7 +48,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\coinst\coinst.c" />
diff --git a/vs2017/xencons_monitor/xencons_monitor.vcxproj 
b/vs2017/xencons_monitor/xencons_monitor.vcxproj
index 1650dfd..c867fa8 100644
--- a/vs2017/xencons_monitor/xencons_monitor.vcxproj
+++ b/vs2017/xencons_monitor/xencons_monitor.vcxproj
@@ -62,7 +62,6 @@
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
     <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <MessageCompile Include="..\..\src\monitor\messages.mc" />
diff --git a/vs2017/xencons_tty/xencons_tty.vcxproj 
b/vs2017/xencons_tty/xencons_tty.vcxproj
index 623595c..16a04ff 100644
--- a/vs2017/xencons_tty/xencons_tty.vcxproj
+++ b/vs2017/xencons_tty/xencons_tty.vcxproj
@@ -48,7 +48,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\tty\tty.c" />
-- 
2.16.2.windows.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel
 | 
|  | Lists.xenproject.org is hosted with RackSpace, monitoring our |