Skip to content

Commit

Permalink
Added all missing fields
Browse files Browse the repository at this point in the history
  • Loading branch information
Akinwale Alagbe committed Oct 18, 2023
1 parent 5d8b88e commit 695dbaa
Show file tree
Hide file tree
Showing 8 changed files with 367 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ private enum TestManifestVersion
{
V100,
V110,
V160,
}

/// <summary>
Expand All @@ -51,6 +52,11 @@ public void ReadV1ManifestsAndVerifyContents()
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "TestCollateral", ManifestStrings.V110ManifestMerged));

this.ValidateManifestFields(v110manifest, TestManifestVersion.V110);

Manifest v160manifest = Manifest.CreateManifestFromPath(
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "TestCollateral", ManifestStrings.V160ManifestMerged));

this.ValidateManifestFields(v160manifest, TestManifestVersion.V160);
}

/// <summary>
Expand Down Expand Up @@ -126,6 +132,7 @@ private void ValidateManifestFields(Manifest manifest, TestManifestVersion manif
Assert.Equal("Windows.Desktop", manifest.Platform[0]);
Assert.Equal("Windows.Universal", manifest.Platform[1]);
Assert.Equal("10.0.0.0", manifest.MinimumOSVersion);

Assert.Equal("zip", manifest.InstallerType);
Assert.Equal("machine", manifest.Scope);
Assert.Equal(3, manifest.InstallModes.Count);
Expand Down Expand Up @@ -193,9 +200,9 @@ private void ValidateManifestFields(Manifest manifest, TestManifestVersion manif
Assert.Equal("exe", manifest.AppsAndFeaturesEntries[0].InstallerType);
Assert.Single(manifest.Markets.AllowedMarkets);
Assert.Equal("US", manifest.Markets.AllowedMarkets[0]);
Assert.Single(manifest.ExpectedReturnCodes);
Assert.Equal(10, manifest.ExpectedReturnCodes[0].InstallerReturnCode);
Assert.Equal("packageInUse", manifest.ExpectedReturnCodes[0].ReturnResponse);
Assert.Equal(2, manifest.ExpectedReturnCodes.Count);
Assert.Equal(2, manifest.ExpectedReturnCodes[0].InstallerReturnCode);
Assert.Equal("contactSupport", manifest.ExpectedReturnCodes[0].ReturnResponse);
}

Assert.Equal(2, manifest.Installers.Count);
Expand Down Expand Up @@ -303,6 +310,26 @@ private void ValidateManifestFields(Manifest manifest, TestManifestVersion manif
Assert.Equal("Text", localization1.Agreements[0].Agreement);
Assert.Equal("https://AgreementUrl.net", localization1.Agreements[0].AgreementUrl);
}

if (manifestVersion >= TestManifestVersion.V160)
{
Assert.Equal("msi", manifest.NestedInstallerType);
Assert.Single(manifest.NestedInstallerFiles);

InstallerNestedInstallerFile installerNestedInstallerFile = manifest.NestedInstallerFiles[0];
Assert.Equal("RelativeFilePath", installerNestedInstallerFile.RelativeFilePath);
Assert.Equal("PortableCommandAlias", installerNestedInstallerFile.PortableCommandAlias);

InstallerInstallationMetadata installerInstallationMetadata = manifest.InstallationMetadata;
Assert.Equal("%ProgramFiles%\\TestApp", installerInstallationMetadata.DefaultInstallLocation);
Assert.Single(installerInstallationMetadata.Files);

ManifestInstallerFile installerFile = installerInstallationMetadata.Files[0];
Assert.Equal("main.exe", installerFile.RelativeFilePath);
Assert.Equal("DisplayName", installerFile.DisplayName);
Assert.Equal("/arg", installerFile.InvocationParameter);
Assert.Equal("69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82", installerFile.FileSha256);
}
}

/// <summary>
Expand All @@ -320,6 +347,11 @@ internal class ManifestStrings
/// </summary>
public const string V110ManifestMerged = "V1_1ManifestMerged.yaml";

/// <summary>
/// Merged v1.1 manifest.
/// </summary>
public const string V160ManifestMerged = "V1_6ManifestMerged.yaml";

