Как сказать MSI не перезаписывать существующий файл в Setup & Deployment Project в VS2005?
У меня есть проект установки и развертывания в VS2005. Один из файлов, которые я устанавливаю, - это файл данных SQLite.
Я собираюсь выпустить новую версию программного обеспечения, но я обнаружил, что если я запускаю обновление на существующей установке, оно перезаписывает файл данных.
У меня есть обновленный файл данных в проекте установки, так что он новее, чем уже установлен, но я не хочу его перезаписывать.
Я пытался установить постоянное свойство для этого файла в True, но нет выгода.
Есть предложения?
3 ответа:
Хорошо, вот обходной путь, который я использовал:
- в моем проекте установки я переименовал свой пустой файл базы данных из базы данных.БД в базу данных-пусто.дБ.
- в моем приложении я проверяю, есть ли база данных.БД отсутствует, а копирование базы данных-пустое.БД в базу данных.БД, если это так.
- затем просто загрузите существующую базу данных.db
Таким образом, я могу обеспечить локальную копию файла данных (базы данных.db) не заменяется более новыми версиями программного обеспечения.
В MSI лучшим способом было бы сделать запись в таблицеобновления , определив, является ли это установкой обновления, и установив свойство, если это так. Затем поместите файл данных в компонент и поставьте условие для этого компонента. Кроме того, сделайте запись в таблице AppSearch, проверяя наличие файла (через таблицу DrLocator).
Я не знаю, поддерживает ли проект установки и развертывания что-либо из этого. Так как запасной вариант, установите файл с другим именем,а затем создайте пользовательское действие, которое копирует файл условно.
Потому что VS2005 setup при обновлении программы сначала удаляет исходный установленный экземпляр а затем установить новый, так что для этого файл будет удаляться каждый раз.
Чтобы избежать замены или перезаписи файла, я предлагаю следующее: 1-отметьте файл как только для чтения в проекте установки. 2-отметьте файл как постоянный в проекте установки.
Теперь после обновления файла он не будет перезаписан, но ваше приложение не может работать с этим файлом, потому что он доступен только для чтения, поэтому при запуске приложения проверьте, доступен ли файл данных только для чтения.