project: add support for intermediate versioning
While the Wintun driver is typically released only at <major>.<minor> milestones, the wintun.dll did see some intermediate releases. To make MSI logic correctly decide to upgrade local wintun.dll file, the version inscribed in wintun.dll file resources should increment in those intermediate releases. MSI ignores file timestamps. One could use REINSTALLMODE=emus Installer property to force copying wintun.dll when its version doesn't change. But REINSTALLMODE applies to all files in the MSI session and would be an additional requirement when authoring MSI packages with wintun.dll. Bumping only the final ZIP filename version is not sufficient. Therefore, a <major>.<minor> or <major>.<minor>.<build> versioning is introduced. Furthermore, we no longer distinguish between WintunVersion and WintunVersionStr. All our releases used strictly numeric <major>.<minor> notation, making WintunVersion and WintunVersionStr always the same. When the driver didn't change, just bump the version in wintun.proj and run `msbuild wintun.proj /t:Zip` to rebuild the wintun.dll and make the new ZIP file. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
		
							parent
							
								
									1ccd623e94
								
							
						
					
					
						commit
						a6fa9c1b67
					
				@ -27,8 +27,8 @@ wintun-arm64.dll RCDATA "arm64\\wintun.dll"
 | 
				
			|||||||
#define EXPAND(x) STRINGIZE(x)
 | 
					#define EXPAND(x) STRINGIZE(x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VS_VERSION_INFO VERSIONINFO
 | 
					VS_VERSION_INFO VERSIONINFO
 | 
				
			||||||
FILEVERSION    WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, 0, 0
 | 
					FILEVERSION    WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, WINTUN_VERSION_REL, 0
 | 
				
			||||||
PRODUCTVERSION WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, 0, 0
 | 
					PRODUCTVERSION WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, WINTUN_VERSION_REL, 0
 | 
				
			||||||
FILEOS         VOS_NT_WINDOWS32
 | 
					FILEOS         VOS_NT_WINDOWS32
 | 
				
			||||||
FILETYPE       VFT_DLL
 | 
					FILETYPE       VFT_DLL
 | 
				
			||||||
FILESUBTYPE    VFT2_UNKNOWN
 | 
					FILESUBTYPE    VFT2_UNKNOWN
 | 
				
			||||||
@ -39,12 +39,12 @@ BEGIN
 | 
				
			|||||||
    BEGIN
 | 
					    BEGIN
 | 
				
			||||||
      VALUE "CompanyName", "WireGuard LLC"
 | 
					      VALUE "CompanyName", "WireGuard LLC"
 | 
				
			||||||
      VALUE "FileDescription", "Wintun API Library"
 | 
					      VALUE "FileDescription", "Wintun API Library"
 | 
				
			||||||
      VALUE "FileVersion", EXPAND(WINTUN_VERSION_STR)
 | 
					      VALUE "FileVersion", EXPAND(WINTUN_VERSION)
 | 
				
			||||||
      VALUE "InternalName", "wintun.dll"
 | 
					      VALUE "InternalName", "wintun.dll"
 | 
				
			||||||
      VALUE "LegalCopyright", "Copyright \xa9 2018-2021 WireGuard LLC. All Rights Reserved."
 | 
					      VALUE "LegalCopyright", "Copyright \xa9 2018-2021 WireGuard LLC. All Rights Reserved."
 | 
				
			||||||
      VALUE "OriginalFilename", "wintun.dll"
 | 
					      VALUE "OriginalFilename", "wintun.dll"
 | 
				
			||||||
      VALUE "ProductName", "Wintun Driver"
 | 
					      VALUE "ProductName", "Wintun Driver"
 | 
				
			||||||
      VALUE "ProductVersion", EXPAND(WINTUN_VERSION_STR)
 | 
					      VALUE "ProductVersion", EXPAND(WINTUN_VERSION)
 | 
				
			||||||
      VALUE "Comments", "https://www.wintun.net/"
 | 
					      VALUE "Comments", "https://www.wintun.net/"
 | 
				
			||||||
    END
 | 
					    END
 | 
				
			||||||
  END
 | 
					  END
 | 
				
			||||||
 | 
				
			|||||||
@ -10,8 +10,8 @@
 | 
				
			|||||||
#define EXPAND(x) STRINGIZE(x)
 | 
					#define EXPAND(x) STRINGIZE(x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VS_VERSION_INFO VERSIONINFO
 | 
					VS_VERSION_INFO VERSIONINFO
 | 
				
			||||||
FILEVERSION    WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, 0, 0
 | 
					FILEVERSION    WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, WINTUN_VERSION_REL, 0
 | 
				
			||||||
PRODUCTVERSION WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, 0, 0
 | 
					PRODUCTVERSION WINTUN_VERSION_MAJ, WINTUN_VERSION_MIN, WINTUN_VERSION_REL, 0
 | 
				
			||||||
FILEOS         VOS_NT_WINDOWS32
 | 
					FILEOS         VOS_NT_WINDOWS32
 | 
				
			||||||
FILETYPE       VFT_DRV
 | 
					FILETYPE       VFT_DRV
 | 
				
			||||||
FILESUBTYPE    VFT2_DRV_SYSTEM
 | 
					FILESUBTYPE    VFT2_DRV_SYSTEM
 | 
				
			||||||
