2016-03-03 3 views
2

После установки, я имею следующую структуру папок в папке C:\Program Files (x86):Как удалить сгенерированные папки и файлы через Wix при удалении?

Folder Structure after install

Путь к папке generated является: C:\Program Files (x86)\CompanyName\AppName\generated

Папка generated содержит вложенные папки и файлы, они будут созданы по заявке во время выполнения через код C#:

var lPathToDir = Path.Combine(lFileService.GetFilePath, pSamAccountName); 

if (!Directory.Exists(lPathToDir)) 
{ 
    Directory.CreateDirectory(lPathToDir); 
} 

Переменная lPathToDir может иметь значения:

C:\Program Files (x86)\CompanyName\AppName\generated\user1 
// or 
C:\Program Files (x86)\CompanyName\AppName\generated\user2 

Тогда это выглядит следующим образом:

enter image description here

Моя проблема: После удаления, эти подпапки user1, user2 не будут удалены. Я использую следующий Wix заявление:

<!-- Target installation folder --> 
<Directory Id="ProgramFilesFolder" Name="$(var.ProgramFilesFolder)"> 
    <Directory Id="APPLICATIONFOLDER" Name="$(var.AppFolderName)"> 

     <Directory Id="BIN" Name="bin" /> 
     <Directory Id="HELP" Name="help" /> 
     <Directory Id="GENERATED" Name="generated" /> 

     <Component Id="RemoveAll" Guid="THE-GUID-HERE"> 
     <RemoveFile Id="RemoveAllFilesOnUninstall" Directory="APPLICATIONFOLDER" Name="*.*" On="uninstall" /> 
     <RemoveFolder Id="RemoveAllFoldersOnUninstall" Directory="APPLICATIONFOLDER" On="uninstall" /> 
     <util:RemoveFolderEx On="uninstall" Property="GENERATED" /> 
     </Component> 

    </Directory> 
</Directory> 

После удаления:

enter image description here

Почему эти папки остаться и как я могу удалить эти сгенерированные папки из папки установки? Возможно, мне нужно установить какие-либо разрешения при создании этих папок через C#?

+0

[Эта нить] (http://stackoverflow.com/questions/195919/remove-files-when-uninstalling-wix) должен помочь вам. В частности, топ-2 лучших ответов. –

+0

@ Ян Скляренко: Как вы можете видеть, я уже использую решение наилучшего ранжированного ответа без успеха. – Simon

+0

Ах, верно, пропустил это. –

ответ

1

Работает сейчас с RemoveFolderEx, как предложил Боб Арнсон. Но в дополнение к декларации <util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" /> есть также некоторые заявления реестра необходимо:

<!-- add this: --> 
<Property Id="APPLICATIONFOLDER"> 
    <RegistrySearch Key="SOFTWARE\$(var.Manufacturer)\$(var.AppName)" Root="HKLM" Type="raw" Id="APPLICATIONFOLDER_REGSEARCH" Name="Path" /> 
</Property> 

<Directory Id="BIN" Name="bin" /> 
    <Directory Id="HELP" Name="help" /> 
    <Directory Id="GENERATED" Name="generated" /> 

    <Component Id="RemoveAll" Guid="THE-GUID-HERE"> 
    <RemoveFile Id="RemoveAllFilesOnUninstall" Directory="APPLICATIONFOLDER" Name="*.*" On="uninstall" /> 
    <RemoveFolder Id="RemoveAllFoldersOnUninstall" Directory="APPLICATIONFOLDER" On="uninstall" /> 

    <!-- add this: --> 
    <RegistryValue Root="HKLM" Key="SOFTWARE\$(var.Manufacturer)\$(var.AppName)" Name="Path" Type="string" Value="[APPLICATIONFOLDER]" KeyPath="yes" /> 

    <util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" /> 
    </Component> 

</Directory> 

2

Используйте RemoveFolderEx в WixUtilExtension. Я написал об этом on my blog назад, когда я его представил.

+0

Большое спасибо за ваш ответ. Я добавил «RemoveFolderEx» в мое объявление, но папка GENERATED все еще остается. – Simon

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