compiler.runtime.customInstaller(installerName, results)
compiler.runtime.customInstaller(installerName, reportFiles, Name, Value, ...)
Charger le module optionnel compiler avec ncc('--help'). Cette fonction produit un installateur du runtime seul depuis un a 64 objets compiler.build.Results ou une liste de chemins buildresult.json. Elle ne renvoie aucune valeur et n'installe pas les executables des applications.
La generation Windows utilise Inno Setup 6 ; NELSONC_ISCC permet de designer ISCC.exe. Sous Linux, un .install autonome est produit avec Bash 4, GNU tar, gzip et les utilitaires de base. Sous macOS, un .pkg natif est produit avec pkgbuild et productbuild. Un petit outil natif est inclus sous Linux et macOS, sans installation de Nelson ou Python sur la cible. Les fichiers du runtime proviennent de l'instantane des dependances ; leurs empreintes SHA-256 sont verifiees. Les conflits de fichiers, architectures, versions ou ordre de demarrage sont refuses.
RuntimeDelivery accepte web (defaut) ou installer. Web echoue explicitement tant qu'aucun service de telechargement du runtime n'est disponible. Choisir installer pour une distribution hors ligne. PackageType accepte auto (defaut) ou zip ; zip exige installer et Windows. Compression accepte normal (defaut), fast, max ou none pour la charge utile Windows. Les fichiers de sortie existants ne sont jamais ecrases.
OutputDir designe par defaut un dossier installerName dans le repertoire courant. OptionalDependencies accepte all (defaut) ou none. La table Dependencies.Optional est vide : les deux valeurs selectionnent les memes dependances requises. Les services graphiques necessaires ne sont jamais retires.
L'installation Windows utilise un repertoire par empreinte du moteur : LocalAppData/Nelson/Runtime/fingerprint pour un utilisateur ou ProgramFiles/Nelson/Runtime/fingerprint pour une installation administrative. Les options standard Inno Setup, dont /CURRENTUSER et /DIR, sont acceptees.
Pour une installation Windows non interactive, placer -agreeToLicense yes en premier, puis les arguments facultatifs -destinationFolder et -outputFile. La destination doit etre absolue et designe exactement la racine du runtime. L'alternative -inputfile FILE lit un fichier UTF-8 contenant agreeToLicense=yes en premier, puis les entrees facultatives destinationFolder et outputFile, une paire key=value par ligne. Le f minuscule distingue cet argument du -inputFile des installateurs d'application. L'accord peut aussi preceder -inputfile sur la ligne de commande. La destination et le journal ne peuvent pas etre dupliques entre la commande et le fichier ; la repetition du consentement a la licence est acceptee.
Le fichier de reponses Windows accepte un BOM UTF-8, CRLF et des commentaires commencant par #, dans une limite de 1 Mio. Les chemins sont litteraux : variables d'environnement et expressions shell ne sont pas interpretees. Les options inconnues, applicationFolder, runtimeFolder, les reglages de raccourcis, les entrees mal formees et les journaux existants sont refuses avant le lancement de l'installateur natif. Sans -outputFile, un nouveau nelson_installer_*.log est cree dans TEMP. La commande attend la fin de l'installation et renvoie le code natif. /CURRENTUSER ou /ALLUSERS et /PORTABLE=1 sont des ajouts propres a Nelson acceptes avec ces arguments ; les commandes standard Inno restent une forme distincte.
Les installateurs de runtime Windows produits comprennent un petit lanceur reserve a l'installation avec un runtime C statique. Le compilateur verifie son format pris en charge avant le packaging. Il verifie l'empreinte de l'installateur embarque avant execution avec une memoire tampon bornee, puis retire son repertoire d'extraction prive apres une fin normale. Un arret brutal du lanceur peut laisser des fichiers temporaires. Ce lanceur ne fait pas partie du runtime numerique installe et ne modifie pas le demarrage applicatif. Reconstruire les anciens installateurs pour utiliser ces arguments de deploiement.
Des installateurs compatibles successifs ajoutent leurs composants au meme runtime. Les fichiers distribues existants sont verifies ; les fichiers distribues identiques ne sont pas reecrits. L'ordre de chargement des modules et runtime.json sont regeneres depuis l'union. Les fichiers alteres, collisions non gerees, redirections de chemins et identites incompatibles sont refuses avant l'installation. Un verrou commun empeche installation et desinstallation simultanees.
L'installation Windows normale enregistre sa racine sous Software/Nelson/Runtime/architecture/fingerprint dans la vue 64 bits du registre utilisateur ou machine. Les lanceurs consultent NELSONC_RUNTIME_ROOT, le dossier adjacent executable.runtime, NELSON_RUNTIME_PATH, les runtimes partages enregistres et leurs repertoires standard sous Windows, puis PATH. L'empreinte de l'interpreteur doit correspondre ; PATH n'est jamais modifie.
Sous Windows, /PORTABLE=1 supprime l'enregistrement et conserve le desinstalleur local. Un repertoire portable non standard exige NELSONC_RUNTIME_ROOT. Reconstruire les applications avec les lanceurs actuels pour la decouverte automatique du runtime partage.
Le runtime dispose d'un desinstalleur independant. Sa suppression affecte toutes les applications qui l'utilisent, mais ne supprime ni ces applications ni les fichiers crees par l'utilisateur. Desinstaller une application ne retire pas ce runtime installe separement.
En cas d'interruption du processus Windows, relancer le meme installateur de runtime avec la meme destination, le meme mode utilisateur/administrateur et la meme option portable. Le journal prive .nelson-runtime-update enregistre les anciennes metadonnees et les ajouts attendus. La reprise verifie chaque chemin et empreinte avant de restaurer les metadonnees et de reinstaller les ajouts verifies, y compris leurs enregistrements de desinstallation. Les fichiers existants du runtime ne sont pas reecrits. Une premiere installation interrompue et une reprise interrompue sont aussi prises en charge.
Un autre paquet de runtime et le desinstalleur actuel refusent une mise a jour incomplete tant que la reprise n'est pas terminee. Les entrees inconnues du journal, chemins rediriges, fichiers modifies et sauvegardes alterees sont conserves et signales ; ne pas supprimer le journal pour contourner ces verifications. Une finalisation incomplete renvoie un code de sortie non nul, meme si les fichiers ont deja ete extraits. Une mise a jour deja validee est verifiee et son journal retire avant de poursuivre avec un autre paquet compatible. La reprise n'authentifie pas les fichiers et ne protege pas contre des modifications externes simultanees.
Une preparation interrompue peut laisser des repertoires .nelson-runtime-prepare-*. Un nettoyage interrompu ou des donnees de desinstallation conservees peuvent laisser des repertoires .nelson-runtime-recovered-*. Ces repertoires prives et les fichiers temporaires non revendiques sont conserves, sans suppression recursive. La reprise concerne l'interruption du processus, pas la resistance aux coupures electriques ni le remplacement atomique du runtime entier. Ces controles interviennent uniquement dans l'installateur, jamais au demarrage des applications ni pendant les calculs.
L'installation Linux est non interactive. Utiliser -agreeToLicense yes en premier, puis eventuellement -destinationFolder et -outputFile. La forme -inputfile FILE accepte des lignes UTF-8 cle=valeur pour agreeToLicense, destinationFolder et outputFile, avec l'accord en premier. Le f minuscule differe du -inputFile de l'installateur applicatif. BOM et CRLF sont acceptes ; NUL, options inconnues ou contradictoires et journaux existants sont refuses. Les valeurs ne sont jamais executees par le shell. ZIP et applicationFolder ne sont pas acceptes par cet installateur de runtime.
Sous Linux, le dossier par defaut est XDG_DATA_HOME/nelson/runtimes/fingerprint, avec repli sur HOME/.local/share, pour un utilisateur ordinaire, ou /usr/local/lib/nelson/runtimes/fingerprint pour root. L'enregistrement utilise XDG_CONFIG_HOME (ou HOME/.config), ou /etc/xdg pour root, au format documente par ncc. Les chemins d'installation ne peuvent contenir ni liens symboliques ni segments point ; le dossier runtime ne peut contenir deux-points, point-virgule ou dollar. Aucun privilege root n'est requis pour une destination utilisateur accessible en ecriture. Les rapports Linux doivent annoncer runtimeDiscoveryVersion 3 ; les anciennes applications doivent etre reconstruites.
L'outil Linux fusionne les inventaires compatibles et ne copie que les nouveaux fichiers du runtime. Il verifie les fichiers existants et refuse les collisions non gerees, permissions modifiees et catalogues de demarrage contradictoires. L'executable local .nelson-runtime/uninstall ne prend aucun argument et retire les fichiers possedes inchanges ; les fichiers modifies et donnees utilisateur sont conserves. Les metadonnees de propriete doivent rester intactes. Les fichiers de verrou sont volontairement conserves, donc le dossier peut subsister apres suppression. Fermer les applications avant de modifier ou supprimer leur runtime.
Apres interruption du processus Linux, relancer le meme paquet avec la meme destination et le meme contexte d'enregistrement. Le journal prive .nelson-runtime/update.json contient les anciens et futurs inventaires. La reprise verifie les fichiers existants, ajouts verifies et anciennes ou nouvelles metadonnees avant de terminer. Les premieres installations et interruptions pendant la publication des metadonnees ou de l'enregistrement sont prises en charge. Un autre paquet et le desinstalleur refusent un journal actif. Apres retrait reussi du journal, un autre paquet compatible peut poursuivre meme si le processus precedent n'a pas fini d'afficher son succes. Aucun remplacement force des fichiers inconnus ou modifies n'est effectue. Une preparation interrompue peut laisser des dossiers temporaires prives ou des fichiers .nelson-runtime-write-*. La reprise n'est pas un remplacement atomique du runtime entier et ne garantit ni resistance aux coupures electriques ni protection contre les modifications externes simultanees.
La desinstallation Linux utilise un journal distinct .nelson-runtime/remove.json. Relancer le desinstalleur installe apres interruption, y compris apres une reprise interrompue. Le journal associe l'inventaire de propriete initial au dossier du runtime et verifie son empreinte ainsi que les metadonnees restantes avant de poursuivre. L'installation refuse une suppression en cours. Le desinstalleur retire uniquement l'enregistrement correspondant et les fichiers possedes inchanges ; fichiers modifies, rediriges ou impossibles a verifier et donnees utilisateur sont conserves. Un echec de suppression d'un fichier possede verifie renvoie une erreur et laisse la suppression en cours. Retablir les permissions requises du dossier puis relancer le desinstalleur.
La suppression enregistre un recu complete avant de retirer le desinstalleur lui-meme. Ce recu et les verrous restent apres succes ; le dossier peut donc subsister. Une operation terminee ne reparcourt jamais les fichiers du runtime lors d'une reprise. Un installateur ulterieur peut retirer le recu verifie et reutiliser un dossier gere sinon vide, y compris pour une autre version du runtime. Des fichiers conserves ou residus inconnus empechent cette reutilisation ; ils ne sont ni supprimes ni ecrases. Ne pas modifier ni retirer le journal pour contourner ces controles. Ces regles de reprise exigent l'outil natif actuel et n'authentifient pas l'editeur.
Le .install Linux est reproductible avec les memes octets du runtime et de l'outil natif, attributs, options et outils de packaging. Les nouveaux fichiers distribues utilisent la date 2000-01-01 UTC ; les fichiers identiques deja presents conservent leur date. Les metadonnees generees portent la date d'installation. La validation CLI utilise Debian 13 x86-64 ; les autres distributions, l'installation systeme et les applications graphiques exigent des validations natives supplementaires.
Sous macOS, le paquet installe un runtime identifie par son empreinte sous Library/Application Support/Nelson/Runtimes et l'enregistre sous Library/Application Support/Nelson/config pour les lanceurs maca64 ou maci64. L'outil natif fusionne les inventaires compatibles et refuse les fichiers modifies, collisions non gerees, ordres de modules contradictoires ou identites differentes. Son programme .nelson-runtime/uninstall retire uniquement les fichiers possedes inchanges et l'enregistrement correspondant ; les fichiers modifies et crees par l'utilisateur sont conserves. La suppression du paquet applicatif et celle de ce runtime partage sont independantes.
Le paquet macOS conserve la structure des dylib et frameworks, verifie l'architecture et les install names, rend les dependances non systeme relocalisables et applique une signature ad hoc aux binaires locaux modifies. Le paquet genere reste sinon non signe. La signature Developer ID Installer, la notarisation et la validation Gatekeeper exigent des identifiants et services Apple adaptes et ne sont pas revendiquees par une construction locale. Une installation systeme exige les droits administrateur ; une cible alternative isolee peut servir a tester les scripts.
Les empreintes controlent la coherence et n'authentifient pas l'editeur. Signature, reparation automatique, installation Linux interactive et gros volumes multiples restent a realiser. Calcul des empreintes et compression interviennent pendant la construction ou l'installation, pas dans les operations numeriques.
Les sorties EXE et ZIP non signees suivent le contrat de reproductibilite de compiler.package.installer. Les nouveaux fichiers distribues sont installes avec la date 1980-01-01 00:00:00 UTC. Les fichiers identiques deja presents conservent leur date de modification. Les inventaires fusionnes et fichiers de demarrage sont generes pendant l'installation et ne relevent pas de cette garantie de date fixe.
Les rapports doivent utiliser le format 2 et contenir un contrat de lanceur natif pris en charge. Les anciens rapports ne permettent pas de verifier que les applications savent rechercher le runtime partage ; reconstruire ces applications avec les lanceurs actuels avant de generer cet installateur.
| Version | Description |
|---|