Package definition used to generate MSI installers.
The schema version used for this JSON/YAML document.
Collection of package build-time arguments to be passed to the build command for preprocessing. For an argument named 'host' you can declare $<host> where you want its value to be replaced. Command example: openmsi build --arg host=example.com.
Name of the argument.
Value to assume in case the argument is omitted. Default is an empty string.
Application package details
GUID package identifier. If omitted a new Id will be automatically generated for each build (recommended).
Name of the product installed by this package. Displayed to user in many places.
Company or author of the product.
Package and/or description.
Application version in SemVer/Microsoft flavor format: Major.Minor.Build.Revision. Revision is optional. To create an upgrade package, you need a new 'productCode' and a greater 'productVersion'.
GUID identifying a version or a range of versions which might change with major product upgrades. To create an upgrade package, you need a new 'productCode' and a greater 'productVersion'.
GUID identifying the product across different installations. Stays constant across all versions of the same product.
The application main language code. Default is '1033' (en-US). For more details go to https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f.
Relative path to the main application icon. Used by Windows when displaying the application information (ARPPRODUCTICON).
Short comments about the product. Used by Windows when displaying the application information (ARPCOMMENTS).
A description of a point of contact for product support. Used by Windows when displaying the application information (ARPCONTACT). Note that since Windows 10 this information is hidden.
Phone number for product support. Used by Windows when displaying the application information (ARPHELPTELEPHONE). Note that since Windows 10 this information is hidden.
Link to a web page with support for the application. Used by Windows when displaying the application information (ARPURLINFOABOUT).
Link to a web page with help resources about the application. Used by Windows when displaying the application information (ARPHELPLINK).
Link to a web page with details about this release or product releases. Used by Windows when displaying the application information (ARPURLUPDATEINFO).
Specifies if the application setup supports the 'Repair' option. Used by Windows when displaying the application information (ARPNOREPAIR). Default is false.
Specifies if the application setup supports the 'Change' option. Used by Windows when displaying the application information (ARPNOMODIFY). Default is false.
Package summary title.
Package summary comments.
Package keywords separated by spaces to help with indexing and searches.
Package author defined installation properties
Properties used by OpenMSI to provide the built-in wizard templates. You can override these properties. For more information go to <a href='https://openmsi.dev/documentation'></a>.
The output name to be attributed to the .msi file generated. Optional. Default is '[productname]-installer.msi'.
Collection of files used during installation only. Those files will not be deployed.
No Additional ItemsUnique name of the asset for internal references.
Relative path to the asset file. Common assets file types are *.ico, *.bmp, *.png, *.jpg, *.dll, *.exe, and others.
Collection of Application files or directories. Those files will be deployed.
No Additional ItemsApplication file or directory to be deployed. When a directory is specified all sub-directories are included.
Specifies if a directory should be treated as the install folder. Packages must have exactly one entry with this property set to true. Default is 'false'.
The target directory symbolic name available in Windows Installer options. These are also properties available during installation with the physical path as their value. Default is 'ProgramFiles64Folder'. Tip: Remember you have to escape the backslash character and declare it as an explicitly string: "UserProfile\DesktopFolder"
Optional file name or directory to which this file or directory should be deployed. Relative and under 'targetDirectory'. If you specify a directory in 'source', default is '[Manufacturer][ProductName]', otherwise if 'source' is a file, default is the 'source' filename inside 'targetDirectory' folder. You can use [Manufacturer] and [ProductName] properties as placeholders. E.g.: [Manufacturer][ProductName]\README.md or \FolderA\NewFilename.txt.
Files or sub-directories relative to 'source' directory you want excluded from the deployable files harvested. For obvious reasons if you specify a file in 'source' you cannot set this property. There is intentionally no support for patterns or globbing. If you have a complex scenario, you might want to execute a Post Publish script to clean the 'source' directory before the installer build.
No Additional ItemsThe YAML UI files describing the installer dialogs, controls, events, and conditions. After OpenMSI bootstrap logic the initial dialog is always 'WelcomeDlg' or 'MaintenanceWelcomeDlg' in case there is an UI.
No Additional ItemsA Dialog YAML file or directory containing *dialog.yaml files (e.g. *Dialog.yaml, *.dialog.yaml).
A collection of Windows Services to be deployed.
No Additional ItemsThe Service name (not displayed to users).
The name displayed to users in Windows Services console, for example.
A user visible description of the purpose or purposes of the service.
The account must be set to 'LocalSystem' or left unset when specifying 'Interactive'.
The method Windows should use to start this service. Default is Automatic.
A valid account name the service should use to Log On.
The account password the service should use to Log On.
The executable file name between the specified deployed files to associated with this service. Must be unique between all harvested file names.
Arguments that should be passed during the associated executable startup command.
Entries to be created in Windows Registry. These entries are automatically turned into installation public properties with the name specified in uppercase.
Default is 'CurrentUserOrLocalMachine' (depending on the installation scope).
The registry key under which the value should be stored. Writing keys in root is strongly not recommended. Default is 'Software[Manufacturer][ProductName]' or 'SOFTWARE[Manufacturer][ProductName]' depending on the scope of installation, user or machine respectively.
The registry variable name. Must follow the Windows Registry rules. If not specified the value will be set as Key's default value'. Default is ''.
The registry value to be written during installation. You can use an existing property (e.g. [ProductVersion] or [MyPackageProperty]). To set a list use the sequence [~] to delimit strings. To change the default string type (REGSZ) use prefixes like: #x (REGBINARY), #% (REGEXPANDSZ), and # (REG_DWORD - number).
Property name (without brackets; e.g. ProductVersion or MyCustomProperty). If specified there will be an attempt to set the property's value with the corresponding Windows Registry value during upgrades and installations. Default is ''.
Installation managed environment variables.
No Additional ItemsEnvironment variable name.
Environment variable value.
Specifies how handle this environment variable during installation. If 'Remove' is specified and the value is not empty, the environment variable will not be removed unless its value matches the value specified. Default is 'CreateOrReplace'.
Specifies if the environment variable should be removed or not during uninstall. Default is 'Remove'.
The type of the environment variable. Default is 'System'.
The *.ini file name. The directory is always the WindowsFolder symbolic folder (%SystemRoot%). The folder location is a requirement from Windows Installer in order to allow read and write operations during upgrades. Default is 'AppSettings.ini'.
The .ini file sections.
No Additional ItemsThe .ini file section name.
The unique by section Key identifying this entry.
The value content for this entry. Value can be a property reference.
The way installation should write this entry. Default is 'CreateOrUpdate'.
The way installation should attempt to read this entry (during upgrades, for example). Default is 'ReadIfExists'.
A collection of Windows shortcuts to be created during the installation process.
No Additional ItemsShortcut name displayed to users.
A short description to users about this shortcut.
The symbolic Windows directory where this shortcut will be placed. Default is 'UserProfile\StartMenuFolder\ProgramMenuFolder'.
The subfolder(s) path where this shortcut will be placed. This is a relative path to 'directory'. You might use [Manufacturer] and [ProductName] as placeholders. Default is empty. E.g.: '[Manufacturer][ProductName]'.
The symbolic Windows directory where the shortcut target, usually an executable, is set to be placed. E.g.: 'ProgramFiles64Folder'. If the 'target' is an URI, 'targetDirectory' should be empty.
The subfolder path where the shortcut target, usually an executable, is set to be installed. This is a relative path to 'targetDirectory'. You might use [Manufacturer] and [ProductName] as placeholders. Default is empty. E.g.: '[Manufacturer][ProductName]\Demo.App.Service.exe'.
The command-line arguments for the shortcut.
The *.ico file source to the shortcut icon.
The Show command for the application window.
A collection of associations from file extensions to your application.
No Additional ItemsThe extension without the preceding dot users will see associated with the program executable. E.g.: 'dem'.
A short descriptive program identifier consistent across versions. E.g.: DemoApp.document.
A short description for users about the file type. Usually the meaning of the extension abbreviation.
Use this property if you want to override the default Windows Explorer behavior of showing the handler Icon and instead show a different icon in files associated with the executable handler. IMPORTANT: File extensions icons must be deployed in the same directory of their executable handlers, that means this *.ico must be between the harvested files by 'Files' property.
The first image index in the 'multi icon' file in 'iconSource' you want Windows Explorer to show to users for files with this extension. The number of resolutions must match for every icon inside a 'multi icon' *.ico file. It is recommended to provide icons with at least 16x16, 24x24, 32x32, 48x48, and 256x256 resolutions. If 'iconSource' is provided default is '0'.
The symbolic Windows directory where the executable handler is set to be placed. E.g.: 'ProgramFiles64Folder'.
The relative path to 'handlerDirectory' to the handler executable. You may use [Manufacturer] and [ProductName] as placeholders. Default is empty. E.g.: '[Manufacturer][ProductName]\Demo.App.Service.exe'.
At least one verb is recommended.
No Additional ItemsThe action associated with this file Windows will show to users in Windows Explorer file context menu, for example.
The command Window will execute when this verb is selected by users. This property is normally left unaltered. Default '"[#handler-component]"'.
The argument passed to the command when this verb is selected by users. This property is normally left unaltered. Default '"%1"'.
Custom actions to be executed during installation. For now, OpenMSI only supports .NET10+ DLLs based code for custom actions. More information: https://openmsi.dev/documentation/custom-actions.
No Additional ItemsName of the custom action.
The type of resource Windows Installer will call. OpenMSI supports Dynamic Link Library (.dll) and Windows Executables (.exe) types.
The sequence position in which this custom action should be executed. Default is 'AfterCostFinalize'.
How Windows Installer should handle the scheduling. Default is 'FirstSequence'.
Depending on 'sourceType' this property expects different values. DllAsset: the *.dll asset name; DllDeployed: the full file name (symbolic + path-to/file.dll); ExecutableAsset: the *.exe asset name; ExecutableDeployed: the *.exe full file name (symbolic + path-to/file.exe); ExecutableDeployedDirectory: the symbolic directory; ExecutablePath: a property with the full path to the executable. Property: property name without brackets. An example of a symbolic + path folder is 'ProgramFiles64Folder[Manufacturer][ProductName]'.
Depending on 'sourceType' this property expects different values. DllAsset: the *.dll entry point method; DllDeployed: the *.dll entry point method; ExecutableAsset: command line; ExecutableDeployed: command line; ExecutableDeployedDirectory: command line; ExecutablePath: executable full path and arguments; Property: value to set the property in source, another property is allowed ([AnotherProperty]). Command line meaning executable and arguments.
The condition(s) for this custom action to be executed. Empty means always. Must use Windows Installer conditional statement syntax. For example: 'NOT Installed'. For more information: https://openmsi.dev/documentation/custom-actions.