Как запретить установщику WiX удалять пустую папку, которая существовала до установки - PullRequest
1 голос
/ 15 июня 2019

Мой установщик, созданный с помощью MS WiX, устанавливает компонент (некоторые файлы) в существующую папку в каталоге данных приложения пользователя.Эта существующая папка пуста.Таким образом, при удалении программа установки удалит эту папку, чего не следует делать.Так как это предотвратить?

Код:

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="LocalAppDataFolder" Name="AppData">
    <Directory Id="OtherCompanysFolder" Name="OtherCompany">
      <Directory Id="OtherProductsFolder" Name="Product">
        <Directory Id="AddOnsFolder" Name="AddOns">
          <Directory Id="MyAddOnFolder" Name="MyAddOn">
          </Directory>
        </Directory>
      </Directory>
    </Directory>
  </Directory>
</Directory>
</Fragment>

    <Fragment Id="AddOnFiles">
    <ComponentGroup Id="ProductComponents" Directory="MyAddOn">
      <Component Id="ProductComponent" Guid="{xxx}">
        <RegistryKey Root="HKCU" Key="Software\$(var.Manufacturer)\$(var.Product)">
          <RegistryValue Type="string" Value="" KeyPath="yes" />
        </RegistryKey>
        <RemoveFolder Id="RemoveMyAddOnFolder" On="uninstall" Directory="MyAddOnFolder" />
        <RemoveFolder Id="RemoveAddOnsFolder" On="uninstall" Directory="AddOnsFolder" />
        <RemoveFolder Id="RemoveOtherProductsFolder" On="uninstall" Directory="OtherProductsFolder" />
        <RemoveFolder Id="RemoveOtherCompanysFolder" On="uninstall" Directory="OtherCompany" />
        <File Id="Executable" Source="path\to\My.exe" />
      </Component>
    </ComponentGroup>
    </Fragment>

Проблема в том, что если я удалю узлы

<RemoveFolder Id="RemoveAddOnsFolder" On="uninstall" Directory="AddOnsFolder" />
<RemoveFolder Id="RemoveOtherProductsFolder" On="uninstall" Directory="OtherProductsFolder" />
<RemoveFolder Id="RemoveOtherCompanysFolder" On="uninstall" Directory="OtherCompany" />

Свет и Лед будут жаловаться:

ошибка LGHT0204: ICE64: каталог AddOnsFolder находится в профиле пользователя, но не указан в таблице RemoveFile.

Сохранение этих узлов делает Light и Ice счастливыми, но удаляет AddOnsFolder (которыйэто не должно делать).

Любые идеи, что я мог сделать?

PS: В разделе комментариев было рекомендовано подавить сообщение об ошибке с помощью флага (-sice: ICE64).Это не решение.Пока установщик компилируется, папка AddOn по-прежнему удаляется (что не должно происходить)

...