Установщик для приложения C#

Я разрабатываю приложение C# с открытым исходным кодом. Некоторое время я использовал базовый установщик .NET, который написал сам. Однако с недавним изменением это больше не практично для меня, так как мне пришлось бы добавлять большое количество файлов в программу установки, а они могут меняться с каждым выпуском. ZIP-файл также нецелесообразен.

Я провел некоторую проверку в Интернете, я вижу много MSI, ClickOnce, самораспаковывающихся ZIP-файлов и (имею в виду наиболее многообещающую) систему NSIS. Кажется, ни один из них точно не соответствует моим потребностям, поэтому я ищу совета о том, какую систему использовать.

Фактическая установка моей программы очень проста. По сути, мне просто нужно скопировать каталог bin\Release (и все подкаталоги) на клиентский компьютер. Я добивался этого в некоторой степени ad-hoc, встраивая каждый файл в свой установщик .NET и поддерживая таблицу файлов с указанием того, что куда идет.

К сожалению, я только что локализовал свое приложение.Теперь у меня есть более 30 файлов .resx (которые скомпилированы в DLL и помещены в БОЛЬШЕ подкаталогов Visual Studio), и, очевидно, нецелесообразно добавлять более 30 папок и DLL в мой установщик. Вот почему я в этом поиске.

Есть также несколько других требований:

  • Программа установки должна искать в предопределенных каталогах указанный .exe. (Мое приложение предназначено для замены.) Если .exe не найден, он должен запросить его местоположение.
  • Установщик должен убедиться, что «OldApp.exe.bak» существует. Если нет, следует переименовать «OldApp.exe» в «OldApp.exe.bak»
  • Программа установки должна обновить файлы. Т.е., если "Culture.de.dll" не изменился, то установщик оставит его в покое.
  • Установщик должен работать со всеми версиями Windows всех .NET IDE (VS, SharpDevelop, Mono и т. д.), но не должен работать на других платформах.
  • Когда я создаю решение, программа установки должна быть автоматически перегенерирована. Другими словами, он должен быть запущен в разделе «После сборки».
  • Генерация установщика должна быть добавлена ​​в репозиторий исходного кода. Это сделано для того, чтобы любой, кто скачает исходный код моего приложения, также мог скомпилировать установщик.

Извините за длинное сообщение, я решил, что лучше опубликовать больше, чем меньше.

6
задан Xcelled 16 April 2012 в 17:25
поделиться