Käyttäjän työkalut

Sivuston työkalut


ohjeet:windowsinstaller

Tämä on vanha versio dokumentista!


Windows Installer

Windows Installer on Windowsin palvelu (service), joka huolehtii ohjelmien

asentamisesta eli tiedostojen kopioinnista, rekisteriasetusten ja

pikakuvakkeiden luomisesta, ohjelmien poistamisesta, korjaamisesta,

asennuksen tai poistamisen peruuntumisesta (rollback) ja ylipäänsä

kaikesta mahdollisesta mikä liittyy ohjelma-asennuksiin. Windows

Installerin tarkoituksena on huolehtia, että tiedostot ja rekisteri

pysyvät hyvässä ojennuksessa, mitään jo koneella olevaa ei vahingossa

korvaudu asennuksessa eikä vastaavasti ohjelmaa poistettaessa mitään

sellaista poisteta, mitä ei kuulukaan poistaa.

Windows Services

Windows Installer -palvelu on normaalisti pysähtyneenä ja se käynnistyy

tarvittaessa eli aina silloin kun koneella on jotain ohjelma-asennuksiin

liittyvää meneillään.

Windows Installer Service

Versiot

Windows Installerista on ollut useita eri versioita ja se on saatavana

myös vanhoihin Windowseihin erikseen asennettavana komponenttina.

Windows 2000, XP sekä Windows Server 2000 ja 2003 ovat aina pitäneet

sisällään jonkin Windows Installerin version, joten Windows Installer

on ollut jo useita vuosia Microsoftin virallinen tapa ohjelmien

asentamiseen. Koneella olevan version voi selvittää käynnistämällä

Windows Installerin komennolla msiexec.

Versio Tuetut käyttöjärjestelmät
1.0 Windows NT, 95, 98, 2000
1.1 Windows NT, 95, 98, 2000
1.11 Windows Server 2000
1.2 Windows NT, Me, 95, 98, 2000, 2000 Server
2.0 Windows NT, Me, 95, 98, 2000, XP, 2000 Server
3.0 Windows 2000, XP, 2000 Server, Server 2003
3.1 Windows 2000, XP, 2000 Server, Server 2003
4.0 Windows Vista, Server 2008

Jos tarkemmat versionumerot jostain syystä kiinnostavat, niin

ne löytyvät

MSDN:n sivulta.

Windows Installer komentoriviltä

Windows Installeria käytetään komentoriviltä kutsumalla

ohjelmaa msiexec.exe. Vanhat versiot antoivat virheilmoituksen,

uudemmat avaavat ohjeikkunan, jossa kerrotaan msiexec:in

ymmärtämät komentoriviparametrit.

MSI-paketit

Windows Installer ei ole kaikkiruokainen asennettavien ohjelmien suhteen.

Itse asiassa se noudattaa hyvin tarkkaa dieettiä ja suostuu nielemään

vain ja ainoastaan Windows Installerin omia asennuspaketteja, MSI-paketteja

(.msi) tai Patch:eja (.msp), lisukkeiksi kelpaavat Windows Installer

Transform:it (.mst).

MSI-paketin rakenne

MSI-paketti koostuu erillisistä streameista, kuten ”Summary information”

ja ”Database”. Database on rakenteeltaan relaatiotietokanta, jossa on

kuvattu koneen toivottu tila asennuksen jälkeen. MSI-paketti ei siis ole

”perinteinen” proseduraalinen asennusohjelma tai skriptattu asennus, vaan

deklaratiivinen asennuksen määrittely. Windows Installerin tehtävänä on

tulkita MSI-paketin sisältö ja huolehtia kaikista tarvittavista

toimepiteistä, jotta MSI-paketissa kuvattuun lopputulokseen päädyttäisiin

(tai siitä päästäisiin eroon ohjelmaa poistettaessa).

Toimenpiteet pitävät sisällään muun muassa tarvittavien asennus- tai

poistoskriptien luomisen ja ajamisen, järjestelmän eheydestä huolehtimisen

ja vuorovaikutuksen käyttäjän kanssa.

MSI-paketin rakennetta voi kuvata seuraavasti.

  • Package
  • Product
  • Feature A
  • Component 1
  • File 1
  • Component 2
  • Registry Setting 1
  • Feature B
  • Component 3
  • File 2

Feature on ohjelman erillinen osanen, esimerkiksi MS Officessa

Word tai Excel. Normaalisti ohjelmia uudelleenpaketoitaessa riittää

yksi feature. Pienin Windows Installerin ”käsittelemä” yksikkö

(”atomic unit”) ja myös MSI-paketin tärkein osanen, on component.

Component:it pitävät sisällään esimerkiksi tiedostoja tai

rekisteriasetuksia ja niiden muodostamiseen on varsin tarkat

säännöt

(Component Rules). Component-käsitteen ymmärtäminen on melkeinpä

tärkein MSI-paketteihin ja Windows Installeriin liittyvä seikka.

Transformit, pätsit ja bootstrapperit

Transformit