@ -22,12 +22,12 @@ BEGIN
 | 
				
			|||||||
    BEGIN
 | 
					    BEGIN
 | 
				
			||||||
      VALUE "CompanyName", "WireGuard LLC"
 | 
					      VALUE "CompanyName", "WireGuard LLC"
 | 
				
			||||||
      VALUE "FileDescription", "Wintun Driver"
 | 
					      VALUE "FileDescription", "Wintun Driver"
 | 
				
			||||||
      VALUE "FileVersion", EXPAND(WINTUN_VERSION_STR)
 | 
					      VALUE "FileVersion", EXPAND(WINTUN_VERSION)
 | 
				
			||||||
      VALUE "InternalName", "wintun.sys"
 | 
					      VALUE "InternalName", "wintun.sys"
 | 
				
			||||||
      VALUE "LegalCopyright", "Copyright \xa9 2018-2021 WireGuard LLC. All Rights Reserved."
 | 
					      VALUE "LegalCopyright", "Copyright \xa9 2018-2021 WireGuard LLC. All Rights Reserved."
 | 
				
			||||||
      VALUE "OriginalFilename", "wintun.sys"
 | 
					      VALUE "OriginalFilename", "wintun.sys"
 | 
				
			||||||
      VALUE "ProductName", "Wintun Driver"
 | 
					      VALUE "ProductName", "Wintun Driver"
 | 
				
			||||||
      VALUE "ProductVersion", EXPAND(WINTUN_VERSION_STR)
 | 
					      VALUE "ProductVersion", EXPAND(WINTUN_VERSION)
 | 
				
			||||||
      VALUE "Comments", "https://www.wintun.net/"
 | 
					      VALUE "Comments", "https://www.wintun.net/"
 | 
				
			||||||
    END
 | 
					    END
 | 
				
			||||||
  END
 | 
					  END
 | 
				
			||||||
 | 
				
			|||||||
@ -100,7 +100,7 @@
 | 
				
			|||||||
    Zip Building
 | 
					    Zip Building
 | 
				
			||||||
  -->
 | 
					  -->
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <ZipTargetPath>dist\wintun-$(WintunVersionStr).zip</ZipTargetPath>
 | 
					    <ZipTargetPath>dist\wintun-$(WintunVersion).zip</ZipTargetPath>
 | 
				
			||||||
    <ZipIntDir>dist\.tmp\</ZipIntDir>
 | 
					    <ZipIntDir>dist\.tmp\</ZipIntDir>
 | 
				
			||||||
  </PropertyGroup>
 | 
					  </PropertyGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										11
									
								
								wintun.props
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								wintun.props
									
									
									
									
									
								
							@ -8,8 +8,11 @@
 | 
				
			|||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <WintunVersionMaj>0</WintunVersionMaj>
 | 
					    <WintunVersionMaj>0</WintunVersionMaj>
 | 
				
			||||||
    <WintunVersionMin>10</WintunVersionMin>
 | 
					    <WintunVersionMin>10</WintunVersionMin>
 | 
				
			||||||
    <WintunVersionStr>0.10</WintunVersionStr><!-- Used in filenames and ProductVersion resource string, may contain strings. -->
 | 
					    <WintunVersionRel>2</WintunVersionRel>
 | 
				
			||||||
    <WintunVersion>$(WintunVersionMaj).$(WintunVersionMin)</WintunVersion><!-- Used for versioning, must be n.n[.n[.n]]. -->
 | 
					
 | 
				
			||||||
 | 
					    <!-- Used for versioning, must be n.n[.n[.n]]. -->
 | 
				
			||||||
 | 
					    <WintunVersion>$(WintunVersionMaj).$(WintunVersionMin)</WintunVersion>
 | 
				
			||||||
 | 
					    <WintunVersion Condition="'$(WintunVersionRel)'!='0'">$(WintunVersion).$(WintunVersionRel)</WintunVersion>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- .vcxproj are using different platform names. -->
 | 
					    <!-- .vcxproj are using different platform names. -->
 | 
				
			||||||
    <WintunPlatform Condition="'$(Platform)'=='ARM'">arm</WintunPlatform>
 | 
					    <WintunPlatform Condition="'$(Platform)'=='ARM'">arm</WintunPlatform>
 | 
				
			||||||
@ -19,11 +22,11 @@
 | 
				
			|||||||
  </PropertyGroup>
 | 
					  </PropertyGroup>
 | 
				
			||||||
  <ItemDefinitionGroup>
 | 
					  <ItemDefinitionGroup>
 | 
				
			||||||
    <ClCompile>
 | 
					    <ClCompile>
 | 
				
			||||||
      <PreprocessorDefinitions>WINTUN_VERSION_MAJ=$(WintunVersionMaj);WINTUN_VERSION_MIN=$(WintunVersionMin);WINTUN_VERSION_STR="$(WintunVersionStr)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
					      <PreprocessorDefinitions>WINTUN_VERSION_MAJ=$(WintunVersionMaj);WINTUN_VERSION_MIN=$(WintunVersionMin);WINTUN_VERSION_REL=$(WintunVersionRel);WINTUN_VERSION="$(WintunVersion)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
				
			||||||
      <WarningLevel>Level4</WarningLevel>
 | 
					      <WarningLevel>Level4</WarningLevel>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <ResourceCompile>
 | 
					    <ResourceCompile>
 | 
				
			||||||
      <PreprocessorDefinitions>WINTUN_VERSION_MAJ=$(WintunVersionMaj);WINTUN_VERSION_MIN=$(WintunVersionMin);WINTUN_VERSION_STR="$(WintunVersionStr)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
					      <PreprocessorDefinitions>WINTUN_VERSION_MAJ=$(WintunVersionMaj);WINTUN_VERSION_MIN=$(WintunVersionMin);WINTUN_VERSION_REL=$(WintunVersionRel);WINTUN_VERSION="$(WintunVersion)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
				
			||||||
    </ResourceCompile>
 | 
					    </ResourceCompile>
 | 
				
			||||||
  </ItemDefinitionGroup>
 | 
					  </ItemDefinitionGroup>
 | 
				
			||||||
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
 | 
					  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user