Проект установки Visual Studio со всеми файлами из папки - PullRequest
4 голосов
/ 14 апреля 2009

У нас есть проект установки, который в настоящее время добавляет выходные данные проекта из различных проектов Visual Studio. Мы хотим изменить систему упаковки и использовать папку с кучей файлов развертывания, подготовленных для развертывания в настройке.
Но это означает, что нам нужно добавлять файлы по одному и продолжать добавлять их в каждую версию, когда появляются новые файлы.
В этом вопросе я увидел, что мы не можем добавлять файлы с такими правилами, как * .aspx.
Поэтому я рассматриваю возможность создания небольшого инструмента, который будет изменять файл vdproj в зависимости от доступных файлов. Можете ли вы помочь мне с форматом этого файла? Кажется, есть некоторые GUID, связанные с каждым включенным файлом.
У кого-нибудь есть лучшее решение, как это сделать?
Мы пока не думаем об использовании другого инструмента настройки, мы просто ищем простое решение для упаковки файлов.

Ответы [ 10 ]

6 голосов
/ 24 декабря 2010

Чтобы добавить всю папку, просто откройте окно проводника Windows и перетащите все файлы, которые вы хотите добавить, в представление файловой системы.

4 голосов
/ 19 августа 2009

Кажется, не было простого решения этого вопроса. Мы закончили тем, что изменили инструмент настройки и использовали Advanced Installer для создания установки, у него есть хорошая функция, которая синхронизирует файлы в папке для развертывания.

3 голосов
/ 30 октября 2014

У нас была такая же проблема. Вы НЕ можете перетаскивать / отбрасывать. Но вы можете перейти к нужному содержимому в проводнике Windows, скопировать элементы (которые могут включать подпапки), затем вернуться в VS Installer и вставить их (например, папку приложения).

Примечание. Если вам нужно создать пользовательские папки (например, c: \ html), вы также можете использовать этот подход, но вы должны сначала создать пользовательскую папку на левой панели (указав абсолютный путь в качестве цели), а затем снова перейти на левую панель и вставить.

Этот метод работает для упаковки набора папок, но НЕ синхронизирует папки, которые могут иметь различное содержимое! Если содержимое изменяется между развертываниями, вы должны повторно скопировать / вставить, чтобы файл установщика содержал все!

1 голос
/ 26 февраля 2019

Я наконец нашел реальное решение этой проблемы. Мне нужно было добавить все файлы в данном внешнем каталоге (который не является частью проекта) в проект установки во время сборки, т. Е. Если файл добавлен в этот внешний каталог, он будет автоматически включен в установщик со следующей сборкой.

Я создал новый проект в решении (проект библиотеки классов) и удалил из него все: Class1.cs, AssemblyInfo.cs и соответствующие ItemGroups файла csproj, содержащие элементы <Compile> для файлов. выше и <Reference> элементов для включений.

Затем я добавил новую группу товаров:

<ItemGroup>
  <Content Include="Path\To\The\Directory\**\*.*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

Таким образом, этот новый проект не содержит никаких файлов, но он ссылается на все файлы (рекурсивно, обозначенные \**\ из указанного каталога) как Файлы содержимого .

Таким образом, при сборке эти файлы обрабатываются как Файлы содержимого , поэтому копируются в выходной каталог нового проекта.

Итак, почему я сделал все вышеперечисленное? Просто потому, что в Setup Project есть опция для включения файлов содержимого из другого проекта!

Таким образом, таким образом вы можете сделать произвольные внешние файлы «частью» решения, фактически не перечисляя их, список файлов оценивается в время сборки , а затем ссылаться на них из проекта установки.

1 голос
/ 14 апреля 2009

Не могли бы вы просто добавить все файлы из папки с макросом ??

Также, возможно, вы можете просто очистить файлы в проекте установки (с помощью макроса или надстройки) и добавить файлы в папку тем же способом.

0 голосов
/ 26 марта 2019
  1. Вы можете щелкнуть правой кнопкой мыши внутри папки (которую нужно скопировать) в проводнике Windows и нажать Ctrl + A или выбрать все файлы и нажать кнопку копирования.
  2. В редакторе файловой системы перейдите к левой стороне. Затем щелкните правой кнопкой мыши папку приложения, нажмите «Добавить» и выберите папку.
  3. Дайте название папке
  4. В правой части редактора FileSystem щелкните правой кнопкой мыши и выберите Вставить
  5. Все содержимое папки будет скопировано во вновь созданную папку на шаге 2.

Для получения дополнительной информации перейдите по следующей ссылке https://dzone.com/articles/creating-msisetup-package-c

0 голосов
/ 11 апреля 2014

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

0 голосов
/ 19 июля 2013

Идеально подходит следующее: просто перетащите папку в каталог установки (используйте проводник Windows, а не проводник решений). Затем он добавит все файлы внутри него и все вложенные папки.

0 голосов
/ 30 мая 2013

О, нет, вы не можете перетаскивать файлы и папки в каталог установки в vs

0 голосов
/ 03 декабря 2011

У меня та же проблема. Хотя это и не идеальное решение, у меня была одна идея - создать пакетный файл, который заархивирует файлы, а затем мой проект установки просто распространяет этот zip. После этого вам нужно будет разархивировать их после установки.

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

Я думаю, что на самом деле я собираюсь сделать последнее решение для моего проекта в ближайшее время, потому что я пока не собираюсь платить большие деньги за лучшее приложение для установки.

...