2014-10-14 4 views
1

Я создал установщик wix, используя тепло cmd. При удалении все файлы удаляются, но не все папки удаляются. это соответствующая часть моего кода:Wix - удалить удаленные файлы, но не папки

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="$(var.PlatformProgramFilesFolder)"> 
    <Directory Id="companyDir" Name="companyName"> 
     <Directory Id="INSTALLFOLDER" Name="AppName"> 
     <Directory Id="INSTALLDIR" > 
      <Directory Id="bin" Name="bin"> 
      <!-- Auto-start via Registry --> 
      <Component Id="AppNameAutoStartUp" Guid="MYGUID"> 
      <Condition>AUTOMATIC_START_UP=1 OR Installed</Condition> 
       <RegistryValue Id="App.rst" Root="HKCU" Action="write" Key="Software\Microsoft\Windows\CurrentVersion\Run" Name="AppName" Value="[#AppName.exe] -sc" Type="string" /> 
      </Component> 

      </Directory> 
     <Directory Id="docs" Name="Docs"> 
     </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Directory> 
    <Directory Id="CommonAppDataFolder"> 
    <Directory Id="ConfCompanyDir" Name="Company"> 
     <Directory Id="CONFINSTALLFOLDER" Name="AppName"> 
     <Directory Id="CONFINSTALLDIR" > 
      <Directory Id="conf" Name="conf"> 
      </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Directory> 
    <!-- Shortcuts and Directories for Shortcuts --> 
    <Directory Id="ProgramMenuFolder" Name="Programs"> 
    <Directory Id="ProgramMenuDir" Name="AppName"> 
     <Component Id="ProgramFilesShortcut" Guid="MYGUID"> 
     <Condition>DESKTOP_SHORTCUT = 1</Condition> 
     <Shortcut Id="desktopAppName" Directory="DesktopFolder" Name="AppName" Target="[#AppName.exe]" WorkingDirectory="bin" Icon="AppIcon.ico"> 
     </Shortcut> 
     <RemoveFolder Id="ProgramFilesShortcut" On="uninstall" /> 
     <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Name="installed" Type="integer" Value="1" KeyPath="yes" /> 
     </Component> 
     <Component Id="ProgramMenuDir" Guid="MYGUID"> 
      <Shortcut Id="startmenuAppName" Directory="ProgramMenuFolder" Name="AppName" Target="[#AppName.exe]" Icon="AppIcon.ico" WorkingDirectory="bin" Arguments="-s"> 
      <!-- Set the AppID in order to get toasts to work --> 
      <ShortcutProperty Key="System.AppUserModel.ID" Value="Company.AppName" /> 
     </Shortcut> 
     <RemoveFolder Id="ProgramMenuDir" On="uninstall" /> 
     <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Name="installed" Type="integer" Value="1" KeyPath="yes" /> 
     </Component> 
    </Directory> 
    </Directory> 
    <Directory Id="DesktopFolder" Name="Desktop" /> 
</Directory> 

Документы папка удаляется при удалении, но папка бен не удаляется (хотя он пуст, все файлы будут удалены). Кто-нибудь знает, почему он не удаляется?

ответ

0

Я добавил код, как это к вашему Feature элемента:

<Component Directory='INSTALLDIR'> 
    <RemoveFolder Id='CleanupApplicationFolder' On='uninstall' /> 
</Component> 

Таким образом, вы должны изменить INSTALLDIR в основная папка (и она должна удалить все).

+0

Я не уверен, что понял, что вы отвечаете. Я попытался добавить вашу линию между моими строками следующим образом: (но это не сработало) <Идентификатор компонента = "Очистка файлов" Guid = "MYGUID"> <Идентификатор RemoveFolder = 'CleanupApplicationFolder' On = 'деинсталлировать' /> eskadi

+0

Set 'Справочник = "INSTALLFOLDER"' к этому _Component_, а затем попытаться – Buzka91

+0

я не могу установить 'Directory' атрибут, потому что он вложен под элементом Directory. При попытке сделать это при ошибке компиляции. – eskadi

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

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