buildMsixPackage function
Future<({String outputPath, String packageRoot})>
buildMsixPackage({
- required String arch,
- required ArtifactPayload payload,
- required MsixConfig config,
- required MsixIdentity identity,
- required String version,
- required String repoRoot,
- required String outputPath,
- required String packageRoot,
Builds an MSIX package from a prebuilt executable or directory payload.
Implementation
Future<({String outputPath, String packageRoot})> buildMsixPackage({
required String arch,
required ArtifactPayload payload,
required MsixConfig config,
required MsixIdentity identity,
required String version,
required String repoRoot,
required String outputPath,
required String packageRoot,
}) async {
if (version.contains('-')) {
throw ShipworldException(
'Prerelease versions cannot be packaged for MSIX: $version',
);
}
final resolvedPackageRoot = _resolveRepoPath(repoRoot, packageRoot);
final resolvedOutputPath = _resolveRepoPath(repoRoot, outputPath);
await _removeDirectory(resolvedPackageRoot);
await Directory(resolvedPackageRoot).create(recursive: true);
await Directory(p.dirname(resolvedOutputPath)).create(recursive: true);
await payload.stage(resolvedPackageRoot);
await File(p.join(resolvedPackageRoot, 'AppxManifest.xml')).writeAsString(
buildMsixManifest(
arch: arch,
identity: identity,
version: convertVersionToMsixVersion(version),
config: config,
),
);
await _writeMsixAssets(p.join(resolvedPackageRoot, 'Assets'));
await _createPriFile(resolvedPackageRoot);
final makeAppxPath = await _findWindowsSdkTool('makeappx');
await runInherited(makeAppxPath, [
'pack',
'/v',
'/o',
'/h',
'SHA256',
'/d',
resolvedPackageRoot,
'/p',
resolvedOutputPath,
], workingDirectory: repoRoot);
return (outputPath: resolvedOutputPath, packageRoot: resolvedPackageRoot);
}