Skip to content

Commit

Permalink
root: refactored msi packager to match the latest implementation
Browse files Browse the repository at this point in the history
The MSI packager was intentionally left out due to its complications
and issue listed in:
       wixtoolset/issues#7896
Now that the overall package job and release job are stabilized, we
can proceed to refactor MSI packager now. Hence, let's do this.

This patch refactors MSI packager to match the latest implementation
in root repository.

Co-authored-by: Shuralyov, Jean <[email protected]>
Co-authored-by: Galyna, Cory <[email protected]>
Co-authored-by: (Holloway) Chew, Kean Ho <[email protected]>
Signed-off-by: (Holloway) Chew, Kean Ho <[email protected]>
  • Loading branch information
3 people committed Jun 19, 2024
1 parent 1db38eb commit 476cb2b
Show file tree
Hide file tree
Showing 46 changed files with 3,946 additions and 1,404 deletions.
294 changes: 286 additions & 8 deletions CONFIG.toml
Original file line number Diff line number Diff line change
Expand Up @@ -859,14 +859,6 @@ PROJECT_RELEASE_ARCHIVE = 'enabled'
PROJECT_RELEASE_IPK = 'enabled'


# PROJECT_RELEASE_MSI
# The flag to package msi pipeline.
#
# To enable : fill in some string (e.g. 'enabled')
# To disable: leave it empty ('')
PROJECT_RELEASE_IPK = 'enabled'




#############################
Expand Down Expand Up @@ -1381,6 +1373,292 @@ PROJECT_HOMEBREW_REPO_BRANCH = 'main'



###########################
# DISTRIBUTION - MSI #
###########################
# PROJECT_MSI_INSTALL_DIRECTORY
# Defines the primary directory installation value for installer execute
# sequences ('InstallExecuteSequence').
#
# This field also acts as the flag for enabling or disabling the homebrew
# pipeline.
#
# To enable it: set the value as 'INSTALLDIR'
# To disable it: set it empty.
#
# Default is: 'INSTALLDIR' (enabled)
PROJECT_MSI_INSTALL_DIRECTORY = 'INSTALLDIR'


# PROJECT_MSI_ARP_INSTALL_LOCATION
# Defines the CustomAction's ID for installer execute sequences
# ('InstallExecuteSequence'). Unless absolute required, this value is best
# leave it as 'ARPINSTALLLOCATION' unchanged.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'ARPINSTALLLOCATION'
PROJECT_MSI_ARP_INSTALL_LOCATION = 'ARPINSTALLLOCATION'


# PROJECT_MSI_COMPRESSED_MODE
# Defines the compress mode for the installer. It STRICTLY accepts lowercase
# 'yes' or 'no' only.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'yes'
PROJECT_MSI_COMPRESSED_MODE = 'yes'


# PROJECT_MSI_INSTALLER_VERSION_UNIX
# Defines the MSI installer version for unix workspace (where WiX is not used).
#
# This field CANNOT BE LEFT EMPTY and is only for unix packagers.
#
# Default is: '400' (Windows Installer 4.0 - included in Vista)
PROJECT_MSI_INSTALLER_VERSION_UNIX = '400'


# PROJECT_MSI_INSTALLER_VERSION_WINDOWS
# Defines the MSI installer version for windows workspace (where WiX is used).
#
# This field CANNOT BE LEFT EMPTY and is only for windows packagers.
#
# Default is: '500' (WiX4)
PROJECT_MSI_INSTALLER_VERSION_WINDOWS = '500'


# PROJECT_MSI_CODEPAGE
# Defines the charset of the installer.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: '65001' (UTF-8)
PROJECT_MSI_CODEPAGE = '65001'


# PROJECT_MSI_INSTALLER_SCOPE
# Defines the installer scope.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'perMachine'
PROJECT_MSI_INSTALLER_SCOPE = 'perMachine'


# PROJECT_MSI_REGISTRY_NAME
# Defines the name of the registry. Unless aboslute needed, it's best to leave
# this as it is.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'InstallLocation'
PROJECT_MSI_REGISTRY_NAME = 'InstallLocation'


# PROJECT_MSI_REGISTRY_KEY
# Defines the location of the registry.
#
# This field is shared for both unix and windows packagers.
#
# If this field is left empty, AutomataCI shall generate a default version
# using the following pattern:
# 'Software\${PROJECT_SCOPE}\InstalledProducts\${PROJECT_SKU_TITLECASE}'
#
# Default is: '' (leave it automated)
PROJECT_MSI_REGISTRY_KEY = ''


