2010-07-28 1 views
1

Не могли бы вы рассказать мне, что не так со следующим кодом? Я могу получить доступ к данным пользовательских действий во время установки, и я добавляю их значения в коллекцию пользовательских действий сеанса. Однако во время удаления I пары значений не находятся в коллекции.Как получить доступ к данным пользовательского действия (свойствам) сеанса во время установки и удаления в Wix?

public class CustomActions 
{ 
    //This action is only called during application install 
    [CustomAction] 
    public static ActionResult CreateToolbar(Session session)  
    { 
     //This works fine the value is properly sent from wix script 
     //The variable toolbarName has the expected value 
     string toolbarName = session["VSTOCustomAction_ToolbarName"]; 

     //Save the value for uninstaller 
     session.CustomActionData.Add("VSTOCustomAction_ToolbarName", toolbarName); 
     ... 
    } 

    //This action is only called during application uninstall 
    [CustomAction] 
    public static ActionResult RemoveToolbar(Session session) 
    { 
     //Get the toolbar name and remove it 
     //Why does the following call return null? 
     string toolbarName = session.CustomActionData["VSTOCustomAction_ToolbarName"];   
     ... 
    } 
} 

Below is the WIX part that calls the above custom action. 

<!-- Include the VSTO Custom action --> 
<Binary Id="VSTOCustomAction" SourceFile="CustomAction.CA.dll"/> 
<CustomAction Id="CreateToolbar" BinaryKey="VSTOCustomAction" DllEntry="CreateToolbar" Execute="immediate"/> 
<CustomAction Id="RemoveToolbar" BinaryKey="VSTOCustomAction" DllEntry="RemoveToolbar" Execute="immediate"/> 
... 
<CustomAction Id="PropertyAssign_ToolbarName" Property="VSTOCustomAction_ToolbarName" Value="MyToolBarName"/> 
... 
<!-- Modify the install sequence to call our custom action --> 
<InstallExecuteSequence> 
    <Custom Action="PropertyAssign_ToolbarName" Before="CreateToolbar"><![CDATA[(&ToolbarComponent = 3) AND NOT (!ToolbarComponent = 3)]]></Custom> 
    <Custom Action="CreateToolbar" After="InstallFinalize"><![CDATA[(&ToolbarComponent = 3) AND NOT (!ToolbarComponent = 3)]]></Custom> 
    <Custom Action="RemoveToolbar" After="InstallFinalize"><![CDATA[(&ToolbarComponent = 2) AND NOT (!ToolbarComponent = 2)]]></Custom> 
</InstallExecuteSequence> 

ответ

0

кажется, что вы только создать свойство VSTOCustomAction_ToolbarName при установке ToolbarComponent, поэтому при попытке удалить, свойство VSTOCustomAction_ToolbarName никогда не создается и не установлен.

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

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

  • Нет связанных вопросов^_^