Jakie są dobre zamienniki InstallAnywhere do instalacji aplikacji Java EE?

Jakie (komercyjne lub darmowe) narzędzie instalacyjne polecacie zastąpić InstallAnywhere jako instalator dla aplikacji Java EE? Co ci się w nim szczególnie podoba i jakie są jego wady?

Niektóre wymagania:

  • musi obsługiwać uruchamianie niestandardowego kodu Java jako część procedury instalacji
  • musi obsługiwać system Windows, w tym najnowsze 64-bitowe wersje, takie jak Windows Server 2008; wsparcie dla innych docelowych systemów operacyjnych jest plus
  • W systemie Windows można zainstalować pakiet aplikacji (takich jak Resin lub Tomcat) jako usługę]}
  • musi obsługiwać podstawowe rzeczy, takie jak kopiowanie i przenoszenie plików, edycja plików konfiguracyjnych, wyodrębnianie Zipów itp.
  • JRE nie może być używany do tworzenia kopii zapasowych, ale nie może być używany do tworzenia kopii zapasowych.]}

Edit: jeszcze kilka punktów:

  • najlepiej nie zależy od preinstalowanego JRE (lub inne środowisko uruchomieniowe innych firm lub biblioteka) na komputerze docelowym; innymi słowy, może produkować niezależne okna .exe (or .msi)
  • narzędzie powinno być wieloplatformowe, aby można było tworzyć instalatory w systemach Linux, Windows lub Mac.
  • powinien mieć przyzwoity GUI do złożenia instalatora razem. Gdy to jednak nastąpi, musi być możliwe pominięcie GUI i uczynienie budynku instalatora częścią zautomatyzowanego budowania proces.

Edit : ja zamieściłem osobną odpowiedź na temat tego, co wybraliśmy i dlaczego.

Author: Community, 2009-04-17

13 answers

W tym przypadku, niestety, więc nie powiedział nam wiele, że nie wiemy już (i rzeczywiście narzędzie, które ostatecznie wybraliśmy nie został wymieniony w żadnej odpowiedzi). Jednak zamieszczam tutaj nasze doświadczenia, ponieważ mogą być pomocne innym później.

(szybko) oceniliśmy następujące narzędzia instalatora, głównie przez przeglądanie ich stron internetowych i przeglądanie innych informacji w Internecie: rzeczywisty Instalator, zaawansowany Instalator, BitRock InstallBuilder , Inno Setup, Install Creator, imadło Instalatora dla Windows, InstallShield, install4j, IzPack, NSIS, openiinstaller, Scriptlogic MSI Studio, Smart Install Maker, Symantec Wise Installation Studio i WiX .

Przeanalizowaliśmy większość z nich na początku, a skończyło się na tym, że wybraliśmy dwie opcje bliższej oceny: BitRock InstallBuilder oraz install4j. W przypadku tych narzędzi pobraliśmy wersje testowe i wykonaliśmy kilka prototypów, aby sprawdzić, czy rzeczy, które są dla nas najważniejsze, są naprawdę obsługiwane i jak łatwo lub trudno jest uruchomić rzeczy.

Obie opcje były dobre w wielu rzeczach (i obie wydawały się dobrą alternatywą dla InstallAnywhere):

    Produkują całkowicie natywne i ładne okna .instalatory exe, które są łatwe dostosowywanie za pomocą własnej grafiki itd.
  • oba narzędzia można łatwo zautomatyzować, aby budynek instalatora był uruchamiany z Ant. (Z install4j Zajęło mi dosłownie pięć minut, aby nauczyć się go, a następnie zaimplementować go.)
  • obie firmy wydają się mieć dobre wsparcie (cóż, przynajmniej dla potencjalnych klientów oceniających swoje produkty ; -) szczególnie od Bitrocka otrzymaliśmy bardzo szybkie odpowiedzi.

W poniższych rzeczach install4j wydawał się lepszy od Bitrocka dla naszych potrzeb (wiele z nich jest subiektywnych, z oczywiście, więc YMMV):

  • install4j zdecydowanie lepiej obsługuje uruchamianie niestandardowego kodu Javy - można to zrobić w dowolnym momencie podczas instalacji i niezależnie od tego, czy w systemie jest preinstalowany JRE.
  • BitRock używa bardziej zakodowanej sekwencji kroków instalacji, podczas gdy install4j jest bardziej elastyczny. W install4j dodawanie niestandardowych ekranów i formularzy (z niestandardowym kodem Java lub bez niego), proszenie użytkownika o wejście itp., można zrobić w dowolnym momencie, przed lub po instalowanie dowolnych plików.
  • W install4j pewne podstawowe rzeczy, takie jak definiowanie zestawów plików, które mają być skopiowane do systemu docelowego, oraz dodawanie kroku instalacji w celu zastąpienia pewnych ciągów w plikach konfiguracyjnych, wydawały się nieco łatwiejsze.]}
  • install4j ma lepsze wsparcie dla JRE bundling
  • Install4j IDE było bardziej "natywne" niż w przypadku Bitrocka.]}
  • (opcje licencyjne install4j były lepiej dla nas-zdecydowanie preferowaliśmy kilka licencji pływających zamiast nazwanych licencji dla wszystkich programistów lub kosztowną "licencję na witrynę") {]}

Więc ostatecznie wybraliśmy install4j. Oto kilka szczegółów na temat tego, dlaczego było to imponujące:

  • jego IDE, w którym instalujesz instalator, jest bardzo proste i łatwe w użyciu - mogłem szybko dowiedzieć się, jak zrobić większość rzeczy, które chciałem, nawet bez przeglądania dokumentacji. A kiedy musiałem coś sprawdzić w dokumentacja (np. jak odwoływać się do zmiennych instalatora ; Jak zacząć pisać własny kod Java na podstawie API install4j), nie trwało długo, aby znaleźć to, czego potrzebowałem.
  • możesz całkowicie dostosować ekrany i akcje podczas procedury instalacji, a także dodać niestandardowe ekrany i akcje (kodowane na podstawie ich Java API ) w dowolnym momencie. Było to dla nas ważne, ponieważ musimy ponownie użyć istniejącego niestandardowego kodu Javy ze starego InstallAnywhere instalator.
  • w kilku drobnych szczegółach, install4j wydaje się idealnym rozwiązaniem dlaprogramistów Java . Na przykład, jeśli chcesz dodać skrypt sprawdzający poprawność, aby sprawdzić dane wejściowe użytkownika, możesz bardzo szybko kodować w samym IDE install4j, używając zwykłej starej Javy, z pomocą kodowania przypominającą IntelliJ IDEA.
  • uznaliśmy koszt licencji install4j floating za rozsądny, biorąc pod uwagę, jak dobre jest to narzędzie (i wręcz okazyjne w porównaniu z zawyżoną ceną InstallAnywhere...)
  • krótko mówiąc, wydawało się to najlepszym narzędziem instalacyjnym dostępnym do wdrażania aplikacji Java.
 54
Author: Jonik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-28 22:13:01

Ręczę za izPack . Jest oparty na Ant, dzięki czemu można spakować w nim instalację Ant, a instalacja Ant może zawierać niestandardowe zadania i/lub skrypty napisane w Twoim Ant build.xml (np. używając Groovy, Beanshell lub dowolnego języka skryptowego obsługującego BSF). Więc pokryje twoje konfigurowalne wymagania.

Używałem go w przeszłości do wszystkich powyższych-rozpakowywanie/usługi / kod niestandardowy. Jest wieloplatformowy, chociaż nie mogę ręczyć za tę konkretną instancję powyżej (64-bitowe okna). Ale jeśli to działa Java, powinno być w porządku.

Jedyny ból głowy to JRE. Oczywiście potrzebujeszjakiegoś JRE, aby to uruchomić. Jednak myślę, że powinieneś być w stanie spakować i wykonać konkretną instalację JRE w ramach izPack.

 7
Author: Brian Agnew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 10:34:31

Stworzyliśmy BitRock InstallBuilder , wieloplatformowe narzędzie instalacyjne po frustrujących doświadczeniach z InstallAnywhere, a szczególnie jego kuzynem (obecnie nieistniejącym) INSTALLSHIELD MP. Ponad połowa naszych klientów używa naszego narzędzia do pakowania oprogramowania opartego na Javie, ale jest ono natywne, a nie oparte na Javie. Oznacza to, że mamy wiele zalet, takich jak natywny wygląd i styl (w tym. Vista, GTK, Qt itp.) i nie ma potrzeby samodzielnego ekstrakcji przed instalacją (szybsze uruchamianie, mniej wymagania przestrzenne), aby wymienić kilka. Aby odpowiedzieć na twoje konkretne pytania:

  • Obsługuje wywołanie kodu Java jako części instalacji w wielu punktach w czasie (np. gdy wyświetlana jest określona strona, kopiowane pliki, w czasie odinstalowywania itp.). Kod nie jest kompilowany w instalatorze, ale może być wywoływany zewnętrznie i wynik używany w instalatorze. Jeśli jesteś bardziej konkretny, jakiego rodzaju kod potrzebujesz, mogę podać konkretny przykładowy kod. Mamy dużo wbudowane działania dla funkcjonalności, które muszą być ręcznie dodawane do innych instalatorów, więc może nie trzeba pisać tego kodu w pierwszej kolejności!
  • obsługujemy wszystkie wersje systemu Windows, w tym 64bit i Windows 2008 (wielu klientów uzyskało certyfikat na tych platformach za pomocą naszych instalatorów)
  • obsługujemy Pakiety serwerów aplikacji, w tym Tomcat, Resin, JBoss i inne. Spójrz na BitNami , aby znaleźć przykłady takich stosów, które stworzyliśmy.
  • We Obsługa kopiowania i przenoszenia plików, zastępowania wartości w plikach konfiguracyjnych, rozpakowywania plików i większości innych popularnych funkcji instalacji. Jedną z naszych zasad jest to, że instalator powinien zapewniać wbudowaną obsługę typowych działań instalacyjnych i mieć łatwy, czysty interfejs do wywoływania zewnętrznego kodu, który jest specyficzny dla produktu klienta.
  • wspieramy Wiązanie JRE, jak wspominasz, często wystarczy tylko wiązać katalog JRE i ustawić odpowiednią wartość dla JAVA_HOME w skrypty startowe

Możesz spojrzeć na niektórych naszych klientów , takich jak MySQL, Samsung, Motorola, GitHub, itp. InstallBuilder jest produktem komercyjnym, ale oferujemy bezpłatne licencje dla projektów open source i zniżki dla małych firm i mikroisv.

 6
Author: Daniel Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 13:27:01

Chcę tylko dodać, że moja firma używa InstallAnywhere od około 6 lat, ale zdecydowaliśmy się ruszyć dalej. Powód jest dwa razy.

Po pierwsze ich ceny są bezwzględne, a licencje są mocno restrykcyjne w porównaniu z bezpośrednimi konkurentami, takimi jak INstall4J i BitRock.

Mój drugi problem z InstallAnywhere jest produkt jest tylko minimalnie utrzymany. Używam produktu od 6-7 lat przez wiele różnych wersji i błędy są rzadko naprawiane i na pewno nie można się spodziewać nowych funkcji. Zasadniczo wszystko, czego możesz się spodziewać, to to, że dodadzą wsparcie dla nowej wersji systemu windows / mac, gdy wyjdzie. Ich opłaty za wsparcie są dość drogie, ale nigdy nie miałem wniosku o wsparcie faktycznie wdrożone. Kiedy po raz pierwszy kupiłem produkt, uważam, że był od firmy o nazwie ZeroG, którzy skupili się wyłącznie na tym produkcie. Faktycznie utrzymywali i ulepszali produkt. Wtedy był to jedyny prawdziwy bilet i byli / align = "left" /

Następnie został przejęty przez Macrovision, a następnie Flexera. Odkąd ZeroG sprzedał produkt, był on produktem pomocniczym dla firmy posiadającej, a koncentracja na nim była słaba. Wydaje się, że został kupiony bardziej, aby ukończyć pakiet produktów, a nie dlatego, że firma rzeczywiście chciała utrzymać produkt.

Słowo przestrogi, Oceń te produkty ostrożnie, ponieważ możesz stać się przywiązany do nich. Zostawilibyśmy produkt szybciej, ale włożyliśmy tak wiele wysiłku nie tylko w instalator, ale skonfigurowanie automatycznego schematu aktualizacji opartego na cechach / ograniczeniach produktu, że opuszczenie produktu jest kosztowne ze względu na inwestycje w siłę roboczą, aby odtworzyć to w nowym produkcie.

Tylko moje zdanie, ale nie polecam InstallAnywhere.

 4
Author: springcorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-21 02:43:38

Obecnie używamy GetDown do obsługi dystrybucji naszych aplikacji swing. Używamy Tomcat do dystrybucji aktualizacji i GetDown do pobierania tych aktualizacji. Jest naprawdę elastyczny i wydajny, i znacznie lepszy niż java WebStart, a ponieważ produkuje sumę kontrolną dla zmian, zapisuje pasmo i pobiera tylko zmienione pliki.

Dobry tutorial : http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/

Strona projektu: https://github.com/threerings/getdown

 4
Author: Heidarzadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 12:46:55

Wdrożenie w środowisku wieloplatformowym jest zawsze dużym źródłem kłopotów. Uważa, że optymalnym rozwiązaniem byłoby stworzenie natywnych pakietów dla wszystkich platform, takich jak RPM, DEB czy MSI ... te, które mogą być zainstalowane bez nadzoru również.

Programiści powinni pracować nad samouzdrawianiem aplikacji i uruchamiać ją bez instalacji.

Wiem, że to nie jest całkiem rozwiązanie jak ty gdzie pytając, ale czasami możesz uzyskać lepsze wyniki w ten sposób.

Pamiętaj, że otrzymasz bezpłatną usługę aktualizacji na Linuksie, jeśli zastosujesz się do nich.

Nadal mam nadzieję, że Microsoft doda coś podobnego do MSI(a to nie wymagałoby rejestracji w nich). Tymczasem Dla Windows można spojrzeć na Google Updater właśnie wydany jako open source- http://code.google.com/p/omaha/

Wydali podobny produkt dla Mac OS http://code.google.com/p/update-engine / ale smutne, że nie myśleli o stworzeniu jednego produktu z tych dwóch.

 3
Author: sorin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-02 12:24:56

Możesz spróbować SetupBuilder Gradle Plugin aby utworzyć natywny*.instalator msi z prostym skryptem Gradle build.

    Jest za darmo.
  • Obsługuje 32-bitowe i 64-bitowe okna. Również Linux i OSX.
  • Pakiet Java VM pod Windows i OSX nie wymaga preinstalowanej maszyny wirtualnej Java.
  • może uruchamiać kod Javy przed lub po instalacji.
  • może utworzyć usługę/demona systemu windows.
  • nie ma GUI, ale używa Gradle. Jeśli używasz już Gradle jako zbuduj język skryptowy, to jest bardzo proste.
 2
Author: Horcrux7,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-29 16:36:14

Może Cię zainteresować launch4j

 1
Author: dfa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 10:22:18

Jonik, dzięki za zamieszczenie tak szczegółowej opinii o swoim doświadczeniu. Chciałem napisać odpowiedź uzupełniającą, ponieważ podnosisz kilka dobrych punktów.

Po spełnieniu pewnych wymagań bazowych (które niestety już nie są instalowane) nie istnieją naprawdę " złe " lub "dobre" narzędzia, ale raczej narzędzia, które są lepiej dostosowane do niektórych projektów. Wygląda na to, że dokładnie przestudiowałeś wszystkie opcje i install4j będzie działał lepiej dla Twojego projektu. Jest to prawdopodobnie dobry wybór, ponieważ masz istniejąca baza kodu Java z Twojego poprzedniego instalatora, którą chcesz ponownie użyć (choć chciałbym myśleć, że część tego kodu nie będzie potrzebna w Installbuilderze:)

Jeśli chodzi o InstallBuilder, wspieramy dostosowywanie sekwencji ekranu za pomocą tagu (prawdopodobnie powinniśmy to lepiej udokumentować). Łatwo jest również spakować JRE (w większości przypadków tylko folder java/), ale myślę, że twoja krytyka jest zasadna: ponieważ jest to wspólne zadanie, powinniśmy zrobić lepsza praca przy dokumentowaniu / udostępnianiu go za pomocą GUI, w tym przeciągnij i upuść we wszystkich obsługiwanych platformach. Mamy już w naszym planie ulepszenia GUI w wymienionych obszarach. Zabawne jest to, że wielu naszych klientów uważa format XML za tak łatwy w użyciu, że wolą edytować go za pomocą swoich edytorów programistycznych (tak, jakby edytowali HTML)

Wreszcie, jeśli chodzi o licencjonowanie, nasz obecny model nie wymaga zakupu dodatkowych licencji, jeśli ci dodatkowi Programiści będzie po prostu budował instalatory (nie projektował ich) lub kupował dodatkowe licencje dla maszyn build lub continuous integration. W każdym razie kilka licencji pływających dla install4j jest droższych niż pełna licencja Enterprise Site dla BitRock:)

Jeszcze raz dzięki za opinie

 1
Author: Daniel Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-25 13:38:20

Polecam zajrzeć do cmInstall , który można znaleźć na http://sourceforge.net/projects/cminstall/

Spełnia prawie wszystkie twoje wymagania i jest open source. No i jestem jednym z jego twórców :).

  1. [tak] musi obsługiwać uruchamianie niestandardowego kodu Java w ramach procedury instalacji
  2. [tak] musi obsługiwać system Windows, w tym najnowsze 64-bitowe wersje, takie jak Windows Server 2008; wsparcie dla innych docelowych systemów operacyjnych jest plus
  3. [can Tanuki Software] musi być w stanie zainstalować dołączony serwer aplikacji (taki jak Resin lub Tomcat) jako usługę w systemie Windows
  4. [tak] musi obsługiwać podstawowe rzeczy, takie jak kopiowanie i przenoszenie plików, edycja plików konfiguracyjnych, wyodrębnianie Zipów itp.
  5. [Tak-lub można go programowo pobrać i rozpakować ]musi obsługiwać Wiązanie określonej wersji JRE; przynajmniej przez dołączenie ZIP do rozpakowania

    6.[nie-potrzebuje JDK 1.6 zainstalowany, wsparcie dla .exe lub .msi jest planowane na przyszłość]najlepiej nie zależy od preinstalowanego JRE (lub innego środowiska uruchomieniowego innej firmy lub biblioteki) na komputerze docelowym; innymi słowy, może produkować niezależne okna .exe (or .msi)

  6. [Tak] narzędzie powinno być wieloplatformowe, aby można było tworzyć instalatory w systemach Linux, Windows lub Mac.

    7.[nie - framework cminstall jest "oparty na programistach" - ale łatwy w użyciu.Po prostu przeczytaj tutoriale z http://sourceforge.net/project/showfiles.php?group_id=250019&package_id=305489 i zobacz, jak łatwo jest zbudować instalator!] Powinien mieć przyzwoity GUI do łączenia instalatora. Gdy to jednak nastąpi, musi być możliwe pominięcie GUI i uczynienie budynku instalatora częścią zautomatyzowanego procesu budowania.

 1
Author: Flueras Bogdan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-03 23:25:11

Zapoznałem się również z kilkoma instalatorami wieloplatformowymi open source. Oto mój komentarz:

  1. BitRock InstallBuilder : tylko świetny dla programistów free I open source, ponieważ daje darmową licencję do użytku w projektach open source.
  2. InstallJammer : dobry darmowy i otwarty instalator wieloplatformowy. Tylko jedna obawa, że jak tylko pobiera się plik wykonywalny z InstallJammer, program antywirusowy natychmiast go usunie. Jakoś pliki zbudowane z InstallJammer są przechwytywane jako fałszywe alarmy. Będziesz musiał pracować trochę więcej certyfikatu bezpieczeństwa przed publikacją.
  3. Izpack : dobry darmowy i otwarty instalator wieloplatformowy. Może to być trochę uciążliwe dla osób nie przyzwyczajonych do mrówek. Może być świetny, gdy jest używany z interfejsami graficznymi, takimi jak PackJacket .
 1
Author: angel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-27 08:51:54

Widziałem kilka osób polecających IzPack , ale szczerze mówiąc Nie wiem, czy spełnia Twoje wymagania. Jest co najmniej za darmo:)

 0
Author: willcodejavaforfood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-30 22:11:56

Sun oferuje instalator open source:

Openiinstaller

Jestem pewien, że wszystkie wymagane funkcje są obsługiwane.
Ale wydaje mi się to trochę zbyt trudne do skonfigurowania.

Ale zgadnij co: ma nie tylko GUI, ale także (pseudo-graficzny) CLI.
Fajne screeny i info proszę..

 0
Author: ivan_ivanovich_ivanoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-29 22:01:54