# PROJECT_MSI_FEATURES_ID
# The ID for the entire installer's feature list. This the the root of the list
# consisting of main feature list, optional features list, and etc.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'FeaturesAll'
PROJECT_MSI_FEATURES_ID = 'FeaturesAll'


# PROJECT_MSI_MAIN_FEATURE_ID
# The ID for the compulsory features list. This consists of all the MUST HAVE
# components to be installed at the client side.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'FeaturesMain'
PROJECT_MSI_MAIN_FEATURE_ID = 'FeaturesMain'


# PROJECT_MSI_REGISTRIES_ID
# The ID for the compulsory main registries component. This handles the main
# registeries internal implementations.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'RegValInstallLocation_comp'
PROJECT_MSI_REGISTRIES_ID = 'RegValInstallLocation_comp'


# PROJECT_MSI_REGISTRIES_GUID
# The unique GUID for the compulsory main registries component. Its value is
# similar to a UUID type.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# When in doubt, use asterisk instead ('*').
#
# Default is: '*'
PROJECT_MSI_REGISTRIES_GUID = '*'


# PROJECT_MSI_BIN_FEATURE_ID
# The ID for the executables features list. When available, the executables will
# be in this component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'FeaturesBin'
PROJECT_MSI_BIN_FEATURE_ID = 'FeaturesBin'


# PROJECT_MSI_BIN_COMPONENT_ID
# The ID for the executables component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'ComponentBin'
PROJECT_MSI_BIN_COMPONENT_ID = 'ComponentBin'


# PROJECT_MSI_BIN_COMPONENT_GUID
# The unique GUID for the executables component. Its value is similar to an UUID
# type.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# When in doubt, use asterisk instead ('*').
#
# Default is: '*'
PROJECT_MSI_BIN_COMPONENT_GUID = '*'


# PROJECT_MSI_CONFIG_FEATURE_ID
# The ID for the config files features list. When available, the config files
# will be in this component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'FeaturesBin'
PROJECT_MSI_CONFIG_FEATURE_ID = 'FeaturesConfig'


# PROJECT_MSI_CONFIG_COMPONENT_ID
# The ID for the config files component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'ComponentConfig'
PROJECT_MSI_CONFIG_COMPONENT_ID = 'ComponentConfig'


# PROJECT_MSI_CONFIG_COMPONENT_GUID
# The unique GUID for the config files component. Its value is similar to
# an UUID type.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# When in doubt, use asterisk instead ('*').
#
# Default is: '*'
PROJECT_MSI_CONFIG_COMPONENT_GUID = '*'


# PROJECT_MSI_LIB_FEATURE_ID
# The ID for the libraries features list. When available, the libraries will
# be in this component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'FeaturesLib'
PROJECT_MSI_LIB_FEATURE_ID = 'FeaturesLib'


# PROJECT_MSI_LIB_COMPONENT_ID
# The ID for the libraries component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'ComponentLib'
PROJECT_MSI_LIB_COMPONENT_ID = 'ComponentLib'


# PROJECT_MSI_LIB_COMPONENT_GUID
# The unique GUID for the libraries component. Its value is similar to an UUID
# type.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# When in doubt, use asterisk instead ('*')
#
# Default is: '*'
PROJECT_MSI_LIB_COMPONENT_GUID = '*'


# PROJECT_MSI_DOCS_FEATURE_ID
# The ID for the documenations features list. When available, the documents will
# be in this component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'FeaturesDocs'
PROJECT_MSI_DOCS_FEATURE_ID = 'FeaturesDocs'


# PROJECT_MSI_DOCS_COMPONENT_ID
# The ID for the documentations component.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# Default is: 'ComponentDocs'
PROJECT_MSI_DOCS_COMPONENT_ID = 'ComponentDocs'


# PROJECT_MSI_DOCS_COMPONENT_GUID
# The unique GUID for the documentations component. Its value is similar to an
# UUID type.
#
# This field CANNOT BE LEFT EMPTY and is shared for both unix and windows
# packagers.
#
# When in doubt, use asterisk instead ('*').
#
# Default is: '*'
PROJECT_MSI_LIB_COMPONENT_GUID = '*'




##########################
# DISTRIBUTION - RPM #
##########################
Expand Down
Loading

0 comments on commit 476cb2b

Please sign in to comment.