/// <summary>
/// Merged v1 manifest without localization.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,11 @@ Dependencies:
Description: The MSIX SDK project is an effort to enable developers
ElevationRequirement: elevatesSelf
ExpectedReturnCodes:
- InstallerReturnCode: 10
ReturnResponse: packageInUse
- InstallerReturnCode: 2
ReturnResponse: contactSupport
- InstallerReturnCode: 3
ReturnResponse: custom
ReturnResponseUrl: https://defaultReturnResponseUrl.com
FileExtensions:
- appx
- msix
Expand Down
222 changes: 222 additions & 0 deletions src/WinGetUtilInterop.UnitTests/TestCollateral/V1_6ManifestMerged.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
PackageIdentifier: microsoft.msixsdk
PackageVersion: 1.7.32
PackageLocale: en-US
Publisher: Microsoft
PublisherUrl: https://www.microsoft.com
PublisherSupportUrl: https://www.microsoft.com/support
PrivacyUrl: https://www.microsoft.com/privacy
Author: Microsoft
PackageName: MSIX SDK
PackageUrl: https://www.microsoft.com/msixsdk/home
License: MIT License
LicenseUrl: https://www.microsoft.com/msixsdk/license
Copyright: Copyright Microsoft Corporation
CopyrightUrl: https://www.microsoft.com/msixsdk/copyright
ShortDescription: This is MSIX SDK
Description: The MSIX SDK project is an effort to enable developers
Moniker: msixsdk
Tags:
- "appxsdk"
- "msixsdk"
ReleaseNotes: Default release notes
ReleaseNotesUrl: https://DefaultReleaseNotes.net
PurchaseUrl: https://DefaultPurchaseUrl.com
InstallationNotes: Default installation notes
Documentations:
- DocumentLabel: Default document label
DocumentUrl: https://DefaultDocumentUrl.com
Icons:
- IconUrl: https://testIcon
IconFileType: ico
IconResolution: custom
IconTheme: default
IconSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8123
Agreements:
- AgreementLabel: DefaultLabel
Agreement: DefaultText
AgreementUrl: https://DefaultAgreementUrl.net
InstallerLocale: en-US
Platform:
- Windows.Desktop
- Windows.Universal
MinimumOSVersion: 10.0.0.0
InstallerType: zip
Scope: machine
InstallModes:
- interactive
- silent
- silentWithProgress
InstallerSwitches:
Custom: /custom
SilentWithProgress: /silentwithprogress
Silent: /silence
Interactive: /interactive
Log: /log=<LOGPATH>
InstallLocation: /dir=<INSTALLPATH>
Upgrade: /upgrade
InstallerSuccessCodes:
- 1
- 0x80070005
UpgradeBehavior: uninstallPrevious
Commands:
- makemsix
- makeappx
Protocols:
- protocol1
- protocol2
FileExtensions:
- appx
- msix
- appxbundle
- msixbundle
Dependencies:
WindowsFeatures:
- IIS
WindowsLibraries:
- VC Runtime
PackageDependencies:
- PackageIdentifier: Microsoft.MsixSdkDep
MinimumVersion: 1.0.0
ExternalDependencies:
- Outside dependencies
Capabilities:
- internetClient
RestrictedCapabilities:
- runFullTrust
PackageFamilyName: Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
ProductCode: "{Foo}"
ReleaseDate: 2021-01-01
InstallerAbortsTerminal: true
InstallLocationRequired: true
RequireExplicitUpgrade: true
DisplayInstallWarnings: true
ElevationRequirement: elevatesSelf
UnsupportedOSArchitectures:
- arm
AppsAndFeaturesEntries:
- DisplayName: DisplayName
DisplayVersion: DisplayVersion
Publisher: Publisher
ProductCode: ProductCode
UpgradeCode: UpgradeCode
InstallerType: exe
Markets:
AllowedMarkets:
- US
ExpectedReturnCodes:
- InstallerReturnCode: 2
ReturnResponse: contactSupport
- InstallerReturnCode: 3
ReturnResponse: custom
ReturnResponseUrl: https://defaultReturnResponseUrl.com
UnsupportedArguments:
- log
NestedInstallerType: msi
NestedInstallerFiles:
- RelativeFilePath: RelativeFilePath
PortableCommandAlias: PortableCommandAlias
InstallationMetadata:
DefaultInstallLocation: "%ProgramFiles%\\TestApp"
Files:
- RelativeFilePath: "main.exe"
FileSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82
FileType: launch
InvocationParameter: "/arg"
DisplayName: "DisplayName"
DownloadCommandProhibited: true
Localization:
- Agreements:
- Agreement: Text
AgreementLabel: Label
AgreementUrl: https://AgreementUrl.net
Author: Microsoft UK
Copyright: Copyright Microsoft Corporation UK
CopyrightUrl: https://www.microsoft.com/msixsdk/copyright/UK
Description: The MSIX SDK project is an effort to enable developers UK
License: MIT License UK
LicenseUrl: https://www.microsoft.com/msixsdk/license/UK
PackageLocale: en-GB
PackageName: MSIX SDK UK
PackageUrl: https://www.microsoft.com/msixsdk/home/UK
PrivacyUrl: https://www.microsoft.com/privacy/UK
Publisher: Microsoft UK
PublisherSupportUrl: https://www.microsoft.com/support/UK
PublisherUrl: https://www.microsoft.com/UK
ReleaseNotes: Release notes
ReleaseNotesUrl: https://ReleaseNotes.net
ShortDescription: This is MSIX SDK UK
Tags:
- appxsdkUK
- msixsdkUK
Installers:
- Architecture: x86
InstallerLocale: en-GB
Platform:
- Windows.Desktop
MinimumOSVersion: 10.0.1.0
InstallerType: msix
InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx86.msix
InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82
SignatureSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82
Scope: user
InstallModes:
- interactive
InstallerSwitches:
Custom: /c
SilentWithProgress: /sp
Silent: /s
Interactive: /i
Log: /l=<LOGPATH>
InstallLocation: /d=<INSTALLPATH>
Upgrade: /u
UpgradeBehavior: install
Commands:
- makemsixPreview
- makeappxPreview
Protocols:
- protocol1preview
- protocol2preview
FileExtensions:
- appxbundle
- msixbundle
- appx
- msix
Dependencies:
WindowsFeatures:
- PreviewIIS
WindowsLibraries:
- Preview VC Runtime
PackageDependencies:
- PackageIdentifier: Microsoft.MsixSdkDepPreview
MinimumVersion: 1.0.0
ExternalDependencies:
- Preview Outside dependencies
PackageFamilyName: Microsoft.DesktopAppInstallerPreview_8wekyb3d8bbwe
Capabilities:
- internetClientPreview
RestrictedCapabilities:
- runFullTrustPreview
ReleaseDate: 2021-02-02
InstallerAbortsTerminal: false
InstallLocationRequired: false
RequireExplicitUpgrade: false
DisplayInstallWarnings: false
ElevationRequirement: elevationRequired
UnsupportedArguments:
- location
UnsupportedOSArchitectures:
- arm64
Markets:
ExcludedMarkets:
- "US"
ExpectedReturnCodes:
- InstallerReturnCode: 2
ReturnResponse: contactSupport
DownloadCommandProhibited: false
- Architecture: x64
InstallerSha256: 69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82
InstallerUrl: https://www.microsoft.com/msixsdk/msixsdkx64.exe
InstallerType: exe
ProductCode: '{Bar}'
ManifestType: singleton
ManifestVersion: 1.6.0
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@
<None Update="TestCollateral\Test_yaml_without_bom.yaml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="TestCollateral\V1_6ManifestMerged.yaml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="xunit.runner.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
25 changes: 25 additions & 0 deletions src/WinGetUtilInterop/Manifest/V1/Manifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,32 @@ public class Manifest
/// Gets or sets the release notes in default locale.
/// </summary>
public string ReleaseNotes { get; set; }

/// <summary>
/// Gets or sets the manifest documentation.
/// </summary>
public ManifestDocumentation Documentation { get; set; }

/// <summary>
/// Gets or sets the manifest icon information.
/// </summary>
public ManifestIcon Icon { get; set; }

/// <summary>
/// Gets or sets the release notes url in default locale.
/// </summary>
public string ReleaseNotesUrl { get; set; }

/// <summary>
/// Gets or sets the purchase url of the package.
/// </summary>
public string PurchaseUrl { get; set; }

/// <summary>
/// Gets or sets the installation notes.
/// </summary>
public string InstallationNotes { get; set; }

// Installer fields

/// <summary>
Expand Down Expand Up @@ -317,6 +337,11 @@ public class Manifest
/// </summary>
public List<ManifestLocalization> Localization { get; set; }

/// <summary>
/// Gets or sets a value indicating whether the installer is prohibited from being downloaded for offline installation.
/// </summary>
public bool DownloadCommandProhibited { get; set; }

/// <summary>
/// Deserialize a stream reader into a Manifest object.
/// </summary>
Expand Down
26 changes: 26 additions & 0 deletions src/WinGetUtilInterop/Manifest/V1/ManifestDocumentation.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// -----------------------------------------------------------------------
// <copyright file="ManifestDocumentation.cs" company="Microsoft Corporation">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// -----------------------------------------------------------------------

namespace Microsoft.WinGetUtil.Models.V1
{
using System;
using System.Collections.Generic;
using System.Text;

public class ManifestDocumentation
{
/// <summary>
/// Gets or sets the document label.
/// </summary>
public string DocumentLabel { get; set; }

/// <summary>
/// Gets or sets the document url.
/// </summary>
public string DocumentUrl { get; set; }

}
}
Loading

0 comments on commit 695dbaa

Please sign in to comment.