Visual Studio Setup Project условный, если файл существует - PullRequest
12 голосов
/ 05 ноября 2010

У меня есть проект установки / развертывания для моего приложения, и он выводит определенные файлы (* .dll, * .dat) в папку приложения.

Я хотел бы установить условие для проверки, еслиФайл в настоящее время существует или нет.Если это не так, напишите это, но если это произойдет, не устанавливайте его из пакета.Возможно ли это?

Файл называется «database.dat», и в разделе «Свойства» я вижу атрибут «Условие», но я не знаю, что туда вставить.

Любой вклад с благодарностью.Заранее спасибо.

Редактировать:

Причина, по которой он уже существует, заключается в том, что из предыдущей установки будут данные из набора данных / таблицы данных, которые мы не хотим перезаписывать.1011 *

Ответы [ 4 ]

28 голосов
/ 14 октября 2011

Чтобы установить файл, только если он еще не существует, выполните следующие действия:

  1. Добавьте запись «Поиск целевой машины» в представлении «Условия запуска» в вашем проекте установки.

  2. заполните свойство FileName и свойство Folder.

  3. свойство Property должно быть константой, которую вы можете запомнить, например "MY_AWESOME_FILE_EXISTS"
  4. в представлении «Файловая система» вашего проекта найдите компонент для установки и добавьте его к свойству Condition «not MY_AWESOME_FILE_EXISTS»

Это все.

Источники (поскольку я просто должен был выяснить это для себя):

1 голос
/ 10 марта 2016

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

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370531(v=vs.85).aspx

Мне кажется, вам вообще ничего не нужно делать.

0 голосов
/ 05 августа 2014

В проекте установки щелкните правой кнопкой мыши файл, который вы хотите сохранить в папке установки, выберите «Свойства» и установите для параметра «Постоянный» значение true.

0 голосов
/ 05 ноября 2010

Атрибут Condition имеет именно то, что вам нужно: условие Exists .Упрощенный пример:

<Copy Condition="!Exists($(DestPath)database.dat)"
      SourceFiles="$(SrcPath)database.dat"
      DestinationFolder="$(DestPath)"/>

См. Также эту тему .

...