Проект установки Visual Studio удаляет только обновленные файлы - PullRequest
0 голосов
/ 25 марта 2020

Я работаю над старым проектом Visual Studio 2008, в котором был проект установки. Я обновил все до VS2019, внес изменения в код, увеличил версию, добавил несколько файлов и произвел настройку. Чистая установка работает отлично.

Когда я сначала устанавливаю старую версию, используя сборку установки в VS2008, а затем запускаю новую установку, чтобы обновить ее, все go странно. Новая установка установит все новые файлы, и перед самым завершением удалит все файлы, которые были перезаписаны. Останутся только файлы, которые не существовали.

Например, старая установка помещает эти файлы в папку с программным файлом:

- program.exe   v1.0
- lib.dll       v1.0

Затем новая установка установит эти файлы, перезаписав старые:

- program.exe   v2.0
- lib.dll       v2.0
- other.dll     v1.0
- info.txt      v1.0

Непосредственно перед завершением установки и включением кнопки [закрыть] содержимое папки меняется на:

- other.dll     v1.0
- info.txt      v1.0

Я проверил это на нескольких компьютерах (Win 10 до Win 7) и использовал инструмент filemon, чтобы убедиться, что новые файлы действительно установлены, а затем удалены. Журнал событий показывает только успешную установку. Снова запустите новую настройку и выберите «восстановить», и файлы останутся. Так что это обходной путь, но не самый хороший для многих пользователей.

Тест с двумя сборками VS2019 с разными версиями работает правильно. Старые настройки VS2008 также работали правильно. Таким образом, возникает проблема при обновлении сборки сборки с VS2008 с помощью сборки сборки с VS2019.

Кто-нибудь знает, как это исправить, чтобы при установке не удалялись файлы?

1 Ответ

0 голосов
/ 26 марта 2020

Хорошо, я видел несколько вопросов VS2010, которые выглядели одинаково. Решения там, кажется, вручную редактировать файл MSI после сборки. Далекий от оптимального, и я предполагаю, что это было исправлено MS в VS2019.

Оказывается, что они не "исправили" его, но позволяют использовать идентификаторы обратной совместимости. Я вдруг увидел эту опцию при повторном просмотре панели настроек. Изменить на True:

BackwardCompatibleID

И это действительно решает мою проблему.

Дополнительная информация в этом ответе

Этот вопрос можно удалить, если кто-то считает его дубликатом. Если вы считаете, что это полезно, я приму здесь свой собственный ответ для архива.

...