diff options
author | Rob Mensching <rob@firegiant.com> | 2022-06-01 13:42:18 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-06-29 23:01:15 -0700 |
commit | 5ea1c1b91ec31461fa26d4104b7113fc326cdbcb (patch) | |
tree | 1f2e49cf00b445b602ab8a8cb89f63506c234300 | |
parent | a73e1caa90c0b7230b569aea2739991124d36360 (diff) | |
download | wix-5ea1c1b91ec31461fa26d4104b7113fc326cdbcb.tar.gz wix-5ea1c1b91ec31461fa26d4104b7113fc326cdbcb.tar.bz2 wix-5ea1c1b91ec31461fa26d4104b7113fc326cdbcb.zip |
Remote payloads using certificate verification cannot use hash
Fixes 6745
21 files changed, 439 insertions, 95 deletions
diff --git a/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs b/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs index b69bb37f..3a1f5910 100644 --- a/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs +++ b/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs | |||
@@ -20,8 +20,8 @@ | |||
20 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | 20 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> |
21 | 21 | ||
22 | <PackageGroup Id="$(var.AspNetCoreRedistId)"> | 22 | <PackageGroup Id="$(var.AspNetCoreRedistId)"> |
23 | <ExePackage InstallArguments="$(var.AspNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.AspNetCoreRedistId)" Vital="yes" Permanent="yes" Bundle="yes" LogPathVariable="$(var.AspNetCoreRedistLog)" Cache="remove"> | 23 | <ExePackage CacheId="$(var.AspNetCoreRedistId)_2485A7AFA98E178CB8F30C9838346B514AEA4769" InstallArguments="$(var.AspNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.AspNetCoreRedistId)" Vital="yes" Permanent="yes" Bundle="yes" LogPathVariable="$(var.AspNetCoreRedistLog)" Cache="remove"> |
24 | <ExePackagePayload Name="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)aspnetcore-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.AspNetCoreRedistLink)" ProductName="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Description="Microsoft ASP.NET Core 3.1.12 - Shared Framework" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Hash="5CE9839CAE90FB2936033431F2905E97C7DC080DC50108D58714939CCCC6A265694B8259A3BF742A68BF04D9CFFB0602B0306DD401C4CE644BDB96C7D1168E59" Size="7841808" Version="3.1.12.21070" /> | 24 | <ExePackagePayload Name="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)aspnetcore-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.AspNetCoreRedistLink)" ProductName="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Description="Microsoft ASP.NET Core 3.1.12 - Shared Framework" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Size="7841808" Version="3.1.12.21070" /> |
25 | </ExePackage> | 25 | </ExePackage> |
26 | </PackageGroup> | 26 | </PackageGroup> |
27 | </Fragment> | 27 | </Fragment> |
@@ -35,8 +35,8 @@ | |||
35 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | 35 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> |
36 | 36 | ||
37 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)"> | 37 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)"> |
38 | <ExePackage InstallArguments="$(var.DesktopNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DesktopNetCoreRedistId)" Vital="yes" Permanent="yes" Bundle="yes" LogPathVariable="$(var.DesktopNetCoreRedistLog)" Cache="remove"> | 38 | <ExePackage CacheId="$(var.DesktopNetCoreRedistId)_2485A7AFA98E178CB8F30C9838346B514AEA4769" InstallArguments="$(var.DesktopNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DesktopNetCoreRedistId)" Vital="yes" Permanent="yes" Bundle="yes" LogPathVariable="$(var.DesktopNetCoreRedistLog)" Cache="remove"> |
39 | <ExePackagePayload Name="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)windowsdesktop-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DesktopNetCoreRedistLink)" ProductName="Microsoft Windows Desktop Runtime - 3.1.12 (x64)" Description="Microsoft Windows Desktop Runtime - 3.1.12 (x64)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Hash="CD69B8722B2FF175FADD6774AB6A97F89292FC57A15CEC95218E79FFF1E26F46A7EFFFB15CE0F6D22B83B991F7083BB5C04F5158F87D298EA0F204933F8ECD27" Size="54284816" Version="3.1.12.29719" /> | 39 | <ExePackagePayload Name="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)windowsdesktop-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DesktopNetCoreRedistLink)" ProductName="Microsoft Windows Desktop Runtime - 3.1.12 (x64)" Description="Microsoft Windows Desktop Runtime - 3.1.12 (x64)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Size="54284816" Version="3.1.12.29719" /> |
40 | </ExePackage> | 40 | </ExePackage> |
41 | </PackageGroup> | 41 | </PackageGroup> |
42 | </Fragment> | 42 | </Fragment> |
@@ -50,8 +50,8 @@ | |||
50 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | 50 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> |
51 | 51 | ||
52 | <PackageGroup Id="$(var.DotNetCoreRedistId)"> | 52 | <PackageGroup Id="$(var.DotNetCoreRedistId)"> |
53 | <ExePackage InstallArguments="$(var.DotNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DotNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DotNetCoreRedistLog)" Cache="remove"> | 53 | <ExePackage CacheId="$(var.DotNetCoreRedistId)_2485A7AFA98E178CB8F30C9838346B514AEA4769" InstallArguments="$(var.DotNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DotNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DotNetCoreRedistLog)" Cache="remove"> |
54 | <ExePackagePayload Name="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)dotnet-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DotNetCoreRedistLink)" ProductName="Microsoft .NET Core Runtime - 3.1.12 (x64)" Description="Microsoft .NET Core Runtime - 3.1.12 (x64)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Hash="9B3F882AE5DFDC8B50D3CEC4F3292292D658B2FECB84B3F73426FB3C16E6FC6B8E7118EF559CFAE25ED7A2C175FA4D89E18986CA3C05D15F706524FBB667F702" Size="26090616" Version="3.1.12.29719" /> | 54 | <ExePackagePayload Name="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)dotnet-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DotNetCoreRedistLink)" ProductName="Microsoft .NET Core Runtime - 3.1.12 (x64)" Description="Microsoft .NET Core Runtime - 3.1.12 (x64)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Size="26090616" Version="3.1.12.29719" /> |
55 | </ExePackage> | 55 | </ExePackage> |
56 | </PackageGroup> | 56 | </PackageGroup> |
57 | </Fragment> | 57 | </Fragment> |
diff --git a/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs b/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs index cf88b32c..e3a70daf 100644 --- a/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs +++ b/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs | |||
@@ -20,8 +20,8 @@ | |||
20 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | 20 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> |
21 | 21 | ||
22 | <PackageGroup Id="$(var.AspNetCoreRedistId)"> | 22 | <PackageGroup Id="$(var.AspNetCoreRedistId)"> |
23 | <ExePackage InstallArguments="$(var.AspNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.AspNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.AspNetCoreRedistLog)" Cache="remove"> | 23 | <ExePackage CacheId="$(var.AspNetCoreRedistId)_2485A7AFA98E178CB8F30C9838346B514AEA4769" InstallArguments="$(var.AspNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.AspNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.AspNetCoreRedistLog)" Cache="remove"> |
24 | <ExePackagePayload Name="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)aspnetcore-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.AspNetCoreRedistLink)" ProductName="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Description="Microsoft ASP.NET Core 3.1.12 - Shared Framework" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Hash="03EE5F6D3B2AF8FFE2A5154BB05E50938E2D36E98D996D9E67A3C349DD0C8B3051D5A9628F48C51E006CEA0B1F4484B4BE51920FE5CA841060B0D2C6A12FD5D2" Size="7167176" Version="3.1.12.21070" /> | 24 | <ExePackagePayload Name="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)aspnetcore-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.AspNetCoreRedistLink)" ProductName="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Description="Microsoft ASP.NET Core 3.1.12 - Shared Framework" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Size="7167176" Version="3.1.12.21070" /> |
25 | </ExePackage> | 25 | </ExePackage> |
26 | </PackageGroup> | 26 | </PackageGroup> |
27 | </Fragment> | 27 | </Fragment> |
@@ -35,8 +35,8 @@ | |||
35 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | 35 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> |
36 | 36 | ||
37 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)"> | 37 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)"> |
38 | <ExePackage InstallArguments="$(var.DesktopNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DesktopNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DesktopNetCoreRedistLog)" Cache="remove"> | 38 | <ExePackage CacheId="$(var.DesktopNetCoreRedistId)_2485A7AFA98E178CB8F30C9838346B514AEA4769" InstallArguments="$(var.DesktopNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DesktopNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DesktopNetCoreRedistLog)" Cache="remove"> |
39 | <ExePackagePayload Name="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)windowsdesktop-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DesktopNetCoreRedistLink)" ProductName="Microsoft Windows Desktop Runtime - 3.1.12 (x86)" Description="Microsoft Windows Desktop Runtime - 3.1.12 (x86)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Hash="C211A7F29D9B6FEEFCF0379B153FFBFB815157D3D494CFD7D0D84D619701EEA284BF12502094BCFF2BB2968213190454E7CE0E865FD623E78C2FCDAEBEF963DA" Size="48590696" Version="3.1.12.29719" /> | 39 | <ExePackagePayload Name="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)windowsdesktop-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DesktopNetCoreRedistLink)" ProductName="Microsoft Windows Desktop Runtime - 3.1.12 (x86)" Description="Microsoft Windows Desktop Runtime - 3.1.12 (x86)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Size="48590696" Version="3.1.12.29719" /> |
40 | </ExePackage> | 40 | </ExePackage> |
41 | </PackageGroup> | 41 | </PackageGroup> |
42 | </Fragment> | 42 | </Fragment> |
@@ -50,8 +50,8 @@ | |||
50 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | 50 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> |
51 | 51 | ||
52 | <PackageGroup Id="$(var.DotNetCoreRedistId)"> | 52 | <PackageGroup Id="$(var.DotNetCoreRedistId)"> |
53 | <ExePackage InstallArguments="$(var.DotNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DotNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DotNetCoreRedistLog)" Cache="remove"> | 53 | <ExePackage CacheId="$(var.DotNetCoreRedistId)_2485A7AFA98E178CB8F30C9838346B514AEA4769" InstallArguments="$(var.DotNetCoreRedistInstallArguments)" PerMachine="yes" DetectCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DotNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DotNetCoreRedistLog)" Cache="remove"> |
54 | <ExePackagePayload Name="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)dotnet-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DotNetCoreRedistLink)" ProductName="Microsoft .NET Core Runtime - 3.1.12 (x86)" Description="Microsoft .NET Core Runtime - 3.1.12 (x86)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Hash="BA18F9028B19630D91017BEACCD8D79388125C228A83B5A62306108F3BB283617A7ED9B98785BC73192EC00E5D186DA767E940DCAB388699FAF274E437D0C16F" Size="23392184" Version="3.1.12.29719" /> | 54 | <ExePackagePayload Name="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)dotnet-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DotNetCoreRedistLink)" ProductName="Microsoft .NET Core Runtime - 3.1.12 (x86)" Description="Microsoft .NET Core Runtime - 3.1.12 (x86)" CertificatePublicKey="3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18" CertificateThumbprint="2485A7AFA98E178CB8F30C9838346B514AEA4769" Size="23392184" Version="3.1.12.29719" /> |
55 | </ExePackage> | 55 | </ExePackage> |
56 | </PackageGroup> | 56 | </PackageGroup> |
57 | </Fragment> | 57 | </Fragment> |
diff --git a/src/ext/NetFx/wixlib/NetFx462.wxs b/src/ext/NetFx/wixlib/NetFx462.wxs index cafbee56..904d2be0 100644 --- a/src/ext/NetFx/wixlib/NetFx462.wxs +++ b/src/ext/NetFx/wixlib/NetFx462.wxs | |||
@@ -29,8 +29,8 @@ | |||
29 | <WixVariable Id="NetFx462WebPackageDirectory" Value="redist\" Overridable="yes" /> | 29 | <WixVariable Id="NetFx462WebPackageDirectory" Value="redist\" Overridable="yes" /> |
30 | 30 | ||
31 | <PackageGroup Id="$(var.NetFx462WebId)"> | 31 | <PackageGroup Id="$(var.NetFx462WebId)"> |
32 | <ExePackage InstallArguments="/q /norestart /log "[NetFx462FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx462WebDetectCondition)" InstallCondition="!(wix.NetFx462WebInstallCondition)" Id="$(var.NetFx462WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx462FullLog" Cache="remove"> | 32 | <ExePackage CacheId="$(var.NetFx462WebId)_ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" InstallArguments="/q /norestart /log "[NetFx462FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx462WebDetectCondition)" InstallCondition="!(wix.NetFx462WebInstallCondition)" Id="$(var.NetFx462WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx462FullLog" Cache="remove"> |
33 | <ExePackagePayload Name="!(wix.NetFx462WebPackageDirectory)NDP462-KB3151802-Web.exe" DownloadUrl="$(var.NetFx462WebLink)" ProductName="Microsoft .NET Framework 4.6.2" Description="Microsoft .NET Framework 4.6.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Hash="D944304952F35B6F49CDA0C6364B55CCB4DF92B134634E594B0496A346B496D3AB709655292595A5D86D44C86C81F19926F84EFF7B87608740B39C12441920A3" Size="1404536" Version="4.6.1590.0" /> | 33 | <ExePackagePayload Name="!(wix.NetFx462WebPackageDirectory)NDP462-KB3151802-Web.exe" DownloadUrl="$(var.NetFx462WebLink)" ProductName="Microsoft .NET Framework 4.6.2" Description="Microsoft .NET Framework 4.6.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Size="1404536" Version="4.6.1590.0" /> |
34 | </ExePackage> | 34 | </ExePackage> |
35 | </PackageGroup> | 35 | </PackageGroup> |
36 | </Fragment> | 36 | </Fragment> |
@@ -51,8 +51,8 @@ | |||
51 | <WixVariable Id="NetFx462RedistPackageDirectory" Value="redist\" Overridable="yes" /> | 51 | <WixVariable Id="NetFx462RedistPackageDirectory" Value="redist\" Overridable="yes" /> |
52 | 52 | ||
53 | <PackageGroup Id="$(var.NetFx462RedistId)"> | 53 | <PackageGroup Id="$(var.NetFx462RedistId)"> |
54 | <ExePackage InstallArguments="/q /norestart /log "[NetFx462FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx462FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx462RedistDetectCondition)" InstallCondition="!(wix.NetFx462RedistInstallCondition)" Id="$(var.NetFx462RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx462FullLog"> | 54 | <ExePackage CacheId="$(var.NetFx462RedistId)_ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" InstallArguments="/q /norestart /log "[NetFx462FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx462FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx462RedistDetectCondition)" InstallCondition="!(wix.NetFx462RedistInstallCondition)" Id="$(var.NetFx462RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx462FullLog"> |
55 | <ExePackagePayload Name="!(wix.NetFx462RedistPackageDirectory)NDP462-KB3151800-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx462RedistLink)" ProductName="Microsoft .NET Framework 4.6.2" Description="Microsoft .NET Framework 4.6.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Hash="045F1AB9AC0126D01494F933EF10DD81B2CC71E1C23A7F2871F06EBAE7A0538467A21ADB461FBFB5EB394BF80A850FF4DCA5EEFDEC17CC3714082018ED372F7A" Size="62000832" Version="4.6.1590.0" /> | 55 | <ExePackagePayload Name="!(wix.NetFx462RedistPackageDirectory)NDP462-KB3151800-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx462RedistLink)" ProductName="Microsoft .NET Framework 4.6.2" Description="Microsoft .NET Framework 4.6.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Size="62000832" Version="4.6.1590.0" /> |
56 | </ExePackage> | 56 | </ExePackage> |
57 | </PackageGroup> | 57 | </PackageGroup> |
58 | </Fragment> | 58 | </Fragment> |
diff --git a/src/ext/NetFx/wixlib/NetFx472.wxs b/src/ext/NetFx/wixlib/NetFx472.wxs index b6d50e75..15cb0de2 100644 --- a/src/ext/NetFx/wixlib/NetFx472.wxs +++ b/src/ext/NetFx/wixlib/NetFx472.wxs | |||
@@ -29,8 +29,8 @@ | |||
29 | <WixVariable Id="NetFx472WebPackageDirectory" Value="redist\" Overridable="yes" /> | 29 | <WixVariable Id="NetFx472WebPackageDirectory" Value="redist\" Overridable="yes" /> |
30 | 30 | ||
31 | <PackageGroup Id="$(var.NetFx472WebId)"> | 31 | <PackageGroup Id="$(var.NetFx472WebId)"> |
32 | <ExePackage InstallArguments="/q /norestart /log "[NetFx472WebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx472WebDetectCondition)" InstallCondition="!(wix.NetFx472WebInstallCondition)" Id="$(var.NetFx472WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx472WebLog" Cache="remove"> | 32 | <ExePackage CacheId="$(var.NetFx472WebId)_ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" InstallArguments="/q /norestart /log "[NetFx472WebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx472WebDetectCondition)" InstallCondition="!(wix.NetFx472WebInstallCondition)" Id="$(var.NetFx472WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx472WebLog" Cache="remove"> |
33 | <ExePackagePayload Name="!(wix.NetFx472WebPackageDirectory)NDP472-KB4054531-Web.exe" DownloadUrl="$(var.NetFx472WebLink)" ProductName="Microsoft .NET Framework 4.7.2" Description="Microsoft .NET Framework 4.7.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Hash="99B1D7F9264E7D5AEA7B01B69EF541065030055A37CFD76F9846B3CC84FD6F2BAB612042D68DDF992BDA41553C493FB45830699BA5F56AB0AEE200CC539CC5D8" Size="1405792" Version="4.7.3081.0" /> | 33 | <ExePackagePayload Name="!(wix.NetFx472WebPackageDirectory)NDP472-KB4054531-Web.exe" DownloadUrl="$(var.NetFx472WebLink)" ProductName="Microsoft .NET Framework 4.7.2" Description="Microsoft .NET Framework 4.7.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Size="1405792" Version="4.7.3081.0" /> |
34 | </ExePackage> | 34 | </ExePackage> |
35 | </PackageGroup> | 35 | </PackageGroup> |
36 | </Fragment> | 36 | </Fragment> |
@@ -51,8 +51,8 @@ | |||
51 | <WixVariable Id="NetFx472RedistPackageDirectory" Value="redist\" Overridable="yes" /> | 51 | <WixVariable Id="NetFx472RedistPackageDirectory" Value="redist\" Overridable="yes" /> |
52 | 52 | ||
53 | <PackageGroup Id="$(var.NetFx472RedistId)"> | 53 | <PackageGroup Id="$(var.NetFx472RedistId)"> |
54 | <ExePackage InstallArguments="/q /norestart /log "[NetFx472RedistLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx472RedistDetectCondition)" InstallCondition="!(wix.NetFx472RedistInstallCondition)" Id="$(var.NetFx472RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx472RedistLog" Cache="remove"> | 54 | <ExePackage CacheId="$(var.NetFx472RedistId)_ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" InstallArguments="/q /norestart /log "[NetFx472RedistLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx472RedistDetectCondition)" InstallCondition="!(wix.NetFx472RedistInstallCondition)" Id="$(var.NetFx472RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx472RedistLog" Cache="remove"> |
55 | <ExePackagePayload Name="!(wix.NetFx472RedistPackageDirectory)NDP472-KB4054530-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx472RedistLink)" ProductName="Microsoft .NET Framework 4.7.2" Description="Microsoft .NET Framework 4.7.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Hash="F4EA32D8189DD269FF02D68B39D7DE866AE5F46EEA5A71BF8F4715FB0E4F8B7AC64B274DFA7BFF69B52C719E65256906C8D92FDD355F52C977175AE3E1919098" Size="83940592" Version="4.7.3081.0" /> | 55 | <ExePackagePayload Name="!(wix.NetFx472RedistPackageDirectory)NDP472-KB4054530-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx472RedistLink)" ProductName="Microsoft .NET Framework 4.7.2" Description="Microsoft .NET Framework 4.7.2 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Size="83940592" Version="4.7.3081.0" /> |
56 | </ExePackage> | 56 | </ExePackage> |
57 | </PackageGroup> | 57 | </PackageGroup> |
58 | </Fragment> | 58 | </Fragment> |
diff --git a/src/ext/NetFx/wixlib/NetFx48.wxs b/src/ext/NetFx/wixlib/NetFx48.wxs index f23f08db..fc2f97f5 100644 --- a/src/ext/NetFx/wixlib/NetFx48.wxs +++ b/src/ext/NetFx/wixlib/NetFx48.wxs | |||
@@ -29,8 +29,8 @@ | |||
29 | <WixVariable Id="NetFx48WebPackageDirectory" Value="redist\" Overridable="yes" /> | 29 | <WixVariable Id="NetFx48WebPackageDirectory" Value="redist\" Overridable="yes" /> |
30 | 30 | ||
31 | <PackageGroup Id="$(var.NetFx48WebId)"> | 31 | <PackageGroup Id="$(var.NetFx48WebId)"> |
32 | <ExePackage InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx48WebDetectCondition)" InstallCondition="!(wix.NetFx48WebInstallCondition)" Id="$(var.NetFx48WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx48WebLog" Cache="remove"> | 32 | <ExePackage CacheId="$(var.NetFx48WebId)_ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx48WebDetectCondition)" InstallCondition="!(wix.NetFx48WebInstallCondition)" Id="$(var.NetFx48WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx48WebLog" Cache="remove"> |
33 | <ExePackagePayload Name="!(wix.NetFx48WebPackageDirectory)ndp48-web.exe" DownloadUrl="$(var.NetFx48WebLink)" ProductName="Microsoft .NET Framework 4.8" Description="Microsoft .NET Framework 4.8 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Hash="642721C60D52051C7F3434D8710FE3406A7CFE10B2B39E90EA847719ED1697D7C614F2DF44AD50412B1DF8C98DD78FDC57CA1D047D28C81AC158092E5FB18040" Size="1439328" Version="4.8.4115.0" /> | 33 | <ExePackagePayload Name="!(wix.NetFx48WebPackageDirectory)ndp48-web.exe" DownloadUrl="$(var.NetFx48WebLink)" ProductName="Microsoft .NET Framework 4.8" Description="Microsoft .NET Framework 4.8 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Size="1439328" Version="4.8.4115.0" /> |
34 | </ExePackage> | 34 | </ExePackage> |
35 | </PackageGroup> | 35 | </PackageGroup> |
36 | </Fragment> | 36 | </Fragment> |
@@ -51,8 +51,8 @@ | |||
51 | <WixVariable Id="NetFx48RedistPackageDirectory" Value="redist\" Overridable="yes" /> | 51 | <WixVariable Id="NetFx48RedistPackageDirectory" Value="redist\" Overridable="yes" /> |
52 | 52 | ||
53 | <PackageGroup Id="$(var.NetFx48RedistId)"> | 53 | <PackageGroup Id="$(var.NetFx48RedistId)"> |
54 | <ExePackage InstallArguments="/q /norestart /log "[NetFx48RedistLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx48RedistDetectCondition)" InstallCondition="!(wix.NetFx48RedistInstallCondition)" Id="$(var.NetFx48RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx48RedistLog" Cache="remove"> | 54 | <ExePackage CacheId="$(var.NetFx48RedistId)_ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" InstallArguments="/q /norestart /log "[NetFx48RedistLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx48RedistDetectCondition)" InstallCondition="!(wix.NetFx48RedistInstallCondition)" Id="$(var.NetFx48RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx48RedistLog" Cache="remove"> |
55 | <ExePackagePayload Name="!(wix.NetFx48RedistPackageDirectory)ndp48-x86-x64-allos-enu.exe" DownloadUrl="$(var.NetFx48RedistLink)" ProductName="Microsoft .NET Framework 4.8" Description="Microsoft .NET Framework 4.8 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Hash="FFB6C226AF4E5C8FFA7210D5115701883ABF12A8B1CBAE6E08122FB94DD93763468BFF5B00060EABEF19C147B0A4D8063DDE318D2B928CE397C58F7949736C5F" Size="121307088" Version="4.8.4115.0" /> | 55 | <ExePackagePayload Name="!(wix.NetFx48RedistPackageDirectory)ndp48-x86-x64-allos-enu.exe" DownloadUrl="$(var.NetFx48RedistLink)" ProductName="Microsoft .NET Framework 4.8" Description="Microsoft .NET Framework 4.8 Setup" CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" Size="121307088" Version="4.8.4115.0" /> |
56 | </ExePackage> | 56 | </ExePackage> |
57 | </PackageGroup> | 57 | </PackageGroup> |
58 | </Fragment> | 58 | </Fragment> |
diff --git a/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs index 348a4b41..82547487 100644 --- a/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bind/BindBundleCommand.cs | |||
@@ -189,7 +189,7 @@ namespace WixToolset.Core.Burn | |||
189 | 189 | ||
190 | case WixBundlePackageType.Exe: | 190 | case WixBundlePackageType.Exe: |
191 | { | 191 | { |
192 | var command = new ProcessExePackageCommand(facade, payloadSymbols); | 192 | var command = new ProcessExePackageCommand(this.Messaging, facade, payloadSymbols); |
193 | command.Execute(); | 193 | command.Execute(); |
194 | } | 194 | } |
195 | break; | 195 | break; |
@@ -210,7 +210,7 @@ namespace WixToolset.Core.Burn | |||
210 | 210 | ||
211 | case WixBundlePackageType.Msu: | 211 | case WixBundlePackageType.Msu: |
212 | { | 212 | { |
213 | var command = new ProcessMsuPackageCommand(facade, payloadSymbols); | 213 | var command = new ProcessMsuPackageCommand(this.Messaging, facade, payloadSymbols); |
214 | command.Execute(); | 214 | command.Execute(); |
215 | } | 215 | } |
216 | break; | 216 | break; |
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CacheIdGenerator.cs b/src/wix/WixToolset.Core.Burn/Bundles/CacheIdGenerator.cs new file mode 100644 index 00000000..2efa748b --- /dev/null +++ b/src/wix/WixToolset.Core.Burn/Bundles/CacheIdGenerator.cs | |||
@@ -0,0 +1,45 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Core.Burn.Bundles | ||
4 | { | ||
5 | using System; | ||
6 | using WixToolset.Data; | ||
7 | using WixToolset.Data.Symbols; | ||
8 | using WixToolset.Extensibility.Services; | ||
9 | |||
10 | internal static class CacheIdGenerator | ||
11 | { | ||
12 | // These are "reasonable" limits to trim the very long hashes so | ||
13 | // when used in a cache id we do not overflow MAX_PATH. | ||
14 | private const int ReasonableCountOfCharsFromCertificateThumbprint = 20; | ||
15 | private const int ReasonableUpperLimitForCacheId = 64; | ||
16 | |||
17 | public static string GenerateCacheIdFromPayloadHashAndThumbprint(WixBundlePayloadSymbol payloadSymbol) | ||
18 | { | ||
19 | var takeFromThumbprint = Math.Min(ReasonableCountOfCharsFromCertificateThumbprint, payloadSymbol.CertificateThumbprint.Length); | ||
20 | var takeFromHash = Math.Min(ReasonableUpperLimitForCacheId - takeFromThumbprint, payloadSymbol.Hash.Length); | ||
21 | |||
22 | return payloadSymbol.Hash.Substring(0, takeFromHash) + payloadSymbol.CertificateThumbprint.Substring(0, takeFromThumbprint); | ||
23 | } | ||
24 | |||
25 | public static string GenerateCacheIdFromPackagePayloadHash(IMessaging messaging, WixBundlePayloadSymbol packagePayload, string elementName) | ||
26 | { | ||
27 | string cacheId = null; | ||
28 | |||
29 | // If we are validating the package via certificate, the CacheId must be specified | ||
30 | // in source code. | ||
31 | if (!String.IsNullOrEmpty(packagePayload.CertificatePublicKey) || !String.IsNullOrEmpty(packagePayload.CertificateThumbprint)) | ||
32 | { | ||
33 | var oneOfCertificateAttributeNames = !String.IsNullOrEmpty(packagePayload.CertificatePublicKey) ? "CertificatePublicKey" : "CertificateThumbprint"; | ||
34 | |||
35 | messaging.Write(ErrorMessages.ExpectedAttribute(packagePayload.SourceLineNumbers, elementName, "CacheId", oneOfCertificateAttributeNames)); | ||
36 | } | ||
37 | else // validating package by hashing, so the CacheId can be defaulted to the hash with a "reasonable" upper limit since the CacheId is in the cached file path. | ||
38 | { | ||
39 | cacheId = packagePayload.Hash.Length > ReasonableUpperLimitForCacheId ? packagePayload.Hash.Substring(0, ReasonableUpperLimitForCacheId) : packagePayload.Hash; | ||
40 | } | ||
41 | |||
42 | return cacheId; | ||
43 | } | ||
44 | } | ||
45 | } | ||
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/ProcessExePackageCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/ProcessExePackageCommand.cs index 8d8ea986..3307db47 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/ProcessExePackageCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/ProcessExePackageCommand.cs | |||
@@ -4,19 +4,24 @@ namespace WixToolset.Core.Burn.Bundles | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
7 | using WixToolset.Data; | ||
7 | using WixToolset.Data.Symbols; | 8 | using WixToolset.Data.Symbols; |
9 | using WixToolset.Extensibility.Services; | ||
8 | 10 | ||
9 | /// <summary> | 11 | /// <summary> |
10 | /// Initializes package state from the Exe contents. | 12 | /// Initializes package state from the Exe contents. |
11 | /// </summary> | 13 | /// </summary> |
12 | internal class ProcessExePackageCommand | 14 | internal class ProcessExePackageCommand |
13 | { | 15 | { |
14 | public ProcessExePackageCommand(PackageFacade facade, Dictionary<string, WixBundlePayloadSymbol> payloadSymbols) | 16 | public ProcessExePackageCommand(IMessaging messaging, PackageFacade facade, Dictionary<string, WixBundlePayloadSymbol> payloadSymbols) |
15 | { | 17 | { |
16 | this.AuthoredPayloads = payloadSymbols; | 18 | this.Messaging = messaging; |
17 | this.Facade = facade; | 19 | this.Facade = facade; |
20 | this.AuthoredPayloads = payloadSymbols; | ||
18 | } | 21 | } |
19 | 22 | ||
23 | public IMessaging Messaging { get; } | ||
24 | |||
20 | public Dictionary<string, WixBundlePayloadSymbol> AuthoredPayloads { get; } | 25 | public Dictionary<string, WixBundlePayloadSymbol> AuthoredPayloads { get; } |
21 | 26 | ||
22 | public PackageFacade Facade { get; } | 27 | public PackageFacade Facade { get; } |
@@ -30,7 +35,7 @@ namespace WixToolset.Core.Burn.Bundles | |||
30 | 35 | ||
31 | if (String.IsNullOrEmpty(this.Facade.PackageSymbol.CacheId)) | 36 | if (String.IsNullOrEmpty(this.Facade.PackageSymbol.CacheId)) |
32 | { | 37 | { |
33 | this.Facade.PackageSymbol.CacheId = packagePayload.Hash; | 38 | this.Facade.PackageSymbol.CacheId = CacheIdGenerator.GenerateCacheIdFromPackagePayloadHash(this.Messaging, packagePayload, "ExePackage"); |
34 | } | 39 | } |
35 | 40 | ||
36 | this.Facade.PackageSymbol.Version = packagePayload.Version; | 41 | this.Facade.PackageSymbol.Version = packagePayload.Version; |
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsuPackageCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsuPackageCommand.cs index 4c61f6d7..b61956a2 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsuPackageCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsuPackageCommand.cs | |||
@@ -6,18 +6,22 @@ namespace WixToolset.Core.Burn.Bundles | |||
6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
7 | using WixToolset.Data; | 7 | using WixToolset.Data; |
8 | using WixToolset.Data.Symbols; | 8 | using WixToolset.Data.Symbols; |
9 | using WixToolset.Extensibility.Services; | ||
9 | 10 | ||
10 | /// <summary> | 11 | /// <summary> |
11 | /// Processes the Msu packages to add properties and payloads from the Msu packages. | 12 | /// Processes the Msu packages to add properties and payloads from the Msu packages. |
12 | /// </summary> | 13 | /// </summary> |
13 | internal class ProcessMsuPackageCommand | 14 | internal class ProcessMsuPackageCommand |
14 | { | 15 | { |
15 | public ProcessMsuPackageCommand(PackageFacade facade, Dictionary<string, WixBundlePayloadSymbol> payloadSymbols) | 16 | public ProcessMsuPackageCommand(IMessaging messaging, PackageFacade facade, Dictionary<string, WixBundlePayloadSymbol> payloadSymbols) |
16 | { | 17 | { |
17 | this.AuthoredPayloads = payloadSymbols; | 18 | this.Messaging = messaging; |
18 | this.Facade = facade; | 19 | this.Facade = facade; |
20 | this.AuthoredPayloads = payloadSymbols; | ||
19 | } | 21 | } |
20 | 22 | ||
23 | public IMessaging Messaging { get; } | ||
24 | |||
21 | public Dictionary<string, WixBundlePayloadSymbol> AuthoredPayloads { private get; set; } | 25 | public Dictionary<string, WixBundlePayloadSymbol> AuthoredPayloads { private get; set; } |
22 | 26 | ||
23 | public PackageFacade Facade { private get; set; } | 27 | public PackageFacade Facade { private get; set; } |
@@ -28,7 +32,7 @@ namespace WixToolset.Core.Burn.Bundles | |||
28 | 32 | ||
29 | if (String.IsNullOrEmpty(this.Facade.PackageSymbol.CacheId)) | 33 | if (String.IsNullOrEmpty(this.Facade.PackageSymbol.CacheId)) |
30 | { | 34 | { |
31 | this.Facade.PackageSymbol.CacheId = packagePayload.Hash; | 35 | this.Facade.PackageSymbol.CacheId = CacheIdGenerator.GenerateCacheIdFromPackagePayloadHash(this.Messaging, packagePayload, "MsuPackage"); |
32 | } | 36 | } |
33 | 37 | ||
34 | this.Facade.PackageSymbol.PerMachine = true; // MSUs are always per-machine. | 38 | this.Facade.PackageSymbol.PerMachine = true; // MSUs are always per-machine. |
diff --git a/src/wix/WixToolset.Core.Burn/CommandLine/RemotePayloadSubcommand.cs b/src/wix/WixToolset.Core.Burn/CommandLine/RemotePayloadSubcommand.cs index e812bc8a..83b10c7c 100644 --- a/src/wix/WixToolset.Core.Burn/CommandLine/RemotePayloadSubcommand.cs +++ b/src/wix/WixToolset.Core.Burn/CommandLine/RemotePayloadSubcommand.cs | |||
@@ -19,6 +19,9 @@ namespace WixToolset.Core.Burn.CommandLine | |||
19 | 19 | ||
20 | internal class RemotePayloadSubcommand : BurnSubcommandBase | 20 | internal class RemotePayloadSubcommand : BurnSubcommandBase |
21 | { | 21 | { |
22 | private static readonly XName BundlePackageName = "BundlePackage"; | ||
23 | private static readonly XName ExePackageName = "ExePackage"; | ||
24 | private static readonly XName MsuPackageName = "MsuPackage"; | ||
22 | private static readonly XName BundlePackagePayloadName = "BundlePackagePayload"; | 25 | private static readonly XName BundlePackagePayloadName = "BundlePackagePayload"; |
23 | private static readonly XName ExePackagePayloadName = "ExePackagePayload"; | 26 | private static readonly XName ExePackagePayloadName = "ExePackagePayload"; |
24 | private static readonly XName MsuPackagePayloadName = "MsuPackagePayload"; | 27 | private static readonly XName MsuPackagePayloadName = "MsuPackagePayload"; |
@@ -80,7 +83,7 @@ namespace WixToolset.Core.Burn.CommandLine | |||
80 | this.IntermediateFolder = Path.GetTempPath(); | 83 | this.IntermediateFolder = Path.GetTempPath(); |
81 | } | 84 | } |
82 | 85 | ||
83 | var elements = this.HarvestRemotePayloads(inputPaths); | 86 | var element = this.HarvestPackageElement(inputPaths); |
84 | 87 | ||
85 | if (!this.Messaging.EncounteredError) | 88 | if (!this.Messaging.EncounteredError) |
86 | { | 89 | { |
@@ -89,14 +92,11 @@ namespace WixToolset.Core.Burn.CommandLine | |||
89 | var outputFolder = Path.GetDirectoryName(this.OutputPath); | 92 | var outputFolder = Path.GetDirectoryName(this.OutputPath); |
90 | Directory.CreateDirectory(outputFolder); | 93 | Directory.CreateDirectory(outputFolder); |
91 | 94 | ||
92 | File.WriteAllLines(this.OutputPath, elements.Select(e => e.ToString())); | 95 | File.WriteAllText(this.OutputPath, element.ToString()); |
93 | } | 96 | } |
94 | else | 97 | else |
95 | { | 98 | { |
96 | foreach (var element in elements) | 99 | Console.WriteLine(element.ToString()); |
97 | { | ||
98 | Console.WriteLine(element); | ||
99 | } | ||
100 | } | 100 | } |
101 | } | 101 | } |
102 | 102 | ||
@@ -189,10 +189,51 @@ namespace WixToolset.Core.Burn.CommandLine | |||
189 | return result.Distinct(StringComparer.OrdinalIgnoreCase).ToList(); | 189 | return result.Distinct(StringComparer.OrdinalIgnoreCase).ToList(); |
190 | } | 190 | } |
191 | 191 | ||
192 | private IEnumerable<XElement> HarvestRemotePayloads(IEnumerable<string> paths) | 192 | private XElement HarvestPackageElement(IEnumerable<string> paths) |
193 | { | ||
194 | var harvestedFiles = this.HarvestRemotePayloads(paths).ToList(); | ||
195 | |||
196 | XElement element; | ||
197 | |||
198 | switch (harvestedFiles[0].PackageType) | ||
199 | { | ||
200 | case WixBundlePackageType.Bundle: | ||
201 | element = new XElement(BundlePackageName); | ||
202 | break; | ||
203 | |||
204 | case WixBundlePackageType.Exe: | ||
205 | element = new XElement(ExePackageName); | ||
206 | break; | ||
207 | |||
208 | case WixBundlePackageType.Msu: | ||
209 | element = new XElement(MsuPackageName); | ||
210 | break; | ||
211 | |||
212 | default: | ||
213 | return null; | ||
214 | } | ||
215 | |||
216 | var packagePayloadFile = harvestedFiles.FirstOrDefault(); | ||
217 | |||
218 | if (packagePayloadFile != null) | ||
219 | { | ||
220 | if (packagePayloadFile.Element.Attribute("CertificateThumbprint") != null) | ||
221 | { | ||
222 | var cacheId = CacheIdGenerator.GenerateCacheIdFromPayloadHashAndThumbprint(packagePayloadFile.PayloadSymbol); | ||
223 | |||
224 | element.Add(new XAttribute("CacheId", cacheId)); | ||
225 | } | ||
226 | |||
227 | element.Add(harvestedFiles.Select(h => h.Element)); | ||
228 | } | ||
229 | |||
230 | return element; | ||
231 | } | ||
232 | |||
233 | private IEnumerable<HarvestedFile> HarvestRemotePayloads(IEnumerable<string> paths) | ||
193 | { | 234 | { |
194 | var first = true; | 235 | var first = true; |
195 | var hashes = this.GetHashes(paths); | 236 | var hashes = this.GetCertificateHashes(paths); |
196 | 237 | ||
197 | foreach (var path in paths) | 238 | foreach (var path in paths) |
198 | { | 239 | { |
@@ -204,22 +245,22 @@ namespace WixToolset.Core.Burn.CommandLine | |||
204 | continue; | 245 | continue; |
205 | } | 246 | } |
206 | 247 | ||
248 | yield return harvestedFile; | ||
249 | |||
207 | if (harvestedFile.PackagePayloads.Any()) | 250 | if (harvestedFile.PackagePayloads.Any()) |
208 | { | 251 | { |
209 | var packageHashes = this.GetHashes(harvestedFile.PackagePayloads.Select(x => x.SourceFile.Path)); | 252 | var packageCertificateHashes = this.GetCertificateHashes(harvestedFile.PackagePayloads.Select(x => x.SourceFile.Path)); |
210 | 253 | ||
211 | foreach (var payloadSymbol in harvestedFile.PackagePayloads) | 254 | foreach (var payloadSymbol in harvestedFile.PackagePayloads) |
212 | { | 255 | { |
213 | var harvestedPackageFile = this.HarvestFile(payloadSymbol.SourceFile.Path, false, packageHashes); | 256 | var harvestedPackageFile = this.HarvestFile(payloadSymbol.SourceFile.Path, false, packageCertificateHashes); |
214 | yield return harvestedPackageFile.Element; | 257 | yield return harvestedPackageFile; |
215 | } | 258 | } |
216 | } | 259 | } |
217 | |||
218 | yield return harvestedFile.Element; | ||
219 | } | 260 | } |
220 | } | 261 | } |
221 | 262 | ||
222 | private Dictionary<string, CertificateHashes> GetHashes(IEnumerable<string> paths) | 263 | private Dictionary<string, CertificateHashes> GetCertificateHashes(IEnumerable<string> paths) |
223 | { | 264 | { |
224 | var hashes = new Dictionary<string, CertificateHashes>(); | 265 | var hashes = new Dictionary<string, CertificateHashes>(); |
225 | 266 | ||
@@ -233,7 +274,7 @@ namespace WixToolset.Core.Burn.CommandLine | |||
233 | return hashes; | 274 | return hashes; |
234 | } | 275 | } |
235 | 276 | ||
236 | private HarvestedFile HarvestFile(string path, bool isPackage, Dictionary<string, CertificateHashes> hashes) | 277 | private HarvestedFile HarvestFile(string path, bool isPackage, Dictionary<string, CertificateHashes> certificateHashes) |
237 | { | 278 | { |
238 | XElement element; | 279 | XElement element; |
239 | WixBundlePackageType? packageType = null; | 280 | WixBundlePackageType? packageType = null; |
@@ -274,7 +315,7 @@ namespace WixToolset.Core.Burn.CommandLine | |||
274 | var payloadSymbol = new WixBundlePayloadSymbol(null, new Identifier(AccessModifier.Section, "id")) | 315 | var payloadSymbol = new WixBundlePayloadSymbol(null, new Identifier(AccessModifier.Section, "id")) |
275 | { | 316 | { |
276 | SourceFile = new IntermediateFieldPathValue { Path = path }, | 317 | SourceFile = new IntermediateFieldPathValue { Path = path }, |
277 | Name = Path.GetFileName(path), | 318 | Name = this.GetRelativeFileName(path), |
278 | }; | 319 | }; |
279 | 320 | ||
280 | this.PayloadHarvester.HarvestStandardInformation(payloadSymbol); | 321 | this.PayloadHarvester.HarvestStandardInformation(payloadSymbol); |
@@ -293,22 +334,18 @@ namespace WixToolset.Core.Burn.CommandLine | |||
293 | 334 | ||
294 | if (!String.IsNullOrEmpty(this.DownloadUrl)) | 335 | if (!String.IsNullOrEmpty(this.DownloadUrl)) |
295 | { | 336 | { |
296 | var filename = this.GetRelativeFileName(payloadSymbol.SourceFile.Path); | 337 | element.Add(new XAttribute("DownloadUrl", this.DownloadUrl)); |
297 | var formattedUrl = String.Format(this.DownloadUrl, filename); | ||
298 | |||
299 | if (Uri.TryCreate(formattedUrl, UriKind.Absolute, out var url)) | ||
300 | { | ||
301 | element.Add(new XAttribute("DownloadUrl", url.AbsoluteUri)); | ||
302 | } | ||
303 | } | 338 | } |
304 | 339 | ||
305 | if (hashes.TryGetValue(path, out var certificateHashes)) | 340 | if (certificateHashes.TryGetValue(path, out var certificateHashForPath)) |
306 | { | 341 | { |
307 | element.Add(new XAttribute("CertificatePublicKey", certificateHashes.PublicKey)); | 342 | payloadSymbol.CertificatePublicKey = certificateHashForPath.PublicKey; |
308 | element.Add(new XAttribute("CertificateThumbprint", certificateHashes.Thumbprint)); | 343 | payloadSymbol.CertificateThumbprint = certificateHashForPath.Thumbprint; |
309 | } | ||
310 | 344 | ||
311 | if (!String.IsNullOrEmpty(payloadSymbol.Hash)) | 345 | element.Add(new XAttribute("CertificatePublicKey", payloadSymbol.CertificatePublicKey)); |
346 | element.Add(new XAttribute("CertificateThumbprint", payloadSymbol.CertificateThumbprint)); | ||
347 | } | ||
348 | else if (!String.IsNullOrEmpty(payloadSymbol.Hash)) | ||
312 | { | 349 | { |
313 | element.Add(new XAttribute("Hash", payloadSymbol.Hash)); | 350 | element.Add(new XAttribute("Hash", payloadSymbol.Hash)); |
314 | } | 351 | } |
@@ -326,6 +363,7 @@ namespace WixToolset.Core.Burn.CommandLine | |||
326 | var harvestedFile = new HarvestedFile | 363 | var harvestedFile = new HarvestedFile |
327 | { | 364 | { |
328 | Element = element, | 365 | Element = element, |
366 | PackageType = packageType, | ||
329 | PayloadSymbol = payloadSymbol, | 367 | PayloadSymbol = payloadSymbol, |
330 | }; | 368 | }; |
331 | 369 | ||
@@ -418,7 +456,11 @@ namespace WixToolset.Core.Burn.CommandLine | |||
418 | private class HarvestedFile | 456 | private class HarvestedFile |
419 | { | 457 | { |
420 | public XElement Element { get; set; } | 458 | public XElement Element { get; set; } |
459 | |||
460 | public WixBundlePackageType? PackageType { get; internal set; } | ||
461 | |||
421 | public WixBundlePayloadSymbol PayloadSymbol { get; set; } | 462 | public WixBundlePayloadSymbol PayloadSymbol { get; set; } |
463 | |||
422 | public List<WixBundlePayloadSymbol> PackagePayloads { get; } = new List<WixBundlePayloadSymbol>(); | 464 | public List<WixBundlePayloadSymbol> PackagePayloads { get; } = new List<WixBundlePayloadSymbol>(); |
423 | } | 465 | } |
424 | } | 466 | } |
diff --git a/src/wix/WixToolset.Core/Compile/CompilerPayload.cs b/src/wix/WixToolset.Core/Compile/CompilerPayload.cs index 2cdc70cf..98ab1579 100644 --- a/src/wix/WixToolset.Core/Compile/CompilerPayload.cs +++ b/src/wix/WixToolset.Core/Compile/CompilerPayload.cs | |||
@@ -145,18 +145,11 @@ namespace WixToolset.Core | |||
145 | this.Core.Write(ErrorMessages.ExpectedAttributeWithoutOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Name", "SourceFile")); | 145 | this.Core.Write(ErrorMessages.ExpectedAttributeWithoutOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Name", "SourceFile")); |
146 | } | 146 | } |
147 | 147 | ||
148 | if (!this.Size.HasValue) | 148 | // If remote payload is being verified by a certificate. |
149 | { | ||
150 | this.Core.Write(ErrorMessages.ExpectedAttributeWithoutOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Size", "SourceFile")); | ||
151 | } | ||
152 | |||
153 | if (String.IsNullOrEmpty(this.Hash)) | ||
154 | { | ||
155 | this.Core.Write(ErrorMessages.ExpectedAttributeWithoutOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Hash", "SourceFile")); | ||
156 | } | ||
157 | |||
158 | if (!String.IsNullOrEmpty(this.CertificatePublicKey) || !String.IsNullOrEmpty(this.CertificateThumbprint)) | 149 | if (!String.IsNullOrEmpty(this.CertificatePublicKey) || !String.IsNullOrEmpty(this.CertificateThumbprint)) |
159 | { | 150 | { |
151 | var oneOfCertificateAttributeNames = !String.IsNullOrEmpty(this.CertificatePublicKey) ? "CertificatePublicKey" : "CertificateThumbprint"; | ||
152 | |||
160 | if (String.IsNullOrEmpty(this.CertificateThumbprint)) | 153 | if (String.IsNullOrEmpty(this.CertificateThumbprint)) |
161 | { | 154 | { |
162 | this.Core.Write(ErrorMessages.ExpectedAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "CertificateThumbprint", "CertificatePublicKey")); | 155 | this.Core.Write(ErrorMessages.ExpectedAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "CertificateThumbprint", "CertificatePublicKey")); |
@@ -165,6 +158,23 @@ namespace WixToolset.Core | |||
165 | { | 158 | { |
166 | this.Core.Write(ErrorMessages.ExpectedAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "CertificatePublicKey", "CertificateThumbprint")); | 159 | this.Core.Write(ErrorMessages.ExpectedAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "CertificatePublicKey", "CertificateThumbprint")); |
167 | } | 160 | } |
161 | |||
162 | if (!String.IsNullOrEmpty(this.Hash)) | ||
163 | { | ||
164 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Hash", oneOfCertificateAttributeNames)); | ||
165 | } | ||
166 | } | ||
167 | else // payload is being verified by hash. | ||
168 | { | ||
169 | if (String.IsNullOrEmpty(this.Hash)) | ||
170 | { | ||
171 | this.Core.Write(ErrorMessages.ExpectedAttributeWithoutOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Hash", "SourceFile")); | ||
172 | } | ||
173 | |||
174 | if (!this.Size.HasValue) | ||
175 | { | ||
176 | this.Core.Write(ErrorMessages.ExpectedAttributeWithoutOtherAttribute(this.SourceLineNumbers, this.Element.Name.LocalName, "Size", "SourceFile")); | ||
177 | } | ||
168 | } | 178 | } |
169 | 179 | ||
170 | if (YesNoDefaultType.Yes == this.Compressed) | 180 | if (YesNoDefaultType.Yes == this.Compressed) |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/ExePackageFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/ExePackageFixture.cs index cebed367..0dba95e1 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/ExePackageFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/ExePackageFixture.cs | |||
@@ -443,5 +443,32 @@ namespace WixToolsetTest.CoreIntegration | |||
443 | Assert.Equal(401, result.ExitCode); | 443 | Assert.Equal(401, result.ExitCode); |
444 | } | 444 | } |
445 | } | 445 | } |
446 | |||
447 | [Fact] | ||
448 | public void CannotBuildBundleWithExePackageUsingCertificateVerificationWithoutCacheId() | ||
449 | { | ||
450 | var dotDatafolder = TestData.Get(@"TestData", ".Data"); | ||
451 | var folder = TestData.Get(@"TestData", "ExePackage"); | ||
452 | |||
453 | using (var fs = new DisposableFileSystem()) | ||
454 | { | ||
455 | var baseFolder = fs.GetFolder(); | ||
456 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
457 | |||
458 | var result = WixRunner.Execute(new[] | ||
459 | { | ||
460 | "build", | ||
461 | Path.Combine(folder, "UseCertificateVerificationWithoutCacheId.wxs"), | ||
462 | "-bindpath", Path.Combine(folder, "data"), | ||
463 | "-bindpath", dotDatafolder, | ||
464 | "-intermediateFolder", intermediateFolder, | ||
465 | "-o", Path.Combine(baseFolder, "bin", "test.exe") | ||
466 | }); | ||
467 | |||
468 | Assert.Equal(10, result.ExitCode); | ||
469 | var message = result.Messages.Single(); | ||
470 | Assert.Equal("The ExePackage/@CacheId attribute was not found; it is required when attribute CertificatePublicKey is specified.", message.ToString()); | ||
471 | } | ||
472 | } | ||
446 | } | 473 | } |
447 | } | 474 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/MsuPackageFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/MsuPackageFixture.cs index 475afcf0..37499ea9 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/MsuPackageFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/MsuPackageFixture.cs | |||
@@ -3,6 +3,7 @@ | |||
3 | namespace WixToolsetTest.CoreIntegration | 3 | namespace WixToolsetTest.CoreIntegration |
4 | { | 4 | { |
5 | using System.IO; | 5 | using System.IO; |
6 | using System.Linq; | ||
6 | using WixBuildTools.TestSupport; | 7 | using WixBuildTools.TestSupport; |
7 | using WixToolset.Core.TestPackage; | 8 | using WixToolset.Core.TestPackage; |
8 | using Xunit; | 9 | using Xunit; |
@@ -12,6 +13,7 @@ namespace WixToolsetTest.CoreIntegration | |||
12 | [Fact] | 13 | [Fact] |
13 | public void CanBuildBundleWithMsuPackage() | 14 | public void CanBuildBundleWithMsuPackage() |
14 | { | 15 | { |
16 | var dotDatafolder = TestData.Get(@"TestData", ".Data"); | ||
15 | var folder = TestData.Get(@"TestData", "MsuPackage"); | 17 | var folder = TestData.Get(@"TestData", "MsuPackage"); |
16 | 18 | ||
17 | using (var fs = new DisposableFileSystem()) | 19 | using (var fs = new DisposableFileSystem()) |
@@ -24,6 +26,7 @@ namespace WixToolsetTest.CoreIntegration | |||
24 | "build", | 26 | "build", |
25 | Path.Combine(folder, "Bundle.wxs"), | 27 | Path.Combine(folder, "Bundle.wxs"), |
26 | "-bindpath", Path.Combine(folder, "data"), | 28 | "-bindpath", Path.Combine(folder, "data"), |
29 | "-bindpath", dotDatafolder, | ||
27 | "-intermediateFolder", intermediateFolder, | 30 | "-intermediateFolder", intermediateFolder, |
28 | "-o", Path.Combine(baseFolder, "bin", "test.exe") | 31 | "-o", Path.Combine(baseFolder, "bin", "test.exe") |
29 | }); | 32 | }); |
@@ -32,5 +35,58 @@ namespace WixToolsetTest.CoreIntegration | |||
32 | Assert.True(File.Exists(Path.Combine(baseFolder, "bin", "test.exe"))); | 35 | Assert.True(File.Exists(Path.Combine(baseFolder, "bin", "test.exe"))); |
33 | } | 36 | } |
34 | } | 37 | } |
38 | |||
39 | [Fact] | ||
40 | public void CanBuildBundleWithMsuPackageUsingCertificateVerification() | ||
41 | { | ||
42 | var dotDatafolder = TestData.Get(@"TestData", ".Data"); | ||
43 | var folder = TestData.Get(@"TestData", "MsuPackage"); | ||
44 | |||
45 | using (var fs = new DisposableFileSystem()) | ||
46 | { | ||
47 | var baseFolder = fs.GetFolder(); | ||
48 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
49 | |||
50 | var result = WixRunner.Execute(new[] | ||
51 | { | ||
52 | "build", | ||
53 | Path.Combine(folder, "BundleUsingCertificateVerification.wxs"), | ||
54 | "-bindpath", Path.Combine(folder, "data"), | ||
55 | "-bindpath", dotDatafolder, | ||
56 | "-intermediateFolder", intermediateFolder, | ||
57 | "-o", Path.Combine(baseFolder, "bin", "test.exe") | ||
58 | }); | ||
59 | |||
60 | result.AssertSuccess(); | ||
61 | Assert.True(File.Exists(Path.Combine(baseFolder, "bin", "test.exe"))); | ||
62 | } | ||
63 | } | ||
64 | |||
65 | [Fact] | ||
66 | public void CannotBuildBundleWithMsuPackageUsingCertificateVerificationWithoutCacheId() | ||
67 | { | ||
68 | var dotDatafolder = TestData.Get(@"TestData", ".Data"); | ||
69 | var folder = TestData.Get(@"TestData", "MsuPackage"); | ||
70 | |||
71 | using (var fs = new DisposableFileSystem()) | ||
72 | { | ||
73 | var baseFolder = fs.GetFolder(); | ||
74 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
75 | |||
76 | var result = WixRunner.Execute(new[] | ||
77 | { | ||
78 | "build", | ||
79 | Path.Combine(folder, "BundleUsingCertificateVerificationWithoutCacheId.wxs"), | ||
80 | "-bindpath", Path.Combine(folder, "data"), | ||
81 | "-bindpath", dotDatafolder, | ||
82 | "-intermediateFolder", intermediateFolder, | ||
83 | "-o", Path.Combine(baseFolder, "bin", "test.exe") | ||
84 | }); | ||
85 | |||
86 | Assert.Equal(10, result.ExitCode); | ||
87 | var message = result.Messages.Single(); | ||
88 | Assert.Equal("The MsuPackage/@CacheId attribute was not found; it is required when attribute CertificatePublicKey is specified.", message.ToString()); | ||
89 | } | ||
90 | } | ||
35 | } | 91 | } |
36 | } | 92 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/PackagePayloadFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/PackagePayloadFixture.cs index 39caf8fd..f817317d 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/PackagePayloadFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/PackagePayloadFixture.cs | |||
@@ -336,8 +336,9 @@ namespace WixToolsetTest.CoreIntegration | |||
336 | WixAssert.CompareLineByLine(new[] | 336 | WixAssert.CompareLineByLine(new[] |
337 | { | 337 | { |
338 | "The ExePackagePayload/@CertificatePublicKey attribute was not found; it is required when attribute CertificateThumbprint is specified.", | 338 | "The ExePackagePayload/@CertificatePublicKey attribute was not found; it is required when attribute CertificateThumbprint is specified.", |
339 | "The ExePackagePayload/@Hash attribute cannot be specified when attribute CertificateThumbprint is present." | ||
339 | }, result.Messages.Select(m => m.ToString()).ToArray()); | 340 | }, result.Messages.Select(m => m.ToString()).ToArray()); |
340 | Assert.Equal(10, result.ExitCode); | 341 | Assert.Equal(35, result.ExitCode); |
341 | } | 342 | } |
342 | } | 343 | } |
343 | 344 | ||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/RemotePayloadFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/RemotePayloadFixture.cs index 9336a635..fc105880 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/RemotePayloadFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/RemotePayloadFixture.cs | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | namespace WixToolsetTest.CoreIntegration | 3 | namespace WixToolsetTest.CoreIntegration |
4 | { | 4 | { |
5 | using System; | ||
5 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
6 | using System.IO; | 7 | using System.IO; |
7 | using System.Linq; | 8 | using System.Linq; |
@@ -59,9 +60,11 @@ namespace WixToolsetTest.CoreIntegration | |||
59 | }; | 60 | }; |
60 | WixAssert.StringEqual( | 61 | WixAssert.StringEqual( |
61 | "<root>" + | 62 | "<root>" + |
63 | "<BundlePackage>" + | ||
62 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | 64 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + |
63 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | 65 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + |
64 | "</BundlePackagePayload>" + | 66 | "</BundlePackagePayload>" + |
67 | "</BundlePackage>" + | ||
65 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); | 68 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); |
66 | 69 | ||
67 | // ExternalWithoutDownloadUrl | 70 | // ExternalWithoutDownloadUrl |
@@ -81,13 +84,15 @@ namespace WixToolsetTest.CoreIntegration | |||
81 | xml = File.ReadAllText(externalWithoutDownloadUrlOutFile); | 84 | xml = File.ReadAllText(externalWithoutDownloadUrlOutFile); |
82 | WixAssert.StringEqual( | 85 | WixAssert.StringEqual( |
83 | "<root>" + | 86 | "<root>" + |
87 | "<BundlePackage>" + | ||
88 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | ||
89 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | ||
90 | "</BundlePackagePayload>" + | ||
84 | "<Payload Name='External.cab' Hash='*' Size='*' />" + | 91 | "<Payload Name='External.cab' Hash='*' Size='*' />" + |
85 | "<Payload Name='test.msi' Hash='*' Size='*' />" + | 92 | "<Payload Name='test.msi' Hash='*' Size='*' />" + |
86 | "<Payload Name='test.txt' Hash='*' Size='*' />" + | 93 | "<Payload Name='test.txt' Hash='*' Size='*' />" + |
87 | "<Payload Name='Shared.dll' Hash='*' Size='*' />" + | 94 | "<Payload Name='Shared.dll' Hash='*' Size='*' />" + |
88 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | 95 | "</BundlePackage>" + |
89 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | ||
90 | "</BundlePackagePayload>" + | ||
91 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); | 96 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); |
92 | 97 | ||
93 | // External | 98 | // External |
@@ -107,14 +112,16 @@ namespace WixToolsetTest.CoreIntegration | |||
107 | xml = File.ReadAllText(externalOutFile); | 112 | xml = File.ReadAllText(externalOutFile); |
108 | WixAssert.StringEqual( | 113 | WixAssert.StringEqual( |
109 | "<root>" + | 114 | "<root>" + |
115 | "<BundlePackage>" + | ||
116 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | ||
117 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | ||
118 | "</BundlePackagePayload>" + | ||
110 | "<Payload Name='External.cab' Hash='*' Size='*' />" + | 119 | "<Payload Name='External.cab' Hash='*' Size='*' />" + |
111 | "<Payload Name='Windows8.1-KB2937592-x86.msu' Hash='*' Size='*' />" + | 120 | "<Payload Name='Windows8.1-KB2937592-x86.msu' Hash='*' Size='*' />" + |
112 | "<Payload Name='test.msi' Hash='*' Size='*' />" + | 121 | "<Payload Name='test.msi' Hash='*' Size='*' />" + |
113 | "<Payload Name='test.txt' Hash='*' Size='*' />" + | 122 | "<Payload Name='test.txt' Hash='*' Size='*' />" + |
114 | "<Payload Name='Shared.dll' Hash='*' Size='*' />" + | 123 | "<Payload Name='Shared.dll' Hash='*' Size='*' />" + |
115 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | 124 | "</BundlePackage>" + |
116 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | ||
117 | "</BundlePackagePayload>" + | ||
118 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); | 125 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); |
119 | 126 | ||
120 | // All | 127 | // All |
@@ -134,15 +141,17 @@ namespace WixToolsetTest.CoreIntegration | |||
134 | xml = File.ReadAllText(allOutFile); | 141 | xml = File.ReadAllText(allOutFile); |
135 | WixAssert.StringEqual( | 142 | WixAssert.StringEqual( |
136 | "<root>" + | 143 | "<root>" + |
144 | "<BundlePackage>" + | ||
145 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | ||
146 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | ||
147 | "</BundlePackagePayload>" + | ||
137 | "<Payload Name='External.cab' Hash='*' Size='*' />" + | 148 | "<Payload Name='External.cab' Hash='*' Size='*' />" + |
138 | "<Payload Name='signed_bundle_engine.exe' ProductName='~TestBundle' Description='~TestBundle' Hash='*' Size='*' Version='1.0.0.0' />" + | 149 | "<Payload Name='signed_bundle_engine.exe' ProductName='~TestBundle' Description='~TestBundle' Hash='*' Size='*' Version='1.0.0.0' />" + |
139 | "<Payload Name='Windows8.1-KB2937592-x86.msu' Hash='*' Size='*' />" + | 150 | "<Payload Name='Windows8.1-KB2937592-x86.msu' Hash='*' Size='*' />" + |
140 | "<Payload Name='test.msi' Hash='*' Size='*' />" + | 151 | "<Payload Name='test.msi' Hash='*' Size='*' />" + |
141 | "<Payload Name='test.txt' Hash='*' Size='*' />" + | 152 | "<Payload Name='test.txt' Hash='*' Size='*' />" + |
142 | "<Payload Name='Shared.dll' Hash='*' Size='*' />" + | 153 | "<Payload Name='Shared.dll' Hash='*' Size='*' />" + |
143 | "<BundlePackagePayload Name='test.exe' ProductName='DiversePayloadsBundle' Description='DiversePayloadsBundle' Hash='*' Size='*' Version='1.0.0.0'>" + | 154 | "</BundlePackage>" + |
144 | "<RemoteBundle BundleId='*' DisplayName='DiversePayloadsBundle' EngineVersion='*' InstallSize='3790116' ManifestNamespace='http://wixtoolset.org/schemas/v4/2008/Burn' PerMachine='yes' ProviderKey='*' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{FEF1D2B8-4737-4A2A-9F91-77F7294FB55B}' />" + | ||
145 | "</BundlePackagePayload>" + | ||
146 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); | 155 | "</root>", xml.GetFragmentTestXml(ignoreAttributesByElementName)); |
147 | } | 156 | } |
148 | } | 157 | } |
@@ -173,9 +182,11 @@ namespace WixToolsetTest.CoreIntegration | |||
173 | 182 | ||
174 | WixAssert.CompareLineByLine(new[] | 183 | WixAssert.CompareLineByLine(new[] |
175 | { | 184 | { |
176 | "<BundlePackagePayload Name='v3bundle.exe' ProductName='CustomV3Theme' Description='CustomV3Theme' DownloadUrl='https://www.example.com/files/v3bundle.exe' Hash='80739E7B8C31D75B4CDC48D60D74F5E481CB904212A3AE3FB0920365A163FBF32B0C5C175AB516D4124F107923E96200605DE1D560D362FEB47350FA727823B4' Size='648397' Version='1.0.0.0'>", | 185 | "<BundlePackage>", |
177 | " <RemoteBundle BundleId='{215A70DB-AB35-48C7-BE51-D66EAAC87177}' DisplayName='CustomV3Theme' InstallSize='1135' ManifestNamespace='http://schemas.microsoft.com/wix/2008/Burn' PerMachine='yes' ProviderKey='{215a70db-ab35-48c7-be51-d66eaac87177}' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{2BF4C01F-C132-4E70-97AB-2BC68C7CCD10}' />", | 186 | " <BundlePackagePayload Name='v3bundle.exe' ProductName='CustomV3Theme' Description='CustomV3Theme' DownloadUrl='https://www.example.com/files/{0}' Hash='80739E7B8C31D75B4CDC48D60D74F5E481CB904212A3AE3FB0920365A163FBF32B0C5C175AB516D4124F107923E96200605DE1D560D362FEB47350FA727823B4' Size='648397' Version='1.0.0.0'>", |
178 | "</BundlePackagePayload>", | 187 | " <RemoteBundle BundleId='{215A70DB-AB35-48C7-BE51-D66EAAC87177}' DisplayName='CustomV3Theme' InstallSize='1135' ManifestNamespace='http://schemas.microsoft.com/wix/2008/Burn' PerMachine='yes' ProviderKey='{215a70db-ab35-48c7-be51-d66eaac87177}' ProtocolVersion='1' Version='1.0.0.0' Win64='no' UpgradeCode='{2BF4C01F-C132-4E70-97AB-2BC68C7CCD10}' />", |
188 | " </BundlePackagePayload>", | ||
189 | "</BundlePackage>", | ||
179 | }, elements); | 190 | }, elements); |
180 | } | 191 | } |
181 | } | 192 | } |
@@ -205,7 +216,9 @@ namespace WixToolsetTest.CoreIntegration | |||
205 | 216 | ||
206 | WixAssert.CompareLineByLine(new[] | 217 | WixAssert.CompareLineByLine(new[] |
207 | { | 218 | { |
208 | @"<ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' DownloadUrl='https://www.example.com/files/burn.exe' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", | 219 | @"<ExePackage>", |
220 | @" <ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' DownloadUrl='https://www.example.com/files/{0}' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", | ||
221 | @"</ExePackage>", | ||
209 | }, elements); | 222 | }, elements); |
210 | } | 223 | } |
211 | } | 224 | } |
@@ -234,12 +247,76 @@ namespace WixToolsetTest.CoreIntegration | |||
234 | 247 | ||
235 | WixAssert.CompareLineByLine(new[] | 248 | WixAssert.CompareLineByLine(new[] |
236 | { | 249 | { |
237 | @"<MsuPackagePayload Name='Windows8.1-KB2937592-x86.msu' Hash='904ADEA6AB675ACE16483138BF3F5850FD56ACB6E3A13AFA7263ED49C68CCE6CF84D6AAD6F99AAF175A95EE1A56C787C5AD968019056490B1073E7DBB7B9B7BE' Size='309544' />", | 250 | @"<MsuPackage>", |
251 | @" <MsuPackagePayload Name='Windows8.1-KB2937592-x86.msu' Hash='904ADEA6AB675ACE16483138BF3F5850FD56ACB6E3A13AFA7263ED49C68CCE6CF84D6AAD6F99AAF175A95EE1A56C787C5AD968019056490B1073E7DBB7B9B7BE' Size='309544' />", | ||
252 | @"</MsuPackage>" | ||
238 | }, elements); | 253 | }, elements); |
239 | } | 254 | } |
240 | } | 255 | } |
241 | 256 | ||
242 | [Fact] | 257 | [Fact] |
258 | public void CanGetRemoteMsuPayloadWithCertificate() | ||
259 | { | ||
260 | var folder = TestData.Get(@"TestData"); | ||
261 | |||
262 | using (var fs = new DisposableFileSystem()) | ||
263 | { | ||
264 | var outputFolder = fs.GetFolder(); | ||
265 | var outFile = Path.Combine(outputFolder, "out.xml"); | ||
266 | var remotePayloadSourceFile = Path.Combine(outputFolder, "remotePayload.wxs"); | ||
267 | var intermediateFolder = Path.Combine(outputFolder, "obj"); | ||
268 | var bundleFile = Path.Combine(intermediateFolder, "out.exe"); | ||
269 | |||
270 | var result = WixRunner.Execute(new[] | ||
271 | { | ||
272 | "burn", "remotepayload", | ||
273 | "-usecertificate", | ||
274 | "-downloadUrl", "http://wixtoolset.org/{0}", | ||
275 | Path.Combine(folder, ".Data", "Windows8.1-KB2937592-x86.msu"), | ||
276 | "-o", outFile | ||
277 | }); | ||
278 | |||
279 | result.AssertSuccess(); | ||
280 | |||
281 | var elements = File.ReadAllLines(outFile); | ||
282 | elements = elements.Select(s => s.Replace("\"", "'")).ToArray(); | ||
283 | |||
284 | WixAssert.CompareLineByLine(new[] | ||
285 | { | ||
286 | @"<MsuPackage CacheId='904ADEA6AB675ACE16483138BF3F5850FD56ACB6E3A1108E2BA23632620C427C'>", | ||
287 | @" <MsuPackagePayload Name='Windows8.1-KB2937592-x86.msu' DownloadUrl='http://wixtoolset.org/{0}' CertificatePublicKey='A260A870BE1145ED71E2BB5AA19463A4FE9DCC41' CertificateThumbprint='108E2BA23632620C427C570B6D9DB51AC31387FE' Size='309544' />", | ||
288 | @"</MsuPackage>" | ||
289 | }, elements); | ||
290 | |||
291 | // Append required attributes to build. | ||
292 | elements[0] = elements[0].Replace(">", " KB='KB2937592' DetectCondition='test'>"); | ||
293 | |||
294 | var remotePayloadSourceText = "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>" + | ||
295 | " <Fragment>" + | ||
296 | " <PackageGroup Id='BundlePackages'>" + | ||
297 | String.Join(Environment.NewLine, elements) + | ||
298 | " </PackageGroup>" + | ||
299 | " </Fragment>" + | ||
300 | "</Wix>"; | ||
301 | |||
302 | File.WriteAllText(remotePayloadSourceFile, remotePayloadSourceText); | ||
303 | |||
304 | result = WixRunner.Execute(new[] | ||
305 | { | ||
306 | "build", | ||
307 | Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), | ||
308 | remotePayloadSourceFile, | ||
309 | "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), | ||
310 | "-bindpath", Path.Combine(folder, ".Data"), | ||
311 | "-intermediateFolder", intermediateFolder, | ||
312 | "-o", bundleFile | ||
313 | }); | ||
314 | |||
315 | result.AssertSuccess(); | ||
316 | } | ||
317 | } | ||
318 | |||
319 | [Fact(Skip = "Blocked by https://github.com/wixtoolset/issues/issues/5601 - Support RemotePayload for Payload elements")] | ||
243 | public void CanGetRemotePayloadWithCertificate() | 320 | public void CanGetRemotePayloadWithCertificate() |
244 | { | 321 | { |
245 | var folder = TestData.Get(@"TestData"); | 322 | var folder = TestData.Get(@"TestData"); |
@@ -248,11 +325,15 @@ namespace WixToolsetTest.CoreIntegration | |||
248 | { | 325 | { |
249 | var outputFolder = fs.GetFolder(); | 326 | var outputFolder = fs.GetFolder(); |
250 | var outFile = Path.Combine(outputFolder, "out.xml"); | 327 | var outFile = Path.Combine(outputFolder, "out.xml"); |
328 | var remotePayloadSourceFile = Path.Combine(outputFolder, "remotePayload.wxs"); | ||
329 | var intermediateFolder = Path.Combine(outputFolder, "obj"); | ||
330 | var bundleFile = Path.Combine(intermediateFolder, "out.exe"); | ||
251 | 331 | ||
252 | var result = WixRunner.Execute(new[] | 332 | var result = WixRunner.Execute(new[] |
253 | { | 333 | { |
254 | "burn", "remotepayload", | 334 | "burn", "remotepayload", |
255 | "-usecertificate", | 335 | "-usecertificate", |
336 | "-downloadUrl", "http://wixtoolset.org/{0}", | ||
256 | Path.Combine(folder, ".Data", "burn.exe"), | 337 | Path.Combine(folder, ".Data", "burn.exe"), |
257 | Path.Combine(folder, ".Data", "signed_cab1.cab"), | 338 | Path.Combine(folder, ".Data", "signed_cab1.cab"), |
258 | "-o", outFile | 339 | "-o", outFile |
@@ -265,9 +346,38 @@ namespace WixToolsetTest.CoreIntegration | |||
265 | 346 | ||
266 | WixAssert.CompareLineByLine(new[] | 347 | WixAssert.CompareLineByLine(new[] |
267 | { | 348 | { |
268 | @"<ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", | 349 | @"<ExePackage>", |
269 | @"<Payload Name='signed_cab1.cab' CertificatePublicKey='BBD1B48A37503767C71F455624967D406A5D66C3' CertificateThumbprint='DE13B4CE635E3F63AA2394E66F95C460267BC82F' Hash='D8D3842403710E1F6036A62543224855CADF546853933C2B17BA99D789D4347B36717687C022678A9D3DE749DFC1482DAAB92B997B62BB32A8A6828B9D04C414' Size='1585' />", | 350 | @" <ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' DownloadUrl='http://wixtoolset.org/{0}' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", |
351 | @" <Payload Name='signed_cab1.cab' DownloadUrl='http://wixtoolset.org/{0}' CertificatePublicKey='BBD1B48A37503767C71F455624967D406A5D66C3' CertificateThumbprint='DE13B4CE635E3F63AA2394E66F95C460267BC82F' Size='1585' />", | ||
352 | @"</ExePackage>", | ||
270 | }, elements); | 353 | }, elements); |
354 | |||
355 | elements[0] = elements[0].Replace(">", " Permanent='yes' DetectCondition='test'>"); | ||
356 | |||
357 | var remotePayloadSourceText = "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>" + | ||
358 | " <Fragment>" + | ||
359 | " <PackageGroup Id='BundlePackages'>" + | ||
360 | " <ExePackage CacheId='xyz'>" + | ||
361 | String.Join(Environment.NewLine, elements) + | ||
362 | " </ExePackage>" + | ||
363 | " </PackageGroup>" + | ||
364 | " </Fragment>" + | ||
365 | "</Wix>"; | ||
366 | |||
367 | File.WriteAllText(remotePayloadSourceFile, remotePayloadSourceText); | ||
368 | |||
369 | result = WixRunner.Execute(new[] | ||
370 | { | ||
371 | "build", | ||
372 | Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), | ||
373 | remotePayloadSourceFile, | ||
374 | "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), | ||
375 | "-bindpath", Path.Combine(folder, ".Data"), | ||
376 | "-intermediateFolder", intermediateFolder, | ||
377 | "-o", bundleFile | ||
378 | }); | ||
379 | |||
380 | result.AssertSuccess(); | ||
271 | } | 381 | } |
272 | } | 382 | } |
273 | 383 | ||
@@ -296,8 +406,10 @@ namespace WixToolsetTest.CoreIntegration | |||
296 | 406 | ||
297 | WixAssert.CompareLineByLine(new[] | 407 | WixAssert.CompareLineByLine(new[] |
298 | { | 408 | { |
299 | @"<ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", | 409 | @"<ExePackage>", |
300 | @"<Payload Name='signed_cab1.cab' Hash='D8D3842403710E1F6036A62543224855CADF546853933C2B17BA99D789D4347B36717687C022678A9D3DE749DFC1482DAAB92B997B62BB32A8A6828B9D04C414' Size='1585' />", | 410 | @" <ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", |
411 | @" <Payload Name='signed_cab1.cab' Hash='D8D3842403710E1F6036A62543224855CADF546853933C2B17BA99D789D4347B36717687C022678A9D3DE749DFC1482DAAB92B997B62BB32A8A6828B9D04C414' Size='1585' />", | ||
412 | @"</ExePackage>", | ||
301 | }, elements); | 413 | }, elements); |
302 | } | 414 | } |
303 | } | 415 | } |
@@ -319,6 +431,7 @@ namespace WixToolsetTest.CoreIntegration | |||
319 | "-du", "https://www.example.com/files/{0}", | 431 | "-du", "https://www.example.com/files/{0}", |
320 | Path.Combine(folder, ".Data", "burn.exe"), | 432 | Path.Combine(folder, ".Data", "burn.exe"), |
321 | Path.Combine(folder, "RemotePayload", "recurse", "*"), | 433 | Path.Combine(folder, "RemotePayload", "recurse", "*"), |
434 | "-basepath", Path.Combine(folder, "RemotePayload", "recurse"), | ||
322 | "-basepath", folder, | 435 | "-basepath", folder, |
323 | "-bp", Path.Combine(folder, ".Data"), | 436 | "-bp", Path.Combine(folder, ".Data"), |
324 | "-o", outFile | 437 | "-o", outFile |
@@ -331,10 +444,12 @@ namespace WixToolsetTest.CoreIntegration | |||
331 | 444 | ||
332 | WixAssert.CompareLineByLine(new[] | 445 | WixAssert.CompareLineByLine(new[] |
333 | { | 446 | { |
334 | @"<ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' DownloadUrl='https://www.example.com/files/burn.exe' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", | 447 | @"<ExePackage>", |
335 | @"<Payload Name='a.dat' DownloadUrl='https://www.example.com/files/RemotePayload/recurse/a.dat' Hash='D13926E5CBE5ED8B46133F9199FAF2FF25B25981C67A31AE2BC3F6C20390FACBFADCD89BD22D3445D95B989C8EACFB1E68DB634BECB5C9624865BA453BCE362A' Size='16' />", | 448 | @" <ExePackagePayload Name='burn.exe' ProductName='Windows Installer XML Toolset' Description='WiX Toolset Bootstrapper' DownloadUrl='https://www.example.com/files/{0}' Hash='F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E' Size='463360' Version='3.14.0.1703' />", |
336 | @"<Payload Name='b.dat' DownloadUrl='https://www.example.com/files/RemotePayload/recurse/subfolder/b.dat' Hash='5F94707BC29ADFE3B9615E6753388707FD0B8F5FD9EEEC2B17E21E72F1635FF7D7A101E7D14F614E111F263CB9AC4D0940BE1247881A7844F226D6C400293D8E' Size='37' />", | 449 | @" <Payload Name='a.dat' DownloadUrl='https://www.example.com/files/{0}' Hash='D13926E5CBE5ED8B46133F9199FAF2FF25B25981C67A31AE2BC3F6C20390FACBFADCD89BD22D3445D95B989C8EACFB1E68DB634BECB5C9624865BA453BCE362A' Size='16' />", |
337 | @"<Payload Name='c.dat' DownloadUrl='https://www.example.com/files/RemotePayload/recurse/subfolder/c.dat' Hash='97D6209A5571E05E4F72F9C6BF0987651FA03E63F971F9B53C2B3D798A666D9864F232D4E2D6442E47D9D72B282309B6EEFF4EE017B43B706FA92A0F5EF74734' Size='42' />", | 450 | @" <Payload Name='subfolder\b.dat' DownloadUrl='https://www.example.com/files/{0}' Hash='5F94707BC29ADFE3B9615E6753388707FD0B8F5FD9EEEC2B17E21E72F1635FF7D7A101E7D14F614E111F263CB9AC4D0940BE1247881A7844F226D6C400293D8E' Size='37' />", |
451 | @" <Payload Name='subfolder\c.dat' DownloadUrl='https://www.example.com/files/{0}' Hash='97D6209A5571E05E4F72F9C6BF0987651FA03E63F971F9B53C2B3D798A666D9864F232D4E2D6442E47D9D72B282309B6EEFF4EE017B43B706FA92A0F5EF74734' Size='42' />", | ||
452 | @"</ExePackage>" | ||
338 | }, elements); | 453 | }, elements); |
339 | } | 454 | } |
340 | } | 455 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/data/fakeba.dll b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/.Data/fakeba.dll index b3cf17d8..b3cf17d8 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/data/fakeba.dll +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/.Data/fakeba.dll | |||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/ExePackage/UseCertificateVerificationWithoutCacheId.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/ExePackage/UseCertificateVerificationWithoutCacheId.wxs new file mode 100644 index 00000000..49306479 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/ExePackage/UseCertificateVerificationWithoutCacheId.wxs | |||
@@ -0,0 +1,13 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
2 | <Bundle Name="BurnBundle" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="B94478B1-E1F3-4700-9CE8-6AA090854AEC"> | ||
3 | <BootstrapperApplication> | ||
4 | <BootstrapperApplicationDll SourceFile="fakeba.dll" /> | ||
5 | </BootstrapperApplication> | ||
6 | |||
7 | <Chain> | ||
8 | <ExePackage DetectCondition="DetectedTheMsu" UninstallArguments="-uninstall"> | ||
9 | <ExePackagePayload Name='foo.exe' DownloadUrl='http://wixtoolset.org' CertificatePublicKey="abc" CertificateThumbprint="123" Size='10' /> | ||
10 | </ExePackage> | ||
11 | </Chain> | ||
12 | </Bundle> | ||
13 | </Wix> | ||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/BundleUsingCertificateVerification.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/BundleUsingCertificateVerification.wxs new file mode 100644 index 00000000..dcae2cf8 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/BundleUsingCertificateVerification.wxs | |||
@@ -0,0 +1,13 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
2 | <Bundle Name="BurnBundle" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="B94478B1-E1F3-4700-9CE8-6AA090854AEC"> | ||
3 | <BootstrapperApplication> | ||
4 | <BootstrapperApplicationDll SourceFile="fakeba.dll" /> | ||
5 | </BootstrapperApplication> | ||
6 | |||
7 | <Chain> | ||
8 | <MsuPackage DetectCondition="DetectedTheMsu" KB="xyz" CacheId="8cf75b99-13c0-4184-82ce-dbde45dcd55a"> | ||
9 | <MsuPackagePayload Name='Windows8.1-KB2937592-x86.msu' DownloadUrl='http://wixtoolset.org' CertificatePublicKey="abc" CertificateThumbprint="123" Size='309544' /> | ||
10 | </MsuPackage> | ||
11 | </Chain> | ||
12 | </Bundle> | ||
13 | </Wix> | ||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/BundleUsingCertificateVerificationWithoutCacheId.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/BundleUsingCertificateVerificationWithoutCacheId.wxs new file mode 100644 index 00000000..f9282e37 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsuPackage/BundleUsingCertificateVerificationWithoutCacheId.wxs | |||
@@ -0,0 +1,13 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
2 | <Bundle Name="BurnBundle" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="B94478B1-E1F3-4700-9CE8-6AA090854AEC"> | ||
3 | <BootstrapperApplication> | ||
4 | <BootstrapperApplicationDll SourceFile="fakeba.dll" /> | ||
5 | </BootstrapperApplication> | ||
6 | |||
7 | <Chain> | ||
8 | <MsuPackage DetectCondition="DetectedTheMsu" KB="xyz" > | ||
9 | <MsuPackagePayload Name='Windows8.1-KB2937592-x86.msu' DownloadUrl='http://wixtoolset.org' CertificatePublicKey="abc" CertificateThumbprint="123" Size='309544' /> | ||
10 | </MsuPackage> | ||
11 | </Chain> | ||
12 | </Bundle> | ||
13 | </Wix> | ||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificate.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificate.wxs index b5dec9a2..bee56215 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificate.wxs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificate.wxs | |||
@@ -3,7 +3,7 @@ | |||
3 | <Fragment> | 3 | <Fragment> |
4 | <PackageGroup Id="BundlePackages"> | 4 | <PackageGroup Id="BundlePackages"> |
5 | <ExePackage Id="SpecifiedSourceFileAndHash" Permanent="yes" DetectCondition="none"> | 5 | <ExePackage Id="SpecifiedSourceFileAndHash" Permanent="yes" DetectCondition="none"> |
6 | <ExePackagePayload CertificatePublicKey="abcd" CertificateThumbprint="abcd" Hash="1234" DownloadUrl="https://example.com/" Name="fake.exe" Size="100" /> | 6 | <ExePackagePayload CertificatePublicKey="abcd" CertificateThumbprint="abcd" DownloadUrl="https://example.com/" Name="fake.exe" Size="100" /> |
7 | </ExePackage> | 7 | </ExePackage> |
8 | </PackageGroup> | 8 | </PackageGroup> |
9 | </Fragment> | 9 | </Fragment> |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificatePublicKeyWithoutThumbprint.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificatePublicKeyWithoutThumbprint.wxs index aa915a31..3694cd72 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificatePublicKeyWithoutThumbprint.wxs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/PackagePayload/SpecifiedCertificatePublicKeyWithoutThumbprint.wxs | |||
@@ -3,7 +3,7 @@ | |||
3 | <Fragment> | 3 | <Fragment> |
4 | <PackageGroup Id="BundlePackages"> | 4 | <PackageGroup Id="BundlePackages"> |
5 | <ExePackage Id="SpecifiedSourceFileAndHash" Permanent="yes" DetectCondition="none"> | 5 | <ExePackage Id="SpecifiedSourceFileAndHash" Permanent="yes" DetectCondition="none"> |
6 | <ExePackagePayload CertificatePublicKey="abcd" Hash="123" DownloadUrl="https://example.com/" Name="fake.exe" Size="100" /> | 6 | <ExePackagePayload CertificatePublicKey="abcd" DownloadUrl="https://example.com/" Name="fake.exe" Size="100" /> |
7 | </ExePackage> | 7 | </ExePackage> |
8 | </PackageGroup> | 8 | </PackageGroup> |
9 | </Fragment> | 9 | </Fragment> |