7-zip Archive Auto-Extractible (SFX) et .Net Programme D'Installation
Je suis en train de créer une archive auto-extractible pour une application windows j'ai écrit. Mon application utilise la dernière .Net 4.0, et je veux inclure l' .Net le programme d'installation dans le SFX programme d'installation. Toutefois, si l'ordinateur a besoin pour installer le .Net framework et le redémarrage, il ne sera pas correctement reprendre l'installation de mon application. J'ai regardé à travers les autres sfx postes sur la Pile des sites, mais aucun d'entre eux sont des problèmes impliquant .Net installer en tant que condition préalable à l'application.
Mon projet produit 4 fichiers: "Application à Installer.msi" "setup.exe" "WindowsInstaller-KB893803-v2-x86.exe" (dans le dossier "WindowsInstaller3_1") et "dotNetFx40_Client_x86_x64.exe" (dans le dossier "DotNetFX40Client"), je crois que c'est la norme.
- Je utiliser 7zip pour créer le SFX comme suit:
Tout d'abord, utilisez 7-zip pour compresser tous les fichiers en une seule archive:
7z.exe a -r AppInstallFiles.7z *
Ensuite, je fais une copie binaire avec le 7zS.fichier sfx (utilisé pour créer un installeur auto-extractible), mon fichier de config, et de l'archive. Le fichier de configuration est comme suit:
;!@Install@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
;!@InstallEnd@!
Et je copie avec la ligne:
copy /b 7zS.sfx + config.txt + AppInstallFiles.7z MyAppInstaller.exe
Le programme d'installation fonctionne parfaitement sur les ordinateurs qui ont déjà .Net 4.0 Mon problème se pose sur les ordinateurs qui n'ont pas d' .Net Framework - je exécuter le SFX, il extrait le tout à un répertoire temp. Puis, quand setup.exe reconnaît que l'ordinateur n'a pas .Net 4.0, il appelle la .Net Programme D'Installation. Cette extrait de son propre répertoire temp et commence l'installation. À la fin, il demande de redémarrer l'ordinateur. La touche "N" pour quitter l'installation complète. Appuyer sur "Oui" redémarre l'ordinateur, et sur de vous connecter à nouveau il y a une erreur: "Une erreur s'est produite en essayant d'installer MyApp" avec les détails des "Impossible de localiser le fichier de l'application App Installer.msi'
Il semble que le problème est, quand le programme d'installation de mains hors de l' .Net programme d'installation, et la .Net programme d'installation redémarre, la temp répertoire contenant l'une de Mes applications installer les fichiers est supprimé. J'ai essayé de commutation de setup.exe à l'aide de l'Application de l'Installateur.msi," cependant, cela conduit simplement à la msi rapports que l'ordinateur n'a pas .Net et suggérant un téléchargement sur le web. Comme je l'ai peut être l'installation de l'application en mode hors connexion des situations, cela ne fonctionne pas pour moi.
Quelqu'un d'autre a essayé d'inclure l' .Net programme d'installation avant dans un 7-zip SFX, et si oui, comment ont-ils résoudre? Je préfère le garder à l'aide de 7zip si possible, mais que d'autres outils si nécessaire.
OriginalL'auteur L.J. | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Le problème est que les SFX supprime les fichiers extraits après setup.exe les finitions. Pour éviter cela, vous pouvez utiliser le InstallPath paramètre:
Mais dans ce cas, extrait les fichiers ne seront pas supprimés. Vous pouvez supprimer ces fichiers de votre MSI, par exemple.
PS. Si vos clients vous exécutez le programme d'installation à travers une Session Bureau à Distance, vous avez également envisager de ce problème
Aussi, merci pour le heads up sur le bureau à distance de problème, mais ce n'est pas un problème pour moi. Il semble aussi que j'ai pu extraire de l'app (présumé) répertoire dans program files pour l'éviter. cependant, qui pourrait être irritant pour l'utilisateur qui installe l'app ailleurs et de ne pas attendre le répertoire %programfiles%\MONAPPLI dossier d'exister.
Nous utilisons de la modification de la 7-zip SFX à partir de 7zsfx.info/en. Il prend en charge InstallPath et de nombreux autres paramètres.
lien du changelog dit la dernière édition était en 2007.
OriginalL'auteur Serghei Gorodetki
Que j'ai installé sur une solution que j'ai trouvé assez acceptable. Depuis la publication des résultats de l'sfx dossier temp de supprimer lui-même sur le reboot, j'ai exécuter un fichier de commandes plutôt que de setup.exe. Le fichier de commandes se déplace des copies de tout dans le répertoire temp pour un nouveau répertoire dans le répertoire temp, et appelle le programme d'installation à partir de là:
Ce dossier, puis persiste au redémarrage, permettant à l'installation de continuer. Comme serghei notes, c'est techniquement un problème, car il dure jusqu'à ce que l'utilisateur supprime manuellement les fichiers temp, mais ses acceptable compte tenu de la taille de mon application moderne par rapport à des disques durs
OriginalL'auteur L.J.