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?

Était-ce utile?

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.

    Licencié sous: CC-BY-SA avec attribution
    Non affilié à StackOverflow
    scroll top