Как упаковать установку (фреймворк + приложение) в один исполняемый файл?

Я хотел бы создать файл setup.exe, содержащий одно приложение, которое я разработал на C#, и настройку .Net framework 4.0.

Идея такова: когда я запускаю 'setup.exe', он проверяет, установлен ли на компьютере .net framework 4.0, и не устанавливайте его!

Использование InstallShield 2009.

Кто-нибудь знает, как это сделать?

Дайте мне знать, если ничего не понимаете.

Спасибо.


person Leonardo Arruda    schedule 14.03.2012    source источник


Ответы (5)


Что касается установки, вы можете использовать встроенный механизм, который поставляется с Visual Studio, они позволяют, например, заставить setup.exe автоматически проверять, установлена ​​ли необходимая версия фреймворка, и устанавливать ее, если она отсутствует - для хорошего начала см. MSDN.

Что касается того, чтобы ваше приложение/EXE состояло из 1 файла, включая все управляемые зависимости, у вас есть несколько вариантов:

OR

  • используйте какой-нибудь инструмент, например SmartAssembly (коммерческий)
    среди прочего можно встраивать и объединять (нет необходимости изменять исходный код)

OR

  • код менее чем в 10 строк (бесплатно, но минимальное изменение исходного кода)
    пометить все необходимые зависимости как "встроенный ресурс" - таким образом они будут включены в EXE-файл. .. вам нужно настроить обработчик AssemblyResolve, который во время выполнения читает из ресурсов и возвращает необходимые библиотеки DLL в среду выполнения .NET...
person Yahia    schedule 14.03.2012

Существует множество фреймворков для создания сетапов.
Мне больше всего нравится WIX, его можно скачать отсюда: http://wix.sourceforge.net/
Существует также фреймворк для создания интерфейсов WIX с использованием C#, который называется SharpSetup. Его можно скачать здесь: http://sharpsetup.eu/, но я не уверен, что это удовлетворит ваши потребности, так как на целевой машине может не быть .NET для начала (хотя можно было бы написать настройку в .NET 2.0, я не уверен).

Изучение WIX может занять некоторое время, но как только вы это сделаете, вам не составит труда делать то, что вы хотите.

person Svarog    schedule 14.03.2012

Можно ли упаковать полную (разделенную) установку в самораспаковывающийся архив? Вы можете использовать WinRar или аналогичный для создания сжатого исполняемого файла с «автозапуском».

person Adriano Repetti    schedule 14.03.2012
comment
Этот экстрактор будет файлом «.exe», который, когда я нажму «Выполнить», извлечет все и запустит установку? - person Leonardo Arruda; 14.03.2012
comment
Да. Вы можете указать, какую программу вы хотите запустить при самораспаковке. WinRar — первый самораспаковщик, о котором я подумал, но я уверен, что вы найдете 1000 - person Adriano Repetti; 14.03.2012
comment
Используя winrar, как мне это сделать? - person Leonardo Arruda; 14.03.2012
comment
Создайте архив WinRar (например, откройте WinRar и перетащите). Нажмите кнопку SFX на панели инструментов. Нажмите Дополнительные параметры SFX. Настройте все, что вам нужно (там у вас есть много опций, которые могут вам понадобиться для настройки его поведения, во вкладке Настройка вы можете указать программу для автозапуска). - person Adriano Repetti; 14.03.2012
comment
Спасибо за помощь, но это не то, чего хочет мой босс... :@ В любом случае спасибо. - person Leonardo Arruda; 15.03.2012
comment
Другое решение: вернуться к старым временам, подготовить заглушку Win32 и просто дописать туда все - person Adriano Repetti; 15.03.2012

Насколько мне известно, со стандартным InstallShield 2009 это невозможно. У вас должен быть как минимум InstallShield 2010 (с пакетом расширения Installshield 2010 для Visual Studio 2010).

Я не знаю, есть ли способ "взломать" его...

person Dirk    schedule 14.03.2012

Я решил этот вопрос, создав настраиваемое действие, это будет тип «Открыть исполняемый файл», и я вызвал это настраиваемое действие в событии кнопки мастера.

person Leonardo Arruda    schedule 16.03.2012