Как создать пользовательские действия в C # и связать его в проекте установки wix - PullRequest
0 голосов
/ 11 января 2019

Как мне создать пользовательские действия и связать их с моим проектом установки WiX?

У меня есть:

  • WiX 3.11
  • Visual Studio

1 Ответ

0 голосов
/ 11 января 2019

Вам необходимо создать новый C # Custom Action Project для WiX v3 в вашем решении.
Это должно выглядеть так:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Deployment.WindowsInstaller;

namespace CustomAction
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult CustomAction(Session session)
        {
            session.Log("Begin CustomAction");

            return ActionResult.Success;
        }
    }
}

Измените имя функции на имя, соответствующее вашей функции.
После этого щелкните правой кнопкой мыши папку References в своем проекте установки WiX и выберите Добавить ссылку ... .
Перейдите на вкладку Проекты и выберите настраиваемое действие Проект.

Для последнего шага вам необходимо добавить этот код в ваш Product.wxs:

<Binary Id="CustomActionBinary" SourceFile="$(var.CUSTOMACTIONSNAME.TargetDir)$(var.CUSTOMACTIONSNAME.TargetName).CA.dll" />
<CustomAction Id="CUSTOMACTIONAME" Impersonate="no" BinaryKey="CustomActionBinary" DllEntry="CUSTOMACTIONFUNCTION" Return="check" />

Вам нужно только изменить несколько имен здесь:

  • CUSTOMACTIONSNAME = Имя пользовательского действия, которое было добавлено в папку ссылок (по умолчанию «CustomActions»)
  • CUSTOMACTIONNAME = Выберите имя для своего пользовательского действия, например «CreateConfig».
  • CUSTOMACTIONFUNCTION = Имя функции в вашем проекте настраиваемого действия, которую вы хотите вызвать.

Вот так.

Если вы теперь хотите вызвать настраиваемое действие в своем проекте установки, вам нужно всего лишь создать «настраиваемый» элемент с атрибутом «Action» с идентификатором настраиваемого действия в качестве значения, подобного следующему:

<Custom Action="CreateConfig" ... />

Пользовательское действие можно вставить в последовательность пользовательского интерфейса или последовательность установки следующим образом:

<!--User Interface Sequence-->
<InstallUISequence>
    <Custom Action='CustomAction1' Before='ExecuteAction' />
</InstallUISequence>

<!--Installation Sequence-->
<InstallExecuteSequence>
    <Custom Action='CustomAction1' After='InstallInitialize'>NOT Installed</Custom>
</InstallExecuteSequence>

Вы также можете вызвать настраиваемое действие из события в диалоговом окне (только фрагмент - несколько сложный):

 <...>

 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next">

   <Publish Event="DoAction" Value="CustomAction1">1</Publish>

 <...>
...