все что связано с моей работой
Главная » Учебник WiX » Как управлять?

Как управлять?

Возникает резонный вопрос – можно ли обработку пользовательского действия создать в коде на C#, VB.NET или еще в чем-то подобном. В конце концов эти среды предлагают намного более богатый набор функций.

Ранее, в эпоху версии 2, обработка пользовательских действий в коде была возможна только с использованием хаков(дыр) и считалась очень плохой и опасной практикой. Версия 3 внесла изменения с введением ее Deployment Tools Foundation (DTF), набор библиотек классов .NET и связанных ресурсов. Если Вы можете принять очевидные ограничения (Вы должны удостовериться, что .NET присутствует на целевой машине, и могут быть проблемы во время удаления, если пользователь удалит .NET прежде, чем удалить Ваше приложение), вот наше предыдущее пользовательское действие, портированное на C#:

namespace WiXTutorial.Samples
{
  using System;
  using System.Collections.Generic;
  using System.IO;
  using Microsoft.Deployment.WindowsInstaller;

  public class SampleCheckPID
  {

    [CustomAction]
    public static ActionResult CheckPID(Session session)
    {
      string Pid = session["PIDKEY"];
      session["PIDACCEPTED"] = Pid.StartsWith("1") ? "1" : "0";
      return ActionResult.Success;
    }

  }
}

Есть одно небольшое изменение в нашем исходном коде SampleAskKeyNET. Имя DLL будет отличаться, потому что DLL, которая управляет, должна быть обернута в специальный пакет, связывающий Windows Installer с инсталляционным пакетом:

Также подготовьте маленький файл CustomAction.config. Он содержит параметры, которые понадобятся нашему пользовательскому действию, которым мы управляем.



  
    
  

Существует плата за относительную простоту работы с языком NET. Процесс сборки теперь более сложен. Если вы используете IDE, то все может быть проще, вы можете найти пример файла проекта в ветке DTF из исходного кода WiX. Здесь мы можем показать вам командную строку. Ищите Microsoft.Deployment.WindowsInstaller.dll, MakeSfxCA.exe и sfxca.dll в установленном наборе инструментов WiX. Там, где мы указали path, вы должны указать абсолютный полный путь, либо MakeSfxCA сообщит об ошибке и в результате DLL не будет использоваться.

csc.exe /target:library /reference:path\Microsoft.Deployment.WindowsInstaller.dll /out:CheckPID.dll CheckPID.cs
MakeSfxCA.exe path\CheckPIDPackage.dll path\sfxca.dll path\CheckPID.dll path\CustomAction.config path\Microsoft.Deployment.WindowsInstaller.dll
candle.exe SampleAskKeyNET.wxs UserRegistrationDlg.wxs
light.exe -ext WixUIExtension -out SampleAskKeyNET.msi SampleAskKeyNET.wixobj UserRegistrationDlg.wixobj

DTF имеет свою собственную документацию в наборе инструментов, поэтому мы не будем обсуждать его дальнейшем. Просто используйте документацию и примеры кода которые там есть.

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.