buildMsixManifest function

String buildMsixManifest({
  1. required String arch,
  2. required MsixIdentity identity,
  3. required String version,
  4. required MsixConfig config,
})

Implementation

String buildMsixManifest({
  required String arch,
  required MsixIdentity identity,
  required String version,
  required MsixConfig config,
}) {
  final displayName = identity.displayName ?? config.displayName;

  return '''
<?xml version="1.0" encoding="utf-8"?>
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap uap5 uap10 desktop4 rescap">
  <Identity
    Name="${_escapeXml(identity.identityName)}"
    Publisher="${_escapeXml(identity.publisher)}"
    Version="${_escapeXml(version)}"
    ProcessorArchitecture="$arch" />
  <Properties>
    <DisplayName>${_escapeXml(displayName)}</DisplayName>
    <PublisherDisplayName>${_escapeXml(identity.publisherDisplayName)}</PublisherDisplayName>
    <Logo>Assets\\StoreLogo.png</Logo>
  </Properties>
  <Resources>
    <Resource Language="${_escapeXml(config.defaultLanguage)}" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily
      Name="Windows.Desktop"
      MinVersion="${_escapeXml(config.minWindowsVersion)}"
      MaxVersionTested="${_escapeXml(config.maxTestedWindowsVersion)}" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust" />
  </Capabilities>
  <Applications>
    <Application
      Id="${_escapeXml(config.applicationId)}"
      Executable="${_escapeXml(config.executableName)}"
      EntryPoint="Windows.FullTrustApplication"
      uap10:RuntimeBehavior="packagedClassicApp"
      uap10:TrustLevel="mediumIL"
      desktop4:SupportsMultipleInstances="true">
      <uap:VisualElements
        DisplayName="${_escapeXml(displayName)}"
        Description="${_escapeXml(config.description)}"
        Square150x150Logo="Assets\\Square150x150Logo.png"
        Square44x44Logo="Assets\\Square44x44Logo.png"
        BackgroundColor="${_escapeXml(config.backgroundColor)}" />
      <Extensions>
        <uap5:Extension Category="windows.appExecutionAlias">
          <uap5:AppExecutionAlias desktop4:Subsystem="console">
            <uap5:ExecutionAlias Alias="${_escapeXml(config.executableName)}" />
          </uap5:AppExecutionAlias>
        </uap5:Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>
''';
}