The non-obvious challenge for a non-OS programmer
Transition to the stage of product release makes to leave the comfort zone. The usual developers’ IDE and familiar frameworks are stay in past. Deployment process requires dive into the jungle of OS API, its functions, rules, scripts and environments. And all this good things are on users'computers, out of your control...
The deeper you dive into the system APIs for deployment of your application, the deeper you will understand the concept of “crazy technical debt” taken by one developers and left for return to others.The good news is that we have already gone through this path and created a product that going simplify this job.
GUI no-code
- all necessary parameters, such as file paths, names and identifiers, are entered into the GUI interface fields besides all relationships between elements are defined as GUI dropdown box
- the commands required for installation are executed by the installer independently, without coding.
- pre-install, post-install, pre-uninstall and post-uninstall are available, as well these scripts are parameterizable.
Organizing the installer project
- the one project for all OS
- parameterising source file paths based on use OS installer BOX
- per-platform extension for file paths and command arguments with disable option
- the one cross-platform IDE and same project store XML file
- IDE-level referential integrity on all project's items, such as target service file path and service's install command or location folder path and it's packages placements
- upport native Windows .msi, macOS .pkg, Linux .rpm and .deb and, also universal self-extract formats
- test install/uninstall from IDE
- output of build process and it's problems

Assembling source files from different places/types
- set of local and remote source root place, include relevant local paths
- downloading remote source files by ftp or smb protocols in build-time
- include source files as tree by tree root path
- paths parameterising for platform, architecture, product version and debug/release build
- per-platform extension for file/folder paths
Composing installing software packages
- dependencies of packages and its items to another ones
- contents of package may be set of single files/folder or full folder tree without enumerationit's content
- location of packages is setting up as reference to separate set of locations
- support folder, file, link, start/launchpad shortcut and virtual marker elements
- name of package may be unaltered UUID
Digital signature
- in-project store certificate ID and passwords
- separate certificates for supported installer systems types
- signing as part of build installer process
- generate self-signed certificates
Creation a distribution repository
- generation and signing repository metadata
- uploading distributive files as a part of installer build process
- publish on external and internal hosts with XML/XSLT

Locations of installing software packages
- set of target places for install different product packages
- per-platform standard folder for target place
- folders' tree for each target place with possibility to include product version
- target's place relocation available (include in .deb and .rpm)
Setup user/group filesystem permission
- adding group/user (with password by demand) at install-time
- the set of permission rules for:
- execution install-time scripts
- setup daemons to run under user/group
- setup file/folder owner and mode
Parameterising at install-time
- each installer type (.deb and .rpm for press key in timeout) have ability interactive input parameters
- parameters may be include in a group for display of separate at install-time dialogs
- selected target locations paths also is input parameters
- input parameters may by use at install-time script, arguments of daemon/services or for make replacement text in configuration files by list
Integration in application build process
- installer IDE support per-platform pre- and post build run commands for build application from IDE
- build installer from your application build-system script also possible, but for sign code need open OS keyring
- project file have human-friendly XML structure and may be compose by hand or by system like CMake (We do not recommend this method due to the objective complexity of the relationships in the project. However, some copy-paste-replace in project XML file operations may be effective.)