From 1c2038be1fdffdf00c3cf38745a23643e33bd539 Mon Sep 17 00:00:00 2001 From: "Painter, Christopher P" Date: Tue, 19 Dec 2023 19:50:32 -0600 Subject: [PATCH] Heatwave Build Tools Schemas Add HBT schemas to IsWiX. Step 1 of HBT support. --- Application/IsWiX/IsWiX.csproj | 8 + Application/IsWiX/Schemas/fg4_hbt.xsd | 623 ++++++++++++++ Application/IsWiX/Schemas/fg4_hbt_msix.xsd | 951 +++++++++++++++++++++ Installer/IsWiX/IsWiXLib.wxs | 6 + 4 files changed, 1588 insertions(+) create mode 100644 Application/IsWiX/Schemas/fg4_hbt.xsd create mode 100644 Application/IsWiX/Schemas/fg4_hbt_msix.xsd diff --git a/Application/IsWiX/IsWiX.csproj b/Application/IsWiX/IsWiX.csproj index 50fdb6e..641bfad 100644 --- a/Application/IsWiX/IsWiX.csproj +++ b/Application/IsWiX/IsWiX.csproj @@ -29,6 +29,8 @@ + + @@ -65,6 +67,12 @@ Always + + Always + + + Always + Always diff --git a/Application/IsWiX/Schemas/fg4_hbt.xsd b/Application/IsWiX/Schemas/fg4_hbt.xsd new file mode 100644 index 0000000..67078de --- /dev/null +++ b/Application/IsWiX/Schemas/fg4_hbt.xsd @@ -0,0 +1,623 @@ + + + + + + HeatWave Build Tools schema + + + + + + + + + Installs and uninstalls kernel and file system drivers. + + + + + + + + + + + Ordered list of dependencies for the driver. + + + + + + + + Unique identifier for this driver configuration. This value will generated if not specified. + + + + + + + Name to register with the service control manager. + + + + + + The localizable string that user interface programs use to identify the driver. + + + + + + + + + A kernel driver. + + + + + A file system driver. + + + + + + + + + Determines when the driver should be started. + + + + + + The driver will start during startup of the system. + + + + + The driver will start when the service control manager calls the StartService function. + + + + + The driver can no longer be started. + + + + + A device driver that will be started by the operating system boot loader. + + + + + A device driver that will be started by the IoInitSystem function. + + + + + + + + + Determines what action should be taken on an error. + + + + + + Logs the error and continues with the startup operation. + + + + + Logs the error, displays a message box and continues the startup operation. + + + + + The startup program logs the error in the event log, if possible. If the last-known-good configuration is being started, the startup operation fails. Otherwise, the system is restarted with the last-known good configuration. + + + + + The startup program logs the error in the event log. If the last-known-good configuration is being started, the startup operation continues. Otherwise, the system is restarted with the last-known-good configuration. + + + + + + + + + The load ordering group that this driver should be a part of. + + + + + + A formatted property that resolves to the path of the driver binary. + + + + + + + + + Driver or load ordering group that must start before the parent driver. + + + + + + + The value of this attribute should be one of the following: + + The name (not the display name) of a previously installed driver. + The name of a load ordering group (in which case the Group attribute must be set to 'yes'). + + + + + + + + Set to 'yes' to indicate that the value in the Name attribute is the name of a load ordering group. + + + + + + + + Harvest a file and exclude it from future harvesting. + + + + + + + + + + Exclude specified registry keys found during self-reg harvesting. + + + + + + + + File path to harvest relative to the harvesting document. + + + + + + + Sets the File/@Id for the key harvested file. This value will generated if not specified. + + + + + + Capture self-registration for executable files during harvesting. Self-reg is only attempted when the attribute is set to 'yes'. The default is 'no'. + + + + + + Whitespace separated list of file extensions to capture self-registration. Ignored unless SelfReg attribute is 'yes'. Default set of extensions is: .exe, .com, .dll, .ocx, .tlb, .olb + + + + + + Command-line arguments to pass to an executable when capturing self-registration. Ignored unless SelfReg attribute is 'yes'. + + + + + + Downgrade error messages encountered during self-registration capture to warnings. Ignored unless SelfReg attribute is 'yes'. The default is 'no'. + + + + + + Prevent automatically marking ".ttf" and ".otf" files as a font. The default is 'no'. + + + + + + + + Harvest files from a folder. + + + + + + + + + + Exclude files from the harvesting. + + + + + Exclude specified registry keys found during self-reg harvesting. + + + + + + + + Unique identifier for this harvest configuration. This value will generated if not specified. + + + + + + + + Root of folder to harvest relative to the harvesting document. If no wildcards are specified all files under the root are harvested. If any wildcard + is specified only files matching the wildcard are included. For example, "content\*.dat" will include all .dat files from the "content" folder beside + the .wxs file. + + + + + + + Capture self-registration for executable files during harvesting. Self-reg is only attempted when the attribute is set to 'yes'. The default is 'no'. + + + + + + Whitespace separated list of file extensions to capture self-registration. Ignored unless SelfReg attribute is 'yes'. Default set of extensions is: .exe, .com, .dll, .ocx, .tlb, .olb + + + + + + Command-line arguments to pass to an executable when capturing self-registration. Ignored unless SelfReg attribute is 'yes'. + + + + + + Downgrade error messages encountered during self-registration capture to warnings. Ignored unless SelfReg attribute is 'yes'. The default is 'no'. + + + + + + Harvest strategy to apply. + + + + + + Prevent automatically marking ".ttf" files as a font. The default is 'no'. + + + + + + + + Harvest a payload and exclude it from future harvesting. + + + + + + + + + + + + + Extensibility point for extension elements. + + + + + + + + + File path to harvest relative to the harvesting document. + + + + + + + + Unique identifier for this harvest configuration. This value will generated if not specified. + + + + + + + Indicates whether the harvested payload is the entry point for the Bundle UI. The default is 'no'. + + + + + + Optional file name for the payload. By default the file name from the Source attribute will be used. + + + + + + + + Harvest payloads from a folder. + + + + + + + + + + + + Exclude files from the harvesting. + + + + + + Extensibility point for extension elements. + + + + + + + + + Unique identifier for this harvest configuration. This value will generated if not specified. + + + + + + + + Root of folder to harvest relative to the harvesting document. If no wildcards are specified all files under the root are harvested. If any wildcard + is specified only files matching the wildcard are included. For example, "content\*.dat" will include all .dat files from the "content" folder beside + the .wxs file. + + + + + + + + + Harvest files from a project's output groups. + + + + + + + + + + Exclude files from the harvesting. + + + + + Exclude specified registry keys found during self-reg harvesting. + + + + + + + + Identifier of the project to harvest as displayed by Visual Studio. Typically this is the filename of the referenced project but can be overridden using the HarvestId metadata on the project reference. The project must be referenced by this setup project. + + + + + + + + By default all files from the project reference are harvested. A semicolon, comma or space delimited list of project output groups can reduce the files harvested. Common output groups include: + BuiltProjectOutputGroup, + BuiltProjectOutputGroupDependencies, + DebugSymbolsProjectOutputGroup, + DebugSymbolsProjectOutputGroupDependencies, + DocumentationProjectOutputGroup, + DocumentationProjectOutputGroupDependencies, + SatelliteDllsProjectOutputGroup, + SatelliteDllsProjectOutputGroupDependencies, + SGenFilesOutputGroup, + SGenFilesOutputGroupDependencies, + SourceFilesProjectOutputGroup, + and ContentFilesProjectOutputGroup + + + + + + + Capture self-registration for executable files during harvesting. Self-reg is only attempted when the attribute is set to 'yes'. The default is 'no'. + + + + + + Whitespace separated list of file extensions to capture self-registration. Ignored unless SelfReg attribute is 'yes'. Default set of extensions is: .exe, .com, .dll, .ocx, .tlb, .olb + + + + + + Command-line arguments to pass to an executable when capturing self-registration. Ignored unless SelfReg attribute is 'yes'. + + + + + + Downgrade error messages encountered during self-registration capture to warnings. Ignored unless SelfReg attribute is 'yes'. The default is 'no'. + + + + + + Harvest strategy to apply. + + + + + + Prevent automatically marking ".ttf" files as a font. The default is 'no'. + + + + + + + + Exclude files from a harvesting. + + + + + + Full path or wildcard of files to exclude from a harvesting. For example, to exclude all .pdb files from harvesting use: Files="**\*.pdb" + + + + + + + + Exclude specified registry keys found during self-reg harvesting. + + + + + + Root of the registry keys to excluded. The standard Windows Installer registry roots are supported: "HKCR", "HKCU", "HKMU", "HKLM" + + + + + + Full path or wildcard of registry keys to exclude from self-reg harvesting. For example, to exclude everything under a registry key from harvesting use: Key="SOFTWARE\FireGiant\Ignore\**" + + + + + + Name or partial name with wildcard of registry values to exclude from a harvesting. If this attribute is not specified, the default is "*" which matches all registry value names in a key. + + + + + + Registry value or partial value with wildcard of registry values to exclude from a harvesting. If this attribute is not specified, the default is "**" which matches all registry values (including values with backslashes, like file paths) of a registry name in a key. + + + + + + + + + Configures a service as a protected service. + + + + + + + + + + + Name of the service. If specified, the ids of the user-defined custom actions required to unprotect the service will have this name appended. + The name of the service as specified in the ServiceInstall element will be used when protecting the service so this attribute can + be omitted if not needed to distinguish the unprotect custom actions for multiple services. + + + + + + Id of driver file with ELAM certificate info. + + + + + + + + Values of this type will either be "default", "singleFileComponents" or "contentFileComponentsWithGeneratedKeyPath". + + + + + + + Values of this type will either be "default", "singleFileComponents" or "contentFileComponentsWithGeneratedKeyPath". + + + + + + + + + + + A type that represents that 1 or more preprocessor variables (as they appear in sources on disk, before preprocessor has run). + + + + + + + + + Values of this type will be "HKCR", "HKCU", "HKMU" or "HKLM". + + + + + + + Values of this type will be "HKCR", "HKCU", "HKMU" or "HKLM". + + + + + + + + + diff --git a/Application/IsWiX/Schemas/fg4_hbt_msix.xsd b/Application/IsWiX/Schemas/fg4_hbt_msix.xsd new file mode 100644 index 0000000..a618259 --- /dev/null +++ b/Application/IsWiX/Schemas/fg4_hbt_msix.xsd @@ -0,0 +1,951 @@ + + + + + + HeatWave Build Tools for MSIX schema + + + + + + + + + Metadata required to create a package. + + + + + + + + + + + + Identity of the MSIX package. + + + + + + + Whitespace-delimited list of required package capabilities. Valid values are: + internetClient, + internetClientServer, + privateNetworkClientServer, + allJoyn, + codeGeneration, + documentsLibrary, + picturesLibrary, + videosLibrary, + musicLibrary, + enterpriseAuthentication, + sharedUserCertificates, + userAccountInformation, + removableStorage, + appointments, + contacts, + phoneCall, + blockedChatMessages, + objects3D, + voipCall, + chat, + phoneCallHistoryPublic, + spatialPerception, + backgroundMediaPlayback, + userNotificationListener, + remoteSystem, + offlineMapsManagement, + userDataTasks, + location, + microphone, + proximity, + webcam + + + + + + + Overrides the description provided by the 'ARPCOMMENTS' Property. It is recommended to use the 'ARPCOMMENTS' Property instead of using this attribute. + + + + + + Overrides the display name provided by the Package/@Name. It is not recommended to use this attribute. + + + + + + The MSIX package name (aka: Msix/@Id) of the parent package. Use this only when this package is to be referenced by a sparse bundle. + + + + + + Overrides the manufacturer provided by the Package/@Manufacturer. It is not recommended to use this attribute. + + + + + + Minimum OS version this package supports. If not specified, it will default to Windows 10 Anniversary Update for desktop packages and Windows Server 2016 for server packages. + + + + + + Maximum OS version this package has been tested against. If not specified, it will default to the minimum OS supported. + + + + + + Overrides the package icon provided by the 'ARPPRODUCTICON' with a path to a image file. It is recommended to use the 'ARPPRODUCTICON' Property instead of using this attribute. + + + + + + Publisher of the MSIX package. Must be in the form of a certificate name, e.g. CN=FireGiant. + + + + + + Target device family for the MSIX package. + + + + + + Overrides the version provided by the Package/@Version. It is not recommended to use this attribute. + + + + + + + + + Defines an Application in a package. Alternative to using the Application attribute on the File element. + + + + + + + + + + + + + + Optional pre-installed config task specification. + + + + + Optional tile specification. + + + + + Optional update task specification. + + + + + + + Identity of the Application in the MSIX package. + + + + + + Overrides the calculated description of the Application. This attribute is intended to be used only when a Shortcut's description must be different from the MSIX Application description. + + + + + + Overrides the calculated display name of the Application. This attribute is intended to be used only when a Shortcut's name must be different from the MSIX Application display name. + + + + + + The File/@Id of executable entry point for the MSIX Application. This attribute will default to the parent File element. Otherwise the attribute must be specified. + + + + + + Sets the Application as the primary Application in the MSIX package. The primary Application's logo and name is visible at some places in Windows 10 instead of the MSIX package logo and name. + + + + + + + + + Metadata required to add a dependency on a package. + + + + + + + + + + + + Identity of the MSIX package to depend upon. + + + + + + An integer indicating the highest major version of the dependency tested with this package. + + + + + + Indicates whether the dependency is optional (yes) or required (no). + + + + + + Publisher of the MSIX package to depend upon. + + + + + + Version of the MSIX package to depend upon. + + + + + + + + + Additional configuration and overrides for an Application's tile when a Shortcut element does not provide enough control. + + + + + + + Optional path to an image for app list icon (44x44). + + + + + + Optional background color for the tile. + + + + + + Optional path to an image for large (310x310) tile logo. + + + + + + Optional path to an image for medium (150x150) tile logo. + + + + + + Optional short display name of the application to be displayed on the Application's tile. Max length is 40 characters. + + + + + + Whitespace-delimited list of tile sizes. Valid values are: medium, large, wide. + + + + + + Optional path to an image for small (71x71) tile logo. + + + + + + Optional background color for splash screen. The SplashScreenImageSource attribute must also be specified when using this attribute. + + + + + + Optional path to an image for splash screen (620x200). + + + + + + Optional path to an image for wide (310x150) tile logo. + + + + + + + + + Defines a desktop app migration. + + + + + + + + + + + + Extensibility point for extension elements. + + + + + + + + Identifies the URI that a tile or pin will be migrated to. + + + + + + The AUMID (application user model id) of the desktop app. Required if ShortcutPath attribute is not present. + + + + + + Relative path to the shortcut to migrate from. Required if AumId attribute is not present. + + + + + + + + + Defines a URI handler. + + + + + + + + + + + + Extensibility point for extension elements. + + + + + + + + The host name that should instead launch the app. + + + + + + Command-line arguments used when launching the app from a URI. + + + + + + + + + Defines an out-of-process activatable class server. + + + + + + + + + + + + + + Command-line arguments for server process. + + + + + + Instancing model for server process: singleInstance or multipleInstances. + + + + + + Name of server. + + + + + + + + + Defines an activatable class. + + + + + + + + + + + Activatable class id. + + + + + + Threading model for in-process server: STA, MTA, or Both. Required for in-process activatable class. Prohibited for out-of-process activatable class. + + + + + + + + + Defines an application printer. + + + + + + + + + + The name for the printer queue. + + + + + + The file to print. + + + + + + + + + Defines an application contracts as a way for an app to invoke a background task belonging to another app; or for a background task invoked to service an app contract a way to communicate with its caller. + + + + + + + + + + Entry point in application. + + + + + + The service name (used to match the caller of the Application Contract with the provider). + + + + + + The COM server to be instantiated to satisfy the contract activation (ensures that only one instance of the server exists at runtime). This is an optional attribute that is only used for PPLE host processes. + + + + + + Supports multiple, separate instances of an app service. + + + + + + + + + Defines an out of process background task. + + + + + + + + + + Entry point in application. + + + + + + Name of server. + + + + + + + Whitespace-delimited list of background task types. Valid values are: + audio, + bluetooth, + chatMessageNotification, + controlChannel, + deviceConnectionChange, + deviceServicing, + deviceUse, + general, + location, + mediaProcessing, + phoneCall, + pushNotification, + systemEvent, + timer, + vpnClient + + + + + + + + + + Defines a task that runs to configure an application that was installed in the OS image. + + + + + + + + + + Class to activate in the application. + + + + + + + + + Writes a non-virtualized registry key to the machine from the MSIX package. + + + + + + + + + + + + + + Identity of the RegistryKey or RegistryValue element to reference. + + + + + + + + + Writes a registry key to the package. + + + + + + + + + + + + Optional key to identify the registry value. If not specified, the id will be generated with a stable value based on the root, key, and name values. + + + + + Identity of the RegistryKey or RegistryValue element. + + + + + + The localizable registry value name. If this attribute is not provided the default value for the registry key will + be set instead. + + + + + + Root key for the registry value. + + + + + + + HKEY_CLASSES_ROOT + + + + + + + HKEY_CURRENT_USER + + + + + + + HKEY_LOCAL_MACHINE + + + + + + + HKEY_USERS + + + + + + + + + + Set this attribute to the type of the desired registry key. + + + + + + + + The value is interpreted and stored as a string (REG_SZ). + + + + + + + The value is interpreted and stored as an integer (REG_DWORD). + + + + + + + The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). + + + + + + + + + + Set this attribute to the localizable registry value. + + + + + + + + + + Defines a task that runs at update. + + + + + + + + + + Class to activate in the application. + + + + + + + + + Defines a startup task for the package. + + + + + + + + + + The optional display name for the task. + + + + + + + Indicates whether the task starts enabled or disabled. Enabled tasks run the next time the user logs on, unless the user disables them. + + + + + + + A unique identifier for the task. + + + + + + + + + Declares an executable file as capable of being launched with full trust from a UWP app. + + + + + + + + + + Id of parameter group. + + + + + + Parameters that will be passed to the full-trust process. + + + + + + + + Allows you to add the directory to the loader search path for the package. + + + + + + + + + Allows you to specify the MSIX Application identitiy for an executable. + + + + + + + + + Allows you to specify the file should contribute to an existing MSIX Application by identity. + + + + + + + + + Allows you to specify the file should contribute to an existing MSIX Application by identity that is not part of this package. + + + + + + + + + Allows you to specify the executable should not be published as an Application in the MSIX package. + + + + + + + + + Allows you to specify the executable should not publish any of its COM registration to MSIX Packaged COM. + + + + + + + + + A type that represents that 1 or more preprocessor variables (as they appear in sources on disk, before preprocessor has run). + + + + + + + + Values of this type will either be "desktop" or "server". + + + + + + Values of this type will either be "desktop" or "server". + + + + + + + + + Values of this type will either be a version or well-known version name. + + + + + + A type that represents the version of the OS. + + + + + + + + Values of this type will either be "anniversaryUpdate", "creatorsUpdate" or "fallCreatorsUpdate". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Values of this type will either be "singleInstance" or "multipleInstances". + + + + + + Values of this type will either be "singleInstance" or "multipleInstances". + + + + + + + + + Values of this type will be "STA", "MTA", or "Both". + + + + + + Values of this type will be "STA", "MTA", or "Both". + + + + + + + + diff --git a/Installer/IsWiX/IsWiXLib.wxs b/Installer/IsWiX/IsWiXLib.wxs index b757138..f05b270 100644 --- a/Installer/IsWiX/IsWiXLib.wxs +++ b/Installer/IsWiX/IsWiXLib.wxs @@ -227,6 +227,12 @@ + + + + + +