2014-01-30 2 views
4

У меня есть программа установки, у которой есть собственный экран, содержащий кнопку. Когда эта кнопка нажата, должно выполняться пользовательское действие, которое проверяет несколько вещей и возвращает успех или ошибку.Wix C# Пользовательское действие не выполняется вообще

Я моя кнопка определяется следующим образом:

<Control Type="PushButton" Id="DatabaseVerifyConnectionButton" X="118" Y="150" Width="116" Height="17" Text="Verify Connection" Property="DATABASEVERIFYCONNECTIONBUTTONPROPERTY" Default="yes"> 
    <Publish Event="DoAction" Value="VerifyDatabaseConnection">1</Publish> 
    <Publish Event="SpawnDialog" Value="VerifySuccessDlg">VERIFIEDCONNECTION = "1"</Publish> 
    <Publish Event="SpawnDialog" Value="VerifyFailedDlg">VERIFIEDCONNECTION = "0"</Publish> 
</Control> 

Мой Custom Action XML

<CustomAction Id="VerifyDatabaseConnectionCA" 
       BinaryKey="DatabaseCustomAction.CA.dll" 
       DllEntry="VerifyDatabaseConnection2" 
       Execute="immediate" 
       Return="check"/> 

<CustomAction Id='VerifyDatabaseConnection' 
    Property='VerifyDatabaseConnectionCA' 
    Execute='immediate' 
    Value="ServerIP=[DATABASESERVERIPTEXTBOXPROPERTY];Username=[DATABASEUSERNAMETEXTBOXPROPERTY];Password=[DATABASEPASSWORDTEXTBOXPROPERTY]"/> 

Мой Custom Action C# код:

[CustomAction] 
    public static ActionResult VerifyDatabaseConnection(Session session) 
    { 
     System.Diagnostics.Process.Start(@"C:\Windows\System32\calc.exe"); 

     return ActionResult.Failure; 
    } 

Журналы показывают следовать :

MSI (c) (58:B4) [16:39:45:183]: Doing action: VerifyDatabaseConnection 
Action 16:39:45: VerifyDatabaseConnection. 
Action start 16:39:45: VerifyDatabaseConnection. 
Action ended 16:39:45: VerifyDatabaseConnection. Return value 1. 

Я пробовал много чего. Прикрепление отладчика не работает. Возвращение успеха или неудачи, кажется, ничего не имеет значения. Черт, он даже не запускает калькулятор, когда вы нажимаете кнопку. Я заметил, что изменение точки входа для пользовательского действия, похоже, совсем не имеет значения.

Я также кое-что прочитал о MakeSfxCA.exe, но я не мог на всю жизнь найти НИКОГДА, как заставить его работать правильно. Но я также читал, что Visual Studio должен сделать это для вас, если вы добавили проект Custom Action в качестве проекта пользовательских действий, который я сделал.

У меня здесь полная потеря. Почему это не будет работать? Он показывает успех везде, но он просто не выполняет никакого кода вообще.

+1

+1 для хорошо объясненного вопроса – Isaiah4110

ответ

1
<CustomAction Id="VerifyDatabaseConnectionCA" 
        BinaryKey="DatabaseCustomAction.CA.dll" 
        DllEntry="VerifyDatabaseConnection2" 
        Execute="immediate" 
        Return="check"/> 

Проверить вы DLLEntry название «VerifyDatabaseConnection2» но фактическое пользовательское имя метода действия «VerifyDatabaseConnection» (2 отсутствует, так что никогда не вызывался ").

изменить Также опубликовать элемент для вызова «VerifyDatabaseConnectionCA» вместо «VerifyDatabaseConnection».

+1

Хорошо, но это был тест, который я проверил, если бы он сделал ошибку компилятора, если DllEntry был не прав. что ничего не происходит, когда 2 удаляется :) – Wotuu

+1

Можете ли вы изменить этот pu blish элемент для вызова «VerifyDatabaseConnectionCA» вместо «VerifyDatabaseConnection»? – Isaiah4110

+0

ОК, что действительно открывает калькулятор. Я увижу, почему это не работает так, как у меня было, и как я могу изменить параметры по-другому из пользовательского действия. Скажу, спасибо до сих пор! Делает мой день терпимым. – Wotuu

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