Windows Installer Transform (.mst) on MSI-paketin kaltainen

tiedosto, jossa on määritelty mitä muutoksia alkuperäiseen

MSI-pakettiin halutaan asennettaessa tehdä. Transformissa

määritellyt muutokset voidaan yhtä hyvin tehdä suoraan

alkuperäiseen MSI-pakettiinkin, mutta useat eri transformit

mahdollistavat helposti erilaiset asennukset

msiexec.exe /i Foo_1.0.0.msi TRANSFORMS=Foo_no-eula.mst
msiexec.exe /i Foo_1.0.0.msi TRANSFORMS=Foo_no-desktop-shortcut.mst
msiexec.exe /i Foo_1.0.0.msi TRANSFORMS=Foo_finnish.mst;Foo-no-desktop-shortcut.mst;Foo-no-eula.mst

Pätsit

Windows Installer Patch (.msp) on harvemmin käytetty

ohjelmapäivityksen muoto. Kokonaan uuden MSI-paketin sijaan

voidaan luoda .msp-tiedosto, joka päivittää alkuperäistä

MSI-pakettia. Patchit asennetaan aina komentoriviltä ja

patchin toimittajan tulisi antaa ohjeet sen käytöstä.

Bootstrapperit

Bootstrapperilla tarkoitetaan erillistä ajettavaa ohjelmaa,

kuten setup.exe, joka toimii ikään kuin välikerroksena

käyttäjän ja Windows Installerin välissä. Bootstrapperissa

voidaan tehdä sellaisia toimenpiteitä, mitä ei haluta tai

ei ole järkevää laittaa osaksi MSI-pakettia, kuten ohjelman

asentamis- tai toimimisedellytyksien tarkastamisen ja

tarvittavien käyttöjärjestelmän lisäosien tai apuohjelmien

asentamisen (jotka voivat vallan hyvin olla MSI-paketteja

nekin. Sisäkkäisten (nested) MSI-pakettien ajaminenhan on

kiellettyä!).

Bootstrapperilla voidaan myöskin tarjota käyttäjäystävällinen

liittymä ohjelman asentamiseen, jolloin bootstrapper-ohjelma

ajaa ohjelman asentamiseen tai paikkaamiseen tarvittavan

komentorivin. Bootstrapper voisi esimerkiksi ajaa käyttäjän

puolesta ohjelman asentamiseksi komennon

msiexec /i program.msi SERIAL=1234ABCD TRANSFORMS=lang_finnish.mst

tai

msiexec /i program.msi SERIAL=EVALUATION TRANSFORMS=lang_swedish.mst

Saman toiminnallisuuden toteuttaminen ei pelkästään MSI-pakettia

hiirellä klikaten onnistu.

Jotkin ohjelmistotoimittajat piilottavat MSI-paketin

bootstrapperin sisään, josta se sitten puretaan ohjelmaa

asentavalta käyttäjältä ”salaa” johonkin väliaikaiseen

paikkaan, kuten %temp%-hakemistoon.

Bootstrapperit ovat ylläpitäjälle sikäli tarpeettomia,

että niillä tehdään juuri se työ, mikä oikeastaan kuuluu

järjestelmän ylläpitäjän tehtäviin. Bootstrapperin

sisältämä logiikan ja toiminnallisuuden kuvaaminen

pitäisi aina löytyä ohjelman asentamiseen liittyvästä

dokumentaatiosta, mutta useimmitenhan tällaista tietoa

ei ole kovinkaan helposti saatavilla.

Windows Installer -pikakuvake

Verrataanpa Notepadin ja Orcan pikakuvakkeita.

Huomaamme, että Notepadin kohdalla Target: osoittaa suoraan levyllä olevaan

ajettavaan tiedostoon notepad.exe, mutta Orcan kohdalla Target: ei ole

mikään tietty tiedosto, vaan asennettu ohjelma, Orca itsessään. Notepadin

pikakuvake on ”perinteinen” Windowsin pikakuvake, Orcan pikakuvake taas

Windows Installer -pikakuvake. Kun Notepadin pikakuvakkeesta käynnistyy

ajettava ohjelma suoraan, niin Orcan pikakuvake käynnistääkin Windows

Installerin, joka ensin vertaa koneella vallitsevaa tilannetta Windows

Installer cachessa olevaan Orcan MSI-pakettiin, tarvittaessa korjaa

”rikkinäisen” asennuksen ja vasta sitten käynnistää ajettavan ohjelman.

Lisäksi Windows Installer -pikakuvakkeet mahdollistavat ”installation-on-demand”

ja ”advertisement”-asennukset.

Advertised, Published ja Assingned -asennukset

Windows Installer, Group Policyt sekä muut ohjelmistojen jakelujärjestelmät

mahdollistavat eri tyyppisiä ohjelmien asennusvaihtoehtoja.

  • Published”-asennuksessa ohjelma julkistetaan käyttäjien asennettavaksi Add/Remove Programs:in kautta, jolloin user-tason oikeudet riittävät ohjelman asentamiseen.
  • Advertised”-asennuksessa käyttäjälle taas luodaan valmiiksi ohjelman pikakuvakkeet, mutta ohjelma asennetaan vasta kun se käynnistetään ensimmäisen kerran.

