Instalace aplikace   zodpovězená otázka

VB.NET

Chci se zeptat jak by jste řešili následující ?

Dopředu informuji, že jsem prohledal fórum ale nedostal jsem odpověď.

Vytvořil jsem aplikaci která bude "běhat" v naší doméně.

Instalaci si vytvořím v Inno setup a protože nechci instalovat program pro každého uživatele zvlášť nebudu používat ve VB.net integrovaný Publish.

Ten po mých testech instaluje program do dokumentů, aby obešel ochranu oprávnění. Jenže tím pádem nutí instalovat aplikaci pro každého uživatele zvlášť, což je krajně pracné a nepraktické.

Nenašel jsem nikde jak instalovat pro all users. Našel jsem někde i nějaké části kódu, jak používat click once programově, ale určení cíle nikde. Navíc aktualizace tam fungují-nefungují. Tu se aplikace zaktualizuje, tu si vytvoří sekundarní instalaci a očísluje jí na "-1" :-) Asi VB bere verzi novou verzi programu jako nový program. Update pak zjišťuje podle Publish verze ale já potřebuji zase vědět kdo má jakou verzi programu,jedině snad si tvořit vlastní verzi někde v textboxu :-)

Je sice dobrý, že si dokáže zjistit chybějící framework ale bez administrátorského oprávnění si stejně neškrtne.

Takže to si stejně budu muset na všech stanicích doinstalovat takřka "ručně".

Pokud mi to tady někdo nevyvrátí, tak je pro mě a asi i pro ostatní Publish nepoužitelný.

Proto se dám cestou Inno setup a mnou řízeného update.

A nyní mé otázky.

Jak zjistím verzi "cizího" programu, abych si ověřil nutnost aktualizace ?

Je nutné na spuštění update použít externí prográmek, nebo se dá v aplikaci updatovat sám sebe ? Jde o to, že v okamžiku kopírování aktuálního .exe souboru je asi potřebné vypnout sám sebe, ale tím asi jistě ztratím kontrolu ? Nebo se to dá nějak inteligentě obejít a dokončit část kódu při restartu aplikace ? Asi ne , ale co kdyby :-)

Předem díky i za nakopnutí správným směrem nebo případně za komentované vyvracení mých závěrů při zkoumání Publishingu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Používáte v doméně Microsoft Systems Management Server? Pomocí něho by se daly aktualizace aplikace také jednoduše zajistit (automaticky bez nutnosti jakékoliv interakce uživatele).

Momentálně mě nenapadá jak by mohla aplikace jednoduše aktualizovat sama sebe bez nutnosti druhé aktualizační aplikace, ale určitě to jde, používá to například .NET Reflector (můžete ho reverzovat a mrknout se jak je to udělané).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dík, podívám se o co jde.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

InnoSetup vám nainstaluje .NET Framework bez práv admina? Dost pochybuji.

Instalaci čehokoliv by měl provádět výhradně administrátor, proto je naprosto logické, že to s právy běžného uživatele nejde.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To máte pravdu, ale pak postrádám u integrovaného nástroje jakoukoliv plně funkční a nastavitelnou činnost. Změna verze = nová sekundární aplikace ? Nemožnost instalace pro all user nebo např.do Program files ? Tzn. nutnost prvotní instalace pro každého uživatele zvlášť, to bych se zbláznil :-)

Takže při použití Publis ve VB.net musím stejně provést na každém PC update frameworku s mojí účastí, stejně jako v případě Inno setup, ale už nemusím instalovat software pro každého usera zvlášť. Už instalace programu do dokumentů mi přijde jako prasárna :-) Dále jsem si nevšimnul, že by Publish umožnil případnou odinstalaci, zatímco Inno to umožňuje a pěkně po sobě uklidí, ale to je jen detail. Takže má volba je jasná. Akorát jsem si chtěl ověřit, jestli nehaním Publish neprávem, zda neexistuje nějaká možnost ovládat instalaci kódem a tedy dle potřeb. Něco málo jsem na netu našel, ale např. určení cíle instalace jsem tam nenašel. Ale našel jsem tam nějaké možnosti ohledně kontrolovaného update. Nechtělo se mi to ale zkoumat pokud nejde instalovat cílouvou pozici aplikace. Pokud by to šlo pak by to bylo o něčem jiném :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já když zvýším verzi, tak se nevytvoří další instance té aplikace, ale normálně se přeinstaluje.

Jinak k možnosti určení cíle instalace, podle mě je úplně jedno, kam se ta aplikace nainstaluje (tuším že někam do Application Data), hlavně když ji uživatel najde na ploše, v nabídce Start atd. Odinstalovat se dá překvapivě pomocí okna Přidat/odebrat programy.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ale pro Přidat/odebrat programy už to chce alespoň u naší bezpečnostní politiky zase admin práva. Takhle všem uživatelům stejného PC, v Program Files v dané složce dovolím spouštět aplikace a při update se provede nejdříve odinstalace bez nutnosti admin přihlášení a poté nová instalace. Už jsem to dodělal pomocí Inno setup a po přidání scriptu mi to kontroluje i framework a provádí automaticky jeho instalaci ze serveru. :-) Aplikace se i automaticky spustí, takže není nutný druhý spustitelný soubor určený pro aktualizaci. Prostě aplikace ověří verzi na serveru a pokud nesouhlasí s uživatelskou tak spustí novou instalaci ze serveru a původní verze se zavře. Po instalaci se automaticky otevře nová verze. Funguje to výborně. Bohužel, zatím jsem nepřišel jak udělat skrytou instalaci tj. bez potvrzení uživatele. Uživatel nyní musí 2x odkliknout další a změnit může jen nastavení zástupců. Ale píše se, že to lze nastavit na úplný skrytý režim, jen nikde není vysvětleno jak :-)

A co se týče té verze, tak u mne se aplikace updatne pouze při změně verze v publish, jakmile změním verzi, která je vidět ve vlastnostech programu (Assembly) tak proběhne sekundární instalace. V Přidat/odebrat programy se objeví všechny instalace dle čísla verze.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Taky používám innosetup a nemůžu si na něj stěžovat. Je třeba nicméně říct následující věci:

1) Samozřejmě žádný instalátor Vám nenainstaluje framework pod nižšími právy než je admin. Innosetupu nicméně můžete říct, aby pokračoval v instalaci pouze v případě, že jste jako admin přihlášen, čili toto je v pohodě.

2) Verzi cizího programu zjistíte přes FileVersionInfo.GetVersionInfo, s tím nebude problém.

3) Řekl bych, že je třeba na aktualizaci sebe sama externí prográmek, který a) vypne "hlavní" program, b) provede aktualizaci c) zapne "hlavní" program. Ke slovu přijde Process.start, to každopádně.

4) Innosetup umí přepínače, myslím, že jeden z nich je /SILENT. Hodí se pro bezobslužnou instalaci či aktualizaci.

5) Pokud by někdo věděl, jak může aplikace instalovat "sebe sama", tak by mě to taky zajímalo ;-))

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback