2010-06-29 2 views
0

Я использую VS2010 и WIX 3.5.WIX C# CustomAction, что я делаю неправильно?

1) Я создал проект установки WIX.

2) Затем я добавил в проект # пользовательского действия решения C и назвал его

namespace CustomActions 
{ 
    public static class CustomActions 
    { 
    [CustomAction] 
    public static ActionResult CustomAction1(Session session) 
    { 
     Debugger.Break(); 
     MessageBox.Show("It works"); 
     session.Log("Begin CustomAction1"); 
     return ActionResult.Success; 
    } 
    } 
} 

3) Затем я составил CustomActions проект «CustomActions» и добавил ссылку на него из моего проекта установки.

4) И, наконец, положить в .wxs файл:

<Binary Id="CustomActions" SourceFile="$(var.CustomActions.TargetDir)$(var.CustomActions.TargetName).CA.dll"/> 

<CustomAction Id="CustomAction1" BinaryKey="CustomActions" DllEntry="CustomAction1" Execute="immediate" /> 

Это не работает. Что я делаю не так? Пожалуйста, помогите мне.

ответ

1

Вы также должны планировать пользовательские действия для запуска

<InstallUISequence> 
     <Custom Action="CustomAction1" After="AppSearch"/> 
    </InstallUISequence> 

Кроме того, вы должны знать, что работает в пределах песочницы MSI много вещей. Я не верю, что ваш вызов MessageBox.Show будет работать. Вместо этого вам придется полагаться на регистрацию сеанса.

+0

Вызов MessageBox.Show() будет работать, если он ссылается на пространство имен System.Windows.Forms, а также добавил директиву «Использование System.Windows.Forms» – Mario

+0

Я дал ему тест, и это действительно похоже работать. Я не верю, что это хорошая идея, но любой способ, который выполняет свою работу. :) –

+0

вы должны использовать сеанс. Сообщение, чтобы показать сообщение, иначе вы не можете гарантировать, что окно сообщения будет сверху, даже без дополнительного кодирования –

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