Sekä ”published”- että ”advertised”-asennuksissa ohjelma voidaan myös

määritellä asentumaan, kun käyttäjä esimerkiksi tuplaklikkaa tiedostoa,

jonka tiedostopääte on ohjelman asennuspaketissa määritelty avattavaksi

kyseisellä ohjelmalla. (Auto-Install)

  • Assigned”-asennuksessa ohjelma määritellään asentumaan joko tietyille
  • koneille, jolloin ohjelma asentuu bootin aikana ja on kaikkien koneen käyttäjien käytettävissä ilman että jokaisen tarvitsee asentaa ohjelmaa erikseen käyttöönsä tai
  • käyttäjille, jolloin ohjelma asentuu loginin aikana se on aina käyttäjän käytettävissä kaikilla koneilla

Installation-on-demand” tarkoittaa ohjelmien asentamattomien osien

(Feature) lisäämistä ohjelman käytön aikana.

Windows Installer cache

Kun Windows Installer asentaa ohjelman MSI-paketista, se tallettaa

koneen levylle asennuspaketista ”tyhjennetyn” (inflated) version, jossa

on kaikki asennuksen logiikkaan ja eheyteen liittyvä tieto, mutta ei

esimerkiksi MSI-paketin sisällä mahdollisesti olleita tiedostoja.

Per-Machine -asennuksissa MSI-cache löytyy hakemistosta

%systemroot%\Installer. Cachessa olevien pakettien selailu

Windows Explorerin kanssa tulee havainnollisemmaksi, kun asettaa

Author ja Title -sarakkeet näkyville.

”%userprofile%\???\Installer”

Kuvake- ja mst-tiedostot tallentuvat hakemistoon

”%USERPROFILE%\Application Data\Microsoft\Installer\{ProductCode GUID}”

Install Source

Windows Installer säilyttää Windowsin rekisterissä myös tietoa siitä,

mistä ohjelma on alunperin asennettu eli mistä polusta alkuperäinen

MSI-paketti löytyy. CD- ja muiden siirreltävältä medialta tehtyjen

asennusten kohdalla install sourcen takaa ei tietenkään löydy yhtään

mitään ja jos MSI-paketti on tehty todella huonosti, voi ohjelman

käynnistysyritys johtaa virheilmoitukseen ja ohjelman käyttö estyä.

(Toki se .exe siellä jossain levyllä toimii).

Verkossa olevat MSI-paketit suositellaan yleisesti laitettavaksi

DFS-jaon taakse ja MSI-paketteihin viitataan aina ainoastaan

DFS-jaon kautta. Näin install source säilyy aina samana, vaikka

tiedostoja kopioitaisiinkin levypalvelimelta toiselle ja install

source on aina saatavilla. Tai no; ainakin silloin kun verkko toimii.

Tiedostojen lisääminen MSI-pakettiin

Esimerkit koskevat QuickTime.msi-pakettiin lisättäviä tiedostoja, mutta ovat yleispäteviä.

Cabinet-paketin luonti

Luo .ddf-tiedosto (Diamond Directive File), jossa luetellaan .cab-tiedoston sisältämät tiedostot:

.OPTION EXPLICIT
 
.Set CabinetNameTemplate=settings.CAB
 
.Set Cabinet=on
.Set Compress=on
 
"CopyConfig.vbs"
"QTPlayerSession.xml"
"QuickTime.qtp"

Kopioi .cab-tiedostoon tulevat tiedosto samaan hakemistoon luomasi .ddf-tiedoston kanssa ja aja makecab.exe /F init.ddf, joka luo tarvittavan settings.cab-tiedoston disk1-hakemistoon.

Transform-tiedoston muokkaus

  1. Avaa msi-tiedosto InstEd:llä, Orcalla tai muulla haluamallasi msi-muokkausohjelmalla.
  2. Luo uusi transform.
  3. Lisää Component-tauluun komponentti, johon uudet tiedosto liitetään:
    • Component-nimeksi haluamsi (esim. Settings)
    • Arvo ComponentId
    • Directory_-kohtaan hakemisto, johon uudet tiedostot tulevat asennuksessa (esim. INSTALLDIR)
    • Attributes- ja Condition-kohtiin ei tarvitse koskea
    • KeyPath-kenttään jokin uusi tiedosto (esim. CopyConfig.vbs)
  4. Lisää Feature Components-tauluun tiedot edellisessä kohdassa lisäämästä komponentistasi:
    • Feature_-kohtaan haluamasi nimi (esim. Settings)
    • Component_-kohtaan edellisessä kohdassa nimeämäsi Component (esim. Settings)
ohjeet/windowsinstaller.1293095574.txt.gz · Viimeksi muutettu: 2014/11/20 15:01 (ulkoinen muokkaus)