Как вы делаете установщик, когда проект использует много других зависимостей в Java? - PullRequest
1 голос
/ 25 декабря 2011

Мое основное приложение написано на Java, в котором есть Main.jar. Я готовлю окончательный пакет для развертывания.

Но у него есть другие зависимости, такие как сторонние библиотеки, которые должны быть сначала доступны / предварительно установлены в операционной системе Windows, после установки моё приложение может работать, иначе оно будет отображать ошибку и не будет работать. Так что я изо всех сил, конечный пользователь должен сделать:

1) Thirdparty.library.msi (install manually) which is a GUI installer itself already
2) Then setup my Main.jar
3) Once it started it looks first for the third party libraries, if does not exist, software fails.

Для такого случая, существует ли какой-либо надлежащий способ сделать один установщик, который может выполнить работу как шаг 1, а затем шаг 2, но оба выглядят как 1 установка?

Follow : я также хочу, чтобы моя третья сторона не была видна конечному пользователю для целей презентации. Итак, я увидел, что существует инструмент под названием MSI

1) Установщик готовится к ЗАПАРУ

Windows ® Installer. V 3.01.4000.1823 

msiexec /Option <Required Parameter> [Optional Parameter]

Install Options
    </package | /i> <Product.msi>
        Installs or configures a product
    /a <Product.msi>
        Administrative install - Installs a product on the network
    /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
        Advertises a product - m to all users, u to current user
    </uninstall | /x> <Product.msi | ProductCode>
        Uninstalls the product
Display Options
    /quiet
        Quiet mode, no user interaction
    /passive
        Unattended mode - progress bar only
    /q[n|b|r|f]
        Sets user interface level
        n - No UI
        b - Basic UI
        r - Reduced UI
        f - Full UI (default)
    /help
        Help information
Restart Options
    /norestart
        Do not restart after the installation is complete
    /promptrestart
        Prompts the user for restart if necessary
    /forcerestart
        Always restart the computer after installation
Logging Options
    /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
        i - Status messages
        w - Nonfatal warnings
        e - All error messages
        a - Start up of actions
        r - Action-specific records
        u - User requests
        c - Initial UI parameters
        m - Out-of-memory or fatal exit information
        o - Out-of-disk-space messages
        p - Terminal properties
        v - Verbose output
        x - Extra debugging information
        + - Append to existing log file
        ! - Flush each line to the log
        * - Log all information, except for v and x options
    /log <LogFile>
        Equivalent of /l* <LogFile>
Update Options
    /update <Update1.msp>[;Update2.msp]
        Applies update(s)
    /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
        Remove update(s) for a product
Repair Options
    /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
        Repairs a product
        p - only if file is missing
        o - if file is missing or an older version is installed (default)
        e - if file is missing or an equal or older version is installed
        d - if file is missing or a different version is installed
        c - if file is missing or checksum does not match the calculated value
        a - forces all files to be reinstalled
        u - all required user-specific registry entries (default)
        m - all required computer-specific registry entries (default)
        s - all existing shortcuts (default)
        v - runs from source and recaches local package
Setting Public Properties
    [PROPERTY=PropertyValue]

OR enter image description here

2) Практика / образцы

# Install Silently [works]:
C:\windows\system32\msiexec.exe /I "C:\Documents and Settings\sun\My Documents\Downloads\10.70.msi" /QN
C:\windows\system32\msiexec.exe /I "C:\Documents and Settings\sun\My Documents\Downloads\10.71.msi" /QN

# For future reference [not tested]
start /wait msiexec /i O12Conv.msi /qb
start /wait msiexec /p O12Convsp1-en-us.msp /qb
start /wait msiexec /i mpsetupedp.msi

# other samples [not tested]
msiexec /package Application.msi /quiet
msiexec /uninstall Application.msi /quiet
msiexec /update msipatch.msp /quiet
msiexec /uninstall msipatch.msp /package Application.msi / quiet

Ответы [ 3 ]

2 голосов
/ 25 декабря 2011

Все инструменты установки на основе пользовательского интерфейса могут запускать внешние программы и запускаться в пакетном режиме, который контролируется аргументами командной строки.

Итак, если ваш файл secondparty.msi - это то, что вы имеете и должны использовать, я предлагаю вам найти возможность запустить его в пакетном режиме. Затем создайте собственную процедуру установки, которая будет запускать этот сторонний MSI.

Существуют различные инструменты для создания программ установки на основе пользовательского интерфейса (InstallShieled, InstallAnywhere и т. Д.).

1 голос
/ 25 декабря 2011

есть способ проверить, установлено ли зависимое приложение [например, устанавливается переменная env]. Если нет, то скрипт упаковки может установить его. Я сделал это в Install Shield; не уверен насчет других инструментов.

1 голос
/ 25 декабря 2011

Как насчет создания пакетного сценария DOS (.bat) и вызова оттуда установщика msi и JAR в указанном порядке?

...