Skip to content

Commit

Permalink
Merge pull request #109 from HevelMc/main
Browse files Browse the repository at this point in the history
enable_at_startup (StartupTask) extension
  • Loading branch information
YehudaKremer authored Mar 2, 2022
2 parents c3305dd + c8837ff commit b5ede74
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 1 deletion.
10 changes: 9 additions & 1 deletion lib/src/appxManifest.dart
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,14 @@ class AppxManifest {
if (_config.addExecutionAlias ||
!_config.protocolActivation.isNull ||
!_config.fileExtension.isNull ||
!_config.toastActivatorCLSID.isNull) {
!_config.toastActivatorCLSID.isNull ||
_config.enableAtStartup) {
return '''<Extensions>
${_config.addExecutionAlias ? _getAppExecutionAliasExtension() : ''}
${!_config.protocolActivation.isNull ? _getProtocolActivationExtension() : ''}
${!_config.fileExtension.isNull ? _getFileAssociationsExtension() : ''}
${!_config.toastActivatorCLSID.isNull ? _getToastNotificationActivationExtension() : ''}
${_config.enableAtStartup ? _getStartupTaskExtension() : ''}
</Extensions>''';
} else {
return '';
Expand Down Expand Up @@ -142,6 +144,12 @@ class AppxManifest {
</desktop:Extension>''';
}

String _getStartupTaskExtension() {
return '''<desktop:Extension Category="windows.startupTask" Executable="${_config.executableFileName.toHtmlEscape()}" EntryPoint="Windows.FullTrustApplication">
<desktop:StartupTask TaskId="${_config.appName!.replaceAll('_', '')}" Enabled="true" DisplayName="${_config.displayName.toHtmlEscape()}"/>
</desktop:Extension>''';
}

String _normalizeCapability(String capability) {
capability = capability.trim();
var firstLetter = capability.substring(0, 1).toLowerCase();
Expand Down
5 changes: 5 additions & 0 deletions lib/src/configuration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class Configuration {
bool trimLogo = true;
bool addExecutionAlias = false;
bool createWithDebugBuildFiles = false;
bool enableAtStartup = false;
Iterable<String>? languages;
String get defaultsIconsFolderPath => '$msixAssetsPath/icons';
String get msixToolkitPath => '$msixAssetsPath/MSIX-Toolkit';
Expand Down Expand Up @@ -122,7 +123,10 @@ class Configuration {
architecture = _args['architecture'] ?? yaml['architecture'];
capabilities = _args['capabilities'] ?? yaml['capabilities'];
languages = _getLanguages(yaml);
enableAtStartup = _args.wasParsed('enable-at-startup') ||
yaml['enable_at_startup']?.toString().toLowerCase() == 'true';

print('enableAtStartup: $enableAtStartup');
// toast activator configurations
var toastActivatorYaml = yaml['toast_activator'] ?? YamlMap();

Expand Down Expand Up @@ -288,6 +292,7 @@ class Configuration {
..addOption('build-windows')
..addFlag('store')
..addFlag('add-execution-alias')
..addFlag('enable-at-startup')
..addFlag('debug')
..addFlag('release')
..addFlag('automatic-background-task')
Expand Down
19 changes: 19 additions & 0 deletions test/appxManifest_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,25 @@ void main() {
true);
});

test('executableFileName with enableAtStartup is valid', () async {
var testValue = 'executableFileName_test123';
await AppxManifest(
config
..executableFileName = testValue
..enableAtStartup = true,
log)
.generateAppxManifest();

expect(
(await File('$tempFolderPath/AppxManifest.xml').readAsLines())
.where((line) => line.contains('Executable="$testValue"'))
.length,
2);
expect(
(await File('$tempFolderPath/AppxManifest.xml').readAsString()).contains(
'<desktop:Extension Category="windows.startupTask" Executable="$testValue"'),
true);
});
test('capabilities is valid', () async {
var testValue = 'videosLibrary,microphone, documentsLibrary';
await AppxManifest(config..capabilities = testValue, log)
Expand Down

0 comments on commit b5ede74

Please sign in to comment.