Bootstrapper: Comment compiler l'application et condition sine qua non en simple package .msi?
-
05-09-2019 - |
Question
Je suis en train de créer un package .msi pour l'application qui a une condition sine qua non pour l'installation. J'utilise Visual Studio 2005 pour Bootstrapper cette tâche. À cette fin, je l'ai fait ce qui suit: Situé dans le dossier C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ et créé un dossier pour ma condition (fait même structure que 'dotnetfx'); créé le « product.xml » et « package.xml » et les a placés de façon appropriée. J'ai gardé les fichiers XML très simple à ce jour pour tester l'installation:
product.xml
<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="MyPrereq" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="MyPrereq.exe" />
</PackageFiles>
<InstallChecks>
</InstallChecks>
<Commands Reboot="None">
<Command PackageFile="MyPrereq.exe" EstimatedInstallSeconds="90">
<InstallConditions>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<DefaultExitCode Result="Fail" String="GeneralFailure" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>
</Product>
package.xml
<?xml version="1.0" encoding="utf-8"?>
<Package Name="MyPrereq" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<Strings>
<String Name="Culture">en</String>
<String Name="DisplayName">MyPrereq</String>
<String Name="GeneralFailure">A fatal error occurred. The installation failed.</String>
</Strings>
</Package>
Maintenant, je peux ajouter la condition sine qua non de la liste et de construire mon projet d'installation.
Le problème:
La sortie de génération est le 'setup.exe', le paquet 'MyApp.msi', plus le sous-dossier appelé 'MyPrereq' contenant 'MyPrereq.exe'.
Je voudrais que la construction de créer un « setup.exe » et un « MyApp.msi », qui contiendrait le « MyPrereq » à l'intérieur, sans fichiers supplémentaires / répertoires.
Je sais que le framework .NET est une autre prereq pour mon application, et il est inclus dans le même .msi, ce qui devrait être possible en quelque sorte.
Comment puis-je y parvenir?
La solution
Vous pouvez créer un programme d'installation auto-extractible avec des outils tels que IExpress (à venir avec Windows) contenant tous les fichiers dans un seul exécutable (voir cette publication SO ).
Autres conseils
J'ai réussi à le faire avec IExpress.
Nous avons dû utiliser une petite astuce, cependant, qui est décrit ici Création d'un programme d'amorçage pour une application VS Shell
Malheureusement, la tâche MSBuild ne fournit pas la possibilité d'avoir la configuration l'utilisation des ressources installateurs prérequis trouvés dans la répertoire cible, vous devez manuellement mettre à jour le fichier de ressources appropriées pour supprimer le chemin codé en dur que cherche des conditions préalables à un sous-répertoire du même nom.
Ouvrez le programme Setup.exe dans Visual éditeur de ressources de studio de
Double-cliquez sur la ressource nommée, SETUPCFG dans le 41 dossier
Rechercher le "Vs Shell \" chaîne et supprimer les deux occurrences qui apparaissent
Enregistrez le fichier de ressources et l'exécutable Setup.exe sera mis à jour automatiquement
Exécuter iexpress Créer un nouveau package en suivant la Les étapes de l'Assistant IExpress et assurez-vous d'inclure les fichiers suivants: fichier MyVSShellApplication.msi fichier Setup.exe bootstrapper fichier vs_shell_isolated.enu.exe
Le problème est que les conditions préalables bootstrapper met dans un sous-dossier, et IExpress ne reconnaît pas les sous-dossiers. Il faut être prudent lors de l'édition « setup.exe » aussi, ne pas l'obtenir correct sur le premier essai.