2008-09-30 2 views
5

В соответствии с ответами на вопрос this я не могу встроить версию файла в мой .msi-файл.Что такое бесплатная бесплатная утилита для создания самораспаковывающегося исполняемого файла со встроенной версией файла?

Установщик, который я предоставляю клиенту, должен иметь версию файла.

Итак, я хочу создать самораспаковывающийся исполняемый файл, содержащий файл msi и setup.exe, сгенерированный Visual Studio, и вместо этого поместить версию файла на этот самораспаковывающийся исполняемый файл.

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

Все, что я мог найти, это this, который отлично смотрится, но я бы предпочел бесплатную альтернативу.

Есть ли у кого-нибудь предложения?

Редактировать: Чтобы уточнить, я не собираюсь создавать установщик - у меня уже есть проект настройки VS. Мне просто нужен самораспаковыватель (например, WinZip). Итак, пользователь мыши над Setup-Blorgbeard2008.exe видит «Версия: 1.0.0.0». Пользователь doubleclicks, он тихо извлекает setup.exe и setup.msi в временную папку, а затем запускает setup.exe. Затем пользователь видит обычный экран установщика и работает как обычно.

Другое Редактировать: Yay, мне больше не нужен самораспаковыватель, так как на мой другой вопрос теперь ответили. Это делает весь этот вопрос совершенно неуместным. Это будет по-прежнему приятно иметь возможность распространять только один файл, а не setup.exe и setup.msi.

+1

Я уверен, что вам не нужен Setup.exe ... Я обычно просто удаляю его и сам распространяю MSI. :-) – 2008-09-30 05:17:58

+1

Я думаю, что setup.exe проверяет наличие установщика Windows и т. Д. Возможно, я ошибаюсь. – Blorgbeard 2008-09-30 05:40:50

ответ

4

NSIS может это сделать.

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

Фактически, поскольку NSIS создает пакет установщика ... вы можете значительно упростить свой подход.

1

попробовать inno-setup

установить директиву VersionInfoVersion на свой двоичный номер версии, например,

VersionInfoVersion = 1.1.0.0 

это появится в наведении курсора мыши текст и свойства

1

эксперимент в прогресс здесь:

Всплывающие Информация о версии: http://screencast.com/t/LVqvLfxCj3g

Информация о сборке Visual Studio: http://screencast.com/t/fqunlMNh13

Установлен с простым старым файлом MSI.

Добавляя «Версия: 1.5.0» текст в поле Описание имущества проекта установки, номер версии также показывает на MSI файл, как так: http://screencast.com/t/A499i6jS

Я обычно просто переименовать файл MSI, как DataMonkey_1_5_0.msi для моих собственных целей.

2

При загрузке Windows SDK существует MSIStuff.exe и Setup.exe, для которых MS предоставляет исходный код для компиляции. MSIStuff будет «загружать» MSI, который вы передаете в программу установки.Exe. Setup.exe может быть затем распространен.

Более подробная информация на http://support.microsoft.com/kb/888473

Минусы:

  • Вам придется перекомпилировать Setup.exe с версией вашего продукта каждый раз, когда есть новая версия вашего продукта (MSI).
  • Не знаете, к какому лицензированию относится источник Setup.exe.
+0

Кто-нибудь интегрировал это в сценарий MSBuild или сценарий построения NAnt? Это классная сделка, но если она не может быть поставлена ​​как часть процесса сборки, то это просто «круто», но не полезно. – 2009-09-16 20:58:10

2

На самом деле я фактически использовал NSIS для этой конкретной версии, так как мне также нужно было связать некоторые другие инсталляторы.

Для справки, вот сценарий я использовал:

VIProductVersion    "1.0.0.0" ; set version here 
VIAddVersionKey "FileVersion" "1.0.0.0" ; and here! 
VIAddVersionKey "CompanyName" "MyCompany" 
VIAddVersionKey "LegalCopyright" "© MyCompany" 
VIAddVersionKey "FileDescription" "Installer for MyProgram" 
OutFile MyProgram-Setup.exe 

SilentInstall silent 

Section Main  
    SetOutPath $TEMP 
    SetOverwrite on 
    File SharedManagementObjects.msi 
    File SQLSysClrTypes.msi 
    File Release\Setup.exe 
    File Release\Setup.msi 
    ExecWait 'msiexec /passive /i "$OUTDIR\SharedManagementObjects.msi"' 
    ExecWait 'msiexec /passive /i "$OUTDIR\SQLSysClrTypes.msi"' 
    Exec  '"$OUTDIR\Setup.exe"' 
SectionEnd 
10

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

2

DotNetZip может создавать самораспаковывающийся архив, который включает номер версии, отображаемый в проводнике Windows Explorer. SFX также включает имя продукта, описание, версию продукта и авторское право, отображаемое в представлении «Свойства/детали» в проводнике Windows.

SFX может выполнять команду, указанную после извлечения.

Создание SFX может быть сценарий с помощью PowerShell, или вы можете написать программу, чтобы сделать это, используя VB.NET, C#, VBScript или JavaScript, и т.д.

Чтобы получить номер версии вещи, вам нужно по крайней мере, v1.9.0.26 от DotNetZip.

0

FYI, использующий самораспаковыватель DotNetZip, не имеет смысла, если вы используете bootstrapper setup.exe для проверки того, что .NET установлен (для саморасширения DotNetZip требуется .NET 2.0).

Смежные вопросы