Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing manifest fields #3757

Merged
merged 4 commits into from
Oct 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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,71 @@ 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.Equal("Default installation notes", manifest.InstallationNotes);
Assert.Equal("https://DefaultPurchaseUrl.com", manifest.PurchaseUrl);

Assert.True(manifest.DisplayInstallWarnings);
Assert.True(manifest.DownloadCommandProhibited);

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);

Assert.Single(manifest.Documentations);
ManifestDocumentation manifestDocumentation = manifest.Documentations[0];

Assert.Equal("Default document label", manifestDocumentation.DocumentLabel);
Assert.Equal("https://DefaultDocumentUrl.com", manifestDocumentation.DocumentUrl);

Assert.Single(manifest.Icons);
ManifestIcon icon = manifest.Icons[0];

Assert.Equal("69D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8123", icon.IconSha256);
Assert.Equal("default", icon.IconTheme);
Assert.Equal("https://testIcon", icon.IconUrl);
Assert.Equal("custom", icon.IconResolution);
Assert.Equal("ico", icon.IconFileType);

Assert.Single(manifest.UnsupportedArguments);
Assert.Equal("log", manifest.UnsupportedArguments[0]);

Assert.Single(manifest.UnsupportedOSArchitectures);
Assert.Equal("arm", manifest.UnsupportedOSArchitectures[0]);

Assert.Single(installer1.InstallationMetadata.Files);
ManifestInstallerFile installerFile2 = installer1.InstallationMetadata.Files[0];
Assert.Equal("main2.exe", installerFile2.RelativeFilePath);
Assert.Equal("DisplayName2", installerFile2.DisplayName);
Assert.Equal("/arg2", installerFile2.InvocationParameter);
Assert.Equal("79D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82", installerFile2.FileSha256);

Assert.Equal("msi", installer1.NestedInstallerType);

InstallerNestedInstallerFile installerNestedInstallerFile2 = installer1.NestedInstallerFiles[0];
Assert.Equal("RelativeFilePath2", installerNestedInstallerFile2.RelativeFilePath);
Assert.Equal("PortableCommandAlias2", installerNestedInstallerFile2.PortableCommandAlias);

Assert.Single(installer1.UnsupportedArguments);
Assert.Equal("location", installer1.UnsupportedArguments[0]);

Assert.True(installer1.DisplayInstallWarnings);
Assert.True(installer1.DownloadCommandProhibited);
}
}

/// <summary>
Expand All @@ -320,6 +392,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
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
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
NestedInstallerFiles:
- RelativeFilePath: RelativeFilePath2
PortableCommandAlias: PortableCommandAlias2
RequireExplicitUpgrade: false
DisplayInstallWarnings: true
ElevationRequirement: elevationRequired
NestedInstallerType: msi
UnsupportedArguments:
- location
UnsupportedOSArchitectures:
- arm64
Markets:
ExcludedMarkets:
- "US"
ExpectedReturnCodes:
- InstallerReturnCode: 2
ReturnResponse: contactSupport
DownloadCommandProhibited: true
InstallationMetadata:
DefaultInstallLocation: "%ProgramFiles%\\TestApp"
Files:
- RelativeFilePath: "main2.exe"
FileSha256: 79D84CA8899800A5575CE31798293CD4FEBAB1D734A07C2E51E56A28E0DF8C82
FileType: launch2
InvocationParameter: "/arg2"
DisplayName: "DisplayName2"
- 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
Loading
Loading