# Interface MNativePackagerServiceType

All Known Implementing Classes:
  `MNPackagerAbstract`, `MNPackagerAppImage`, `MNPackagerDeb`, `MNPackagerFlatpak`, `MNPackagerMSI`, `MNPackagerShell`

public interface MNativePackagerServiceType
A service capable of producing a native package.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `describe()`
  `Path`
  `execute(MNativeWorkspaceType workspace, MPackageReaderType packageV)`
  Execute the packaging service.
  `com.io7m.lanark.core.RDottedName`
  `name()`
  `Optional<com.io7m.seltzer.api.SStructuredErrorType<String>>`
  `unsupportedReason(Optional<MPackageDeclaration> packageV)`
  Determine if the service can run on the current platform, and return the reason why it cannot (if it cannot).

- ## Method Details

  - ### name

    com.io7m.lanark.core.RDottedName name()
    Returns:
      The name of the packager

  - ### describe

    String describe()
    Returns:
      A description of the service

  - ### unsupportedReason

    Optional<com.io7m.seltzer.api.SStructuredErrorType<String>> unsupportedReason(Optional<MPackageDeclaration> packageV) throws InterruptedException
    Determine if the service can run on the current platform, and return the reason why it cannot (if it cannot). Some services are unable to run outside specific platforms. For example, producing Windows MSI installers is limited to Windows platforms due to the requirement to run the Windows-only WiX toolkit.
    Parameters:
      `packageV` - The package declaration
    Returns:
      The reason that this service is unsupported
    Throws:
      `InterruptedException` - On interruption

  - ### execute

    Path execute(MNativeWorkspaceType workspace, MPackageReaderType packageV) throws MException
    Execute the packaging service.
    Parameters:
      `workspace` - The workspace
      `packageV` - The package
    Returns:
      The output file
    Throws:
      `MException` - On errors