2017-02-01 3 views
0

У меня есть служба Windows, и при ее запуске он регистрирует вложенные файлы журналов в месте установки службы Windows. Я пытаюсь написать настраиваемое действие, которое удалит указанные файлы только при удалении. Однако, когда он запускается, я получаю сообщение об ошибке «УСТАНОВКА - неправильная директория». Я предполагаю, что мне нужно изменить при выполнении пользовательского действия в предложении «После =»?», Но я не уверен, что это должно быть.CustomAction при удалении, где установлено INSTALLLOCATION

Это текущий код для файла .wxs

<Binary Id="CustomActionEXE" SourceFile="$(var.MyApp.TargetDir)MyApp.CA.dll" /> 
<CustomAction Id="RemoveLogFilesCA" BinaryKey="CustomActionEXE" DllEntry="RemoveLogFiles" Execute="immediate" Return="check"/> 
<InstallExecuteSequence> 
    <Custom Action="RemoveLogFilesCA" After="RemoveFiles"> 
    (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") 
    </Custom> 
</InstallExecuteSequence> 

и пользовательских действий код

public class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult RemoveLogFiles(Session session) 
    { 
     // Error here: "INSTALLLOCATION is an invalid directory", value not set when the custom action is being executed After="RemoveFiles" 
     //string installLocation = session.GetTargetPath("INSTALLLOCATION"); 
     return ActionResult.Success; 
    } 
} 

ответ

1

Сначала я хотел бы предложить файлы журналов и пользовательские данные 1) не должны быть удалены при удалении и 2) не должны находиться под ProgramFilesFolder. ProgramData бы Лучшее место.

Если вы должны рекурсивно удалить эти файлы, не изобретайте колесо с помощью своего собственного центра сертификации. Вместо этого используйте RemoveFolderEx Element (Util Extension).