2009-12-09 4 views
0

В настоящее время я пишу установку для нашего внутреннего SDK. Часть этого SDK - это пакет инструкций для Visual Studio 2008 (версия руководства: февраль 2008 г.).WiX: Как установить пакет автоматизации управления (GAT) с помощью WiX?

К сожалению, я не знаю, как написать WiX -установку для созданного пакета инструкций. Как это сделать?

По умолчанию мастер-макет руководства в Visual Studio поддерживает создание проекта развертывания Visual Studio. Может ли это быть полезным?

я уже попытался проанализировать проект развертывания для того, чтобы выяснить, что делать:

  • Проект развертывания называет пользовательское действие. SourcePath для действия - это GuidanceInstaller.dll, CustomActionData: /Configuration="[TARGETDIR]Guidance.xml ",
  • GuidanceInstaller.dll - это результат проекта, который также был создан мастером пакета Visual Studio. Проект состоит только из одного класса:

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

    Кажется мне, что каждое действие установки скрыт в классе ManifestInstaller?

  • Guidance.xml - это XML-файл, созданный мастером DflGuidance.

Как создать установку WiX из этой информации? Хотя альтернативные идеи приветствуются! (Одна мысль у меня была в том, чтобы интегрировать полученный файл_MSI/кабины из проекта развертывания Visual Studio в моем WiX-установке, это возможно?)

ответ

1

Предварительное условие проверяет

Предпосылками являются,

  1. Установка Visual Studio 2008 IDE.
  2. Dotnet Framework 2.0 runtime
  3. GAX установка.

Чтобы проверить это, Ссылочная эти две библиотеки DLL:

  1. WixNetFxExtension (в основном из C: \ Program Files \ Установщик Windows XML v3 \ Bin \ WixNetFxExtension.dll)
  2. WixUIExtension (в основном из C : \ Program Files \ Windows Installer XML v3 \ bin \ WixUIExtension.dll)

и добавьте предварительные условия в файл .wxs, как показано ниже.

<!-- 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 --> 

Установка папки

Define запустить установку папки установки времени. Это link поможет вам ответить на все ваши «как».

Запуск установки

Вы должны изменить свой InstallerClass, как показано ниже.

[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); 
    } 
} 

Без этого WIX инсталлятор сгенерирует исключение не говоря нет класса отмечены как «RunInstaller»

После этого вы можете использовать ниже элементы WIX для запуска installutil.exe запустить класс установки.

<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> 

Надеюсь, это поможет.

Смежные вопросы