2009-12-09 6 views
0

Je suis en train d'écrire une installation pour notre SDK de développement interne. Une partie de ce SDK est un kit d'orientation pour Visual Studio 2008 (Version du cadre de référence: février 2008).WiX: Comment installer un module d'automatisation de guidage (GAT) à l'aide de WiX?

Malheureusement, je n'ai aucune idée de comment écrire une installation WiX pour le package de guidage créé. Comment faire ça?

Par défaut, l'Assistant Guidage-Package de Visual Studio ne prend en charge que la création d'un projet de déploiement Visual Studio. Cela pourrait-il être utile?

Je l'ai déjà essayé d'analyser le projet de déploiement afin de savoir quoi faire:

  • Le projet de déploiement appelle une action personnalisée. SourcePath pour l'action est un GuidanceInstaller.dll, CustomActionData est: /Configuration="[TARGETDIR]Guidance.xml ",
  • GuidanceInstaller.dll est la sortie d'un projet qui a également été créé par l'Assistant de package Visual Studio. Le projet ne se compose que d'une classe:

    using Microsoft.Practices.RecipeFramework; 
    
    [System.ComponentModel.ToolboxItem(false)] 
    public class InstallerClass : ManifestInstaller 
    { 
    } 
    

    me semble pour que toute action d'installation est caché dans la classe ManifestInstaller?

  • Guidance.xml est un fichier XML créé par l'assistant DflGuidance.

Comment créer une installation WiX à partir de cette information? Bien que les idées alternatives soient les bienvenues! (Une pensée que je devais était d'intégrer le résultat msi/fichier .cab du projet de déploiement Visual Studio dans mon Wix-installation, est-ce possible?)

Répondre

1

Contrôles pré-condition

Pré-requis sont,

  1. Installation de Visual Studio 2008 IDE.
  2. Exécution Dotnet Framework 2.0
  3. Installation GAX.

Pour vérifier ces derniers, référence ces deux DLL:

  1. WixNetFxExtension (la plupart du temps à partir de C: \ Program Files \ Windows Installer XML v3 \ bin \ WixNetFxExtension.dll)
  2. WixUIExtension (la plupart du temps de C : \ Program Files \ Windows Installer XML v3 \ bin \ WixUIExtension.dll)

et ajouter des conditions préalables à votre fichier .wxs comme indiqué ci-dessous.

<!-- Dotnet 2.0 framework installation check - START --> 
    <PropertyRef Id="NETFRAMEWORK20" /> 
    <Condition Message="Framework 2.0 is required for the setup to continue."><![CDATA[INSTALLED or NETFRAMEWORK20]]></Condition> 
    <!-- Dotnet 2.0 framework installation check - END --> 

    <!-- VS.NET and VS.C# installation check - START --> 
    <Property Id="VCSHARP"> 
    <RegistrySearch Id="VCShaprp" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\InstalledProducts\Microsoft Visual C#" Name="Package" Type="raw" /> 
    </Property> 
    <Condition Message="Please install Visual C# with Visual Studio 2008 to continue. Setup will now abort."><![CDATA[INSTALLED or VCSHARP]]></Condition> 
    <!-- VS.NET and VS.C# installation check - END --> 


    <!-- GAX for VS.2008 installation check - START --> 
    <Property Id="GAX"> 
    <RegistrySearch Id="gax" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\InstalledProducts\RecipeManagerPackage" Name="Package" Type="raw" /> 
    </Property> 
    <Condition Message="Please install Guidance Automation Extension on Visual Studio 2008 to continue. Setup will now abort."><![CDATA[INSTALLED OR GAX]]></Condition> 
    <!-- GAX for VS.2008 installation check - END --> 

    <!-- Pre-requisite check - END --> 

Dossier d'installation

Define lancer la configuration du dossier d'installation de temps. Ce link vous aidera à répondre à tous vos "comment" s.

Courir Installer

Vous devez modifier votre InstallerClass comme indiqué ci-dessous.

[System.ComponentModel.ToolboxItem(false)] 
    [RunInstaller(true)] 
public class InstallerClass : ManifestInstaller 
{ 
    public InstallerClass() 
     : base() 
    { } 

    public override void Install(System.Collections.IDictionary stateSaver) 
    { 
     base.Install(stateSaver); 
    } 

    public override void Commit(System.Collections.IDictionary savedState) 
    { 
     base.Commit(savedState); 
    } 

    public override void Rollback(System.Collections.IDictionary savedState) 
    { 
     base.Rollback(savedState); 
    } 
} 

Sans ce programme d'installation WIX jette une exception disant pas de classe sont marqués comme « RunInstaller »

Après cela, vous pouvez utiliser ci-dessous des éléments WIX pour exécuter installutil.exe pour exécuter votre classe d'installation.

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize" /> 
    <Custom Action="ManagedInstall" After="InstallFinalize" >NOT Installed</Custom> 
    <Custom Action="ManagedUnInstall" After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom> 
    </InstallExecuteSequence> 

    <CustomAction Id="ManagedInstall" 
       Directory='INSTALLLOCATION' 
       ExeCommand='"[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\installUtil.exe" /LogToConsole=false /DesignMode /hive=9.0 /Configuration=&quot;[INSTALLLOCATION]Guidance.xml&quot; &quot;[INSTALLLOCATION]PackageInstaller2008.dll&quot;' 
       Return='check' > 
    </CustomAction> 

    <CustomAction Id="ManagedUnInstall" 
       Directory='INSTALLLOCATION' 
       ExeCommand='"[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\installUtil.exe" /u /LogToConsole=false /DesignMode /hive=9.0 /Configuration=&quot;[INSTALLLOCATION]Guidance.xml&quot; &quot;[INSTALLLOCATION]PackageInstaller2008.dll&quot;' 
       Return='check' > 
    </CustomAction> 

Espérons que cela aide.

Questions connexes