Hello,
Készülőben van egy SWING-es app, aminek az elsődleges platformja Windows lenne. Két dolgot szeretnék elérni. Az egyik, hogy becsomagoljam egy lehetőleg minél egyszerűbb telepítőbe. A másik, hogy windows service-ként fusson, amit a telepítő a folyamat végén hozzáad.
Több jelölt is szóbajön, de együtt egyik sem tudja amit szeretnék.
http://launch4j.sourceforge.net/
http://wrapper.tanukisoftware.com
Ti hogy csinálnátok ?
Köszönöm!
- 5482 megtekintés
Hozzászólások
subscribe
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Szétszedném egy service és egy UI részre, mert utoljára XP-ben volt a "Szolgáltatás együttműködhet az asztallal" opció (mintha azóta is megtartották volna, csak már nem működne). Wrapper-ek közül meg tetszőleges választható, úgy rémlik az Apache-nak is van valami nyílt cucca rá, de most nem találom.
BlackY
- A hozzászóláshoz be kell jelentkezni
+1, esetleg mintha megfelelően felparaméterezett jvm-mel lehetne headless módban futtatni egy alkalmazást, de nem biztos, hogy ez jó lesz neked.
- A hozzászóláshoz be kell jelentkezni
http://commons.apache.org/proper/commons-daemon/jsvc.html
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Szet kell bontani, egy service gui nelkul, meg egy service management gui normal alkalmazaskent (taskbarba is rakhatod ha kell)
"Important Services cannot directly interact with a user as of Windows Vista. Therefore, the techniques mentioned in the section titled Using an Interactive Service should not be used in new code."
http://msdn.microsoft.com/en-us/library/ms683502%28v=vs.85%29.aspx
- A hozzászóláshoz be kell jelentkezni
A service-nek igazából annyi a feladata, hogy megnézi adtunk e ki frissítést. Ha igen, akkor feldob egy ablakot, hogy szeretnél e frissíteni. Ha igen, akkor a GUI-t megindítja. Ha nem, akkor alszik a beállított ideig.
- A hozzászóláshoz be kell jelentkezni
Akkor nem biztos, hogy service-t kell írnod, hanem egy kis alkalmazást, ami a system tray-en fut... Vagy a másik megoldás, a system tray-en futó kis
alkalmazás beszélgethet a service-szel.
- A hozzászóláshoz be kell jelentkezni
Inkább utóbbi, mert (lásd a Java updater) a frissítéshez valszeg kell az emelt jogkör, azt meg állandóan futó app-nak megadni nem szerencsés, on-demand kérni meg vagy megoldható vagy nem.
BlackY
- A hozzászóláshoz be kell jelentkezni
Az emelt jogkör csak self update esetén lesz érdekes. Maga az app egy share-en lévő másik app-ot frissít, így oda elég lesz a felhasználó jogosultsága.
- A hozzászóláshoz be kell jelentkezni
Akkor HKLM\Software\Microsoft\Windows\CurrentVersion\Run és probléma megoldva :)
BlackY
- A hozzászóláshoz be kell jelentkezni
Annyira egyszerűen szeretném ezt megoldani, ahogy csak lehet.
A system tray is egy lehetőség. Lényeg, h az indítása automatikus legyen.
Jelenleg egyébként így van megoldva csak delphiben készült az app, amit most kivált a java-s változat.
- A hozzászóláshoz be kell jelentkezni
Jól értem, hogy automatikusan szeretnéd updatelni az alkalmazásod? Akkor lehet, hogy a egy java web start-ra, vagy valami ilyesmire:
http://masterex.github.io/archive/2011/12/25/jupar.html
lenne szükséged...
- A hozzászóláshoz be kell jelentkezni
Webstarton gondolkoztam, de nem ástam bele magam túlságosan, hogy ez ebben az esetben jó lenne e nekem.
Pl. első körben hogy települ a service adott gépre (ha egyátalán service lesz) ?
Amúgy jól hangzik, hogy mindig a legfrissebb verzió fut az ügyfél gépén, de még nem állt össze a kép.
Ha csak egy standalone GUI-s cuccról lenne, akkor nem is gondolkoznék tovább.
- A hozzászóláshoz be kell jelentkezni
utemezett job nem jo erre ?
- A hozzászóláshoz be kell jelentkezni
Miért van erre szükség? Tegyük fel, épp szövegszerkesztővel (vagy bármivel, ami nem az az app, amit frissíteni akarsz) dolgozik a munkás, erőst koncentrálva. Erre feljön egy ablak, hogy adtatok ki frissítést. Mi indokolja ezt a figyelemelterelést, ha amúgy nem fut az alkalmazásotok (= épp nincs rá szükség)? Mert ha fut, abból is lehetne ellenőrizni a frissítést... Egyetlen indok jut eszembe a zavarásra: a frissítés lassú, és kritikus fontosságú, hogy a legfrissebb cucc induljon (ha esetleg elindítják). Szóval engem személy szerint az érdekel, miért kell ez egyáltalán, tényleg az általad kívánt formájában a legmegfelelőbb-e.
:)
- A hozzászóláshoz be kell jelentkezni
Okosságot mondtál :)! Röviden vázolnám a helyzetet:
Az app amit frissíteni kell egy Oracle Forms-ban készült bérügyviteli rendszer. A rendszer szempontjából vannak kritikus időszakok amikor két dologra kell figyelni. Az egyik, hogy nem frissíthetünk automatikusan csak felhasználói beavatkozásra, mert akkor esetleg elborítjuk az aktuálisan zajló feldolgozási folyamatot. A másik, hogyha kritikus frissítést adunk ki (elkapáltunk valamit vagy egyéb szempont merül fel), akkor a felhasználó figyelmét _erősen_ fel kell hívni, hogy frissítsen.
A jelenlegi megoldás egy listener, ami feldob egy ablakot. Ebből indultam ki. Maga a forms-os app az elég régi verzió, de azt simán meg tudom oldani, hogy lerántson egy verziószámot és szóljon, hogy van frissítés.
Majd indít egy jvm-et és megvagyunk. Ekkor jöhetne a webstartos verzió a frissítő app-ból.
Most azt gondolom, hogy ezzel egy rakat problémától megszabadulok. Majd nyilván jön helyette más, de most tetszik az ötlet.
Köszönöm!
- A hozzászóláshoz be kell jelentkezni
En maskepp fognam meg a problemat. Maganak a frissitesnek a figyeleset az alkalmazas teljes futasi ideje alatt figyelnem, de a frissitest magat az alkalmazas indulasakor, esetleg loginkor inteznem (ha az alkalmazas frissitett reszeit kesobb is be lehet tolteni). Igy minden frissites lefutna felhasznaloi interakciora (elindul az app), viszont a kritikus frissiteseknel lehet szolni, hogy _most_ mentse a munkajat es _azonnal_ inditsa ujra az appot.
Persze nem tudom, hogy ez Oracle Forms kornyezetben mennyire realis. SWING appnal meg lehet oldani.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Na pont így képzeltem én is :). Ideális helyzet az még az app indulása után login előtt. Ha akar frissít, ha nem belép és dolgozik.
De közben is lehet figyelni, h van e újabb verzió és szólni, ha van.
- A hozzászóláshoz be kell jelentkezni