Пользовательские настройки приложения C # сохраняются во время обновления - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть приложение C #, которое в настоящее время хранит пользовательские настройки / конфигурации в отдельном XML-файле. Мое приложение использует установщик wix и id, чтобы узнать, есть ли способ сохранить файл xml, если пользователь устанавливает более новую версию приложения, если они устанавливаются без предварительного удаления более старой версии. XML-файл хранится в папке CommonAppData и должен быть удален, если приложение удалено.

Резервный вопрос - есть ли лучший способ сделать это, чем мой текущий метод?

UPDATE

Я реализовал следующий код:

    <CustomAction Id="Cleanup_Files" Directory="CompanyFolder" ExeCommand="cmd /C RD 
        &quot;[CommonFolder]&quot; /s /q" Execute="deferred" Return="ignore" HideTarget="no" 
       Impersonate="no" />
    <InstallExecuteSequence>
      <Custom Action="Cleanup_Files" Before="RemoveFiles" >
        Installed AND REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE
      </Custom>
    </InstallExecuteSequence>

При этом удаляется каталог CommonFolder, необходимый для удаления, но он все равно удаляет каталог при обновлении. Какие изменения необходимы для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Решением для меня было последовать совету Клауса, но с некоторыми дополнительными изменениями в моем файле product.wxs.Мне пришлось добавить 'AllowSameVersionUpgrades = "yes" "в раздел MajorUpgrade.

    <MajorUpgrade AllowSameVersionUpgrades="yes" DowngradeErrorMessage="A newer version of 
    [ProductName] is already installed." />

Спасибо Клаусу за все их советы!

0 голосов
/ 19 ноября 2018

Самое простое, что можно сделать, это: не инсталлировать этот XML-файл установкой, а позволить ему создать приложение, если его там нет. При этом обновление не коснется файла. В этом случае также возможно перенести настройки из более старой (или более новой) версии.

Однако файл также останется при удалении. Если в этом случае требуется удалить его, вы можете сделать это с помощью специального действия с условием типа Installed AND REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...