J'essaie de faire une application déployable compressée.
Actuellement, je récupère un ensemble de fichiers que j'ai publiés à partir de mon IDE (application publiée Visual Studio 2008 - WPF) et je les compresse dans une archive 7-Zip SFX.
Mes utilisateurs ont demandé s'ils pouvaient "installer en un clic" à partir du fichier exe 7-Zip. Il y a une liste de paramètres lorsque je crée l'archive. Est-il possible de définir une sorte de combinaison de paramètres pour appeler le fichier exécutable du programme d'installation extrait?
Malheureusement, la documentation 7-Zip ne semble pas couvrir ce scénario. J'ai vu plusieurs applications payantes qui font quelque chose de similaire, mais j'essaie de garder l'outil que je suis en train d'écrire sans code sous licence pour que nous puissions l'utiliser en interne.
Modules SFX pour les installateurs
Les modules SFX pour les installateurs sont inclus dans un package externe (7z_extra). Vous pouvez télécharger ces modules sur www.7-Zip.org. Les modules SFX pour les installateurs (7zS.sfx et 7zSD.sfx) vous permettent de créer votre propre programme d'installation. Un tel module extrait l'archive dans le dossier temporaire de l'utilisateur, exécute un programme spécifié et supprime les fichiers temporaires une fois le programme terminé. Une archive auto-extractible pour les installateurs doit être créée en joignant 3 fichiers: SFX_Module, Installer_Config, 7z_Archive. De plus, un fichier facultatif, Installer_Config, est autorisé. Vous pouvez utiliser la commande suivante pour créer une archive à extraction automatique du programme d'installation:
copy /b 7zS.sfx + config.txt + archive.7z archive.exe
Une taille de package d'installation optimale peut être atteinte si les fichiers d'installation sont décompressés avant de les inclure dans l'archive 7z.
Le commutateur
-y
pour le module d'installation spécifie l'extraction en mode silencieux.
Pour spécifier un programme à exécuter après la décompression, utilisez l'attribut RunProgram
. Par exemple, voici un exemple config.txt
qui exécute Install.cmd
après la décompression. Le répertoire de travail actuel sera le niveau supérieur de l'arborescence archive.7z
développée, donc c'est là que Install.cmd
doit résider.
;!@Install@!UTF-8!
Title="Your Title"
RunProgram="Install.cmd"
;!@InstallEnd@!
Les arguments transmis à l'exécutable SFX sont transmis au script Install.cmd
.
La solution convenue est correcte, mais elle n’aide en fait pas à expliquer ce que vous devez réellement faire!. J'ai lu ceci et beaucoup d'autres solutions et je ne trouvais pas d'instructions complètes complètes et simples sur la façon de procéder.
Si vous êtes confus comme avant, lisez mon billet de blog qui fournit des instructions détaillées sur la réalisation de ce que Molly7244 a publié.
Comment créer une archive auto-extractible qui exécute votre setup.exe avec le commutateur 7Zip -sfx
Il a été porté à mon attention que des liens peuvent devenir morts alors voici les étapes de mon blog
Pour rendre cela facile, créez un dossier c:\Install. C'est ici que nous allons copier tous les fichiers requis.
Vous devez télécharger le 7z-Extra.
Je vous recommande d'utiliser NotePad ++ pour éditer ce fichier texte car vous devrez encoder en UTF-8. Les instructions suivantes utilisent notepad ++.
Entrez quelque chose comme ceci:
;!@Install@!UTF-8!
Title="SOFTWARE v1.0.0.0"
BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
RunProgram="setup.exe"
;!@InstallEnd@!
Modifiez cette version en remplaçant [SOFTWARE v1.0.0.0] par votre nom de produit. Les notes sur les paramètres et les options du fichier d’installation sont ici
Vous devriez maintenant avoir un dossier "c:\Install" avec les 3 fichiers suivants:
Ces instructions que j’ai trouvées sur le Web mais n’ont explicité nulle part les 4 étapes ci-dessus.
Dans la fenêtre de commande, tapez ce qui suit
cd \
cd Install
copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
Regardez dans c:\Install et vous verrez maintenant que vous avez un MyInstaller.exe
Vous avez terminéDouble-cliquez sur MyInstaller.exe et l'invite s'affichera avec votre message. Cliquez sur OK et le fichier setup.exe s'exécutera.
Maintenant que cela fonctionne dans votre répertoire c:\Install, je créerais un fichier "Install.bat" et y placerais le script de copie.
copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
Vous pouvez maintenant éditer et exécuter le fichier Install.bat chaque fois que vous avez besoin de reconstruire une nouvelle version de votre package de déploiement.
En s'appuyant sur la réponse de jcrawfor74, voici quelques informations supplémentaires:
Au lieu de 7zS.sfx , vous pouvez également utiliser le fichier 7zS2.sfx . C'est une version beaucoup plus petite (28 Ko contre 140 Ko) mais elle ne supporte pas le fichier config.txt. Donc, vous pouvez simplement le laisser dans la commande de copie. Si vous voulez juste créer de petits scripts de configuration, cela vous permet de construire des fichiers EXE plus petits.
Le plus petit module SFX ne pose aucune question. Il extrait les fichiers dans un dossier temporaire en tant qu'autre module, puis recherche les candidats exécutables. Selon le code source (également disponible sur la page de téléchargement), dans C\Util\SfxSetup\SfxSetup.c, il pèse les fichiers différemment en fonction de leur nom et de leur extension, puis sélectionne le fichier dont le score est le plus élevé.
Les deux modules SFX s'exécutent automatiquement en tant qu'administrateur , du moins sous Windows 10, et cela ne peut pas être configuré. Bien que ce comportement puisse être souhaitable pour les configurations à l’échelle du système, il peut ne pas en être toujours ainsi. En outre, cette décision est uniquement basée sur les données de version de fichier car il n'y a pas de manifeste inclus explicitement ce que Windows doit faire. La compatibilité Windows examine le fichier et trouve des chaînes telles que "Configuration" qui mènent à l'invite d'élévation.
Si vous avez besoin d’un module SFX qui ne demande pas d’autorisations d’administrateur, vous pouvez le reconstruire à partir du code source ou, plus simplement, éditer ses informations de version de fichier avec un éditeur de ressources tel que celui-ci . Supprimez simplement le mot "Setup" du champ FileDescription, dans le cas du Resource Hacker mentionné, compilez le fichier et enregistrez le fichier EXE. Vous pouvez également effectuer cette étape directement sur le fichier 7zS.sfx ou 7zS2.sfx et le conserver quelque part afin de pouvoir l'utiliser pour créer des packages SFX non élevés. Et vous pouvez l'utiliser pour personnaliser entièrement les informations de version de fichier afin d'y placer le nom de votre produit ou tout élément décrivant la charge utile.