MSI обновление копирует только библиотеки DLL в папку установки, а остальные при первом запуске - PullRequest
1 голос
/ 05 июля 2011

У меня есть приложение, которое развертывается с помощью установщика MSI. Это версия 2. При установке последней версии этой установки, установщик копирует все в папку программы (dlls, exe, resourcefiles).

Но при обновлении этого приложения с версии 1 до 2 происходят некоторые странные вещи. Обновление хорошо, оно удаляет предыдущие файлы, копирует библиотеки DLL в папку и завершает работу мастера установки.

Когда я сейчас смотрю в папку установки, присутствуют ТОЛЬКО DLL. Когда я запускаю приложение из меню «Пуск» в первый раз, оно запускает ярлык MSI и снова появляется установщик, чтобы выполнить некоторую настройку. Теперь он копирует исполняемый файл и файлы ресурсов и запускает приложение.

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

1 Ответ

0 голосов
/ 05 июля 2011

Во время обновления установщик Windows использует правила управления версиями файлов , чтобы определить, установлен файл или нет. Чтобы установить все файлы во время обновления, вы можете убедиться, что:

  • все файлы размещены в компонентах , в которых версионный файл является ключевым элементом
  • все ключевые файлы-члены имеют более высокую версию файла по сравнению с вашей старой установкой

Установщик Windows оценивает, будет ли компонент установлен или нет, основываясь на его ключевом элементе. Поэтому, если файл ключевого элемента имеет более высокую версию, чем та, которая установлена ​​на компьютере, этот компонент устанавливается.

Другое решение состоит в том, чтобы задать для столбца Версия в таблице Файл высокое значение, например 65535.65535.65535.65535. Таким образом, установщик Windows всегда будет считать файл в MSI более новым, чем тот, который установлен на целевом компьютере.

...