diff options
Diffstat (limited to '')
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> |
