Käyttäjän työkalut

Sivuston työkalut


paketit:filzip

FilZip

FilZip on graafinen pakettujen tiedostojen käsittelyohjelma. Toisin kuin yleisempi WinZip, FilZip on ilmainen.

Asetukset

Käynnistyessään FilZip haluaa muistuttaa käyttäjää mahdollisesta rekisteröinnistä ja kysyy, mitkä tiedostot halutaan assosioida FilZipille. Rekisteröinti on ilmaista, eikä siitä ole muuta hyötyä kuin, että saa mailia uusista versioista. Nämä dialogit on hyvä poistaa muokkaamalla rekisteriasetuksia (tai kun tekee capturea, käynnistää FilZip kerran).

Nämä asetukset tallentuvat Current User-haaraan registryssä, joten mikroluokkaan useammalle käyttäjälle asentaminen on mutkikkaampaa, ks. alempana miten tämä tehdään.

Tiedostot ja rekisteriasetukset

FilZipin tiedostot tulevat kaikki %ProgramFiles%\FilZip kansion alle. Tiedostoista kannattaa poistaa installshieldin uninstall paketit, muuten ne voi kaikki ottaa mukaan.

FilZip tekee normaalit tiedostoassosiaatiot, CLSID:t yms. asetukset HKCR haaraan. Näissä asetuksissa ei ole mitään erityisen ihmeellistä. Tämän lisäksi FilZip tekee HKCU haaraan käyttäjäkohtaiset assosiaatioarvot, polut kansioihin, johon oletuksena puretaan tiedostot, sekä lisäksi polun FilZip executableen. Miksi tämä asetus laitetaan HKCU-haaraan on mysteeri, joka aiheuttaa lisää tuskaa paketin teossa.

Tämä tärkeä asetus, että ns. right-click context menusta voi käyttää FilZipiä, on HKCU\Software\FilZip\App, jossa tulee siis olla polku FilZip.exe:een. Tärkeää huomata, että polku pitää olla REG_SZ tyyppiä, eli expandable muuttujia, kuten %ProgramFiles% ei voi käyttää. Toinen tärkeä asia on, että tässä asetuksessa ei saa olla lainausmerkkejä ympärillä, vaikka polku sisältäisi välilyöntejä. Tyypin REG_EXPAND_SZ polku toimii Windows 2000:ssa, mutta ei Windows XP:ssä. Jos tässä polussa on jotain vikaa, siitä ilmoitetaan seuraavalla selkeällä virheilmoituksella:

Useammalle käyttäjälle asentaminen

Jos HKCU-haaran asetukset puuttuvat registrystä, FilZip käynnistyessään haluaa kysyä mitkä tiedostopäätteet halutaan assosioida siihen ja muistuttaa rekisteröinnistä. Tämä on ikävää, jos käyttää ohjelmaa mikroluokassa, joka päivä eri koneella, ja aina pakettia purkaessa joutuu käymään nämä dialogit läpi. Siksi asennuksen pitää huolehtia siitä, että jokaiselle käyttäjälle tulee oikeat asetukset HKCU-haaraan registryssä.

Tämä olisi helppoa, jos FilZip käynnistettäisiin aina kuvakkeesta, joka osoittaa MSI-paketin featureen. Laitettaisiin vain HKCU-haara KeyPathiksi ja msiexec huomaisi, että rekisteriarvoja puuttuu ja korjaisi asennuksen. Ongelma on se, että FilZip käynnistetään luultavasti klikkaamalla jotain zip-pakettia. Tällöin msiexec ei käynnisty lainkaan, vaan FilZip ajetaan suoraan.

Active Setup

Tässä tapauksessa järkevintä oli tehdä skripti, joka korjaa rekisteriasetukset ja joka ajetaan käyttäjän kirjautuessa koneeseen sisään. Active Setup määriteltiin ajamaan Visual Basic-skripti, joka lisättiin asentumaan FilZip-hakemistoon pakettia asennettaessa. Active Setup asetukset:

      <!-- Active Setup settings -->
      <Component Id="regcomponent3" Guid="GUIDGUID-GUID-GUID-GUID-GUIDGUIDGUID">
	<Registry Id="registry200" Action="write" Root="HKLM"
		  Key="Software\Microsoft\Active Setup\Installed Components\{C59D7BF3-9318-437E-B76D-6A8601B0D2B1}"
		  Value="FilZip HKCU Entries" Type="string" KeyPath="yes" />
	<Registry Id="registry201" Action="write" Root="HKLM"
		  Key="Software\Microsoft\Active Setup\Installed Components\{C59D7BF3-9318-437E-B76D-6A8601B0D2B1}"
		  Name="Version" Value="1,0,0,0" Type="string" />
	<Registry Id="registry202" Action="write" Root="HKLM"
		  Key="Software\Microsoft\Active Setup\Installed Components\{C59D7BF3-9318-437E-B76D-6A8601B0D2B1}"
		  Name="StubPath"
		  Value="&quot;%SystemRoot%\system32\cscript.exe&quot; &quot;%ProgramFiles%\FilZip\filzip.vbs&quot;" Type="expandable" />
 
      </Component>

Visual Basic -skripti

Helpoin tapa asettaa käyttäjälle rekisteriasetukset on ottaa rekisteripala (.reg), ja lisätä se registryyn ajamalla regedit /s pala.reg. Tämä toimikin muiden asetuksian osalta hienosti, mutta ongelmaksi muodostui HKCU\Software\FilZip\App, jossa tulee olla oikea polku FilZip.exeen ilman lainausmerkkejä ja tyyppiä REG_SZ (eli %ProgramFiles% tyyppiset laajentuvat polut eivät tulleet kysymykseen). Ensimmäinen ajatus oli vain tylysti pistää poluksi C:\Program Files\FilZip\FilZip.exe, mutta tällöin esim. suomenkielisen windowsit käyttäjät eivät saisi FilZipiä toimimaan, koska oikea polku olisi C:\Ohjelmatiedostot\FilZip\FilZip.exe. Sama ogelma tulisi myös niille, jotka ovat asentaneet Windowsin jollekin muulle asemalle kuin C.

Skriptin pitää siis muiden asetuksien tuomisen lisäksi kaivaa oikea polku ja kirjoittaa se registryyn. Tämä on onneksi suhteellisen helppoa ja tehtiin seuraavalla skriptillä:

' FilZip registry fiksaus
' by Ville (27.03.2006)

Set shell = CreateObject("WScript.Shell")
Set env = shell.Environment("process")
Set fs = CreateObject("Scripting.FileSystemObject")
Set cmdArgs = WScript.Arguments

Set ProgFolder = fs.GetFolder(env("ProgramFiles"))
Set WinFolder = fs.GetFolder(env("SystemRoot"))
AppPath = (ProgFolder & "\FilZip\FilZip.exe")
RegFrag = (ProgFolder & "\FilZip\user.reg")
RegEdit = (WinFolder & "\regedit.exe")

' Kirjoitetaan oikea polku FilZipille
shell.RegWrite "HKCU\SOFTWARE\FilZip\App", AppPath, "REG_SZ"

' Importataan loput asetukset suoraan registry fragmentista
shell.Run (chr(34) & RegEdit & chr(34) & " /s " & chr(34) & RegFrag & chr(34)),1

Ongelmat

Lähinnä ainoaksi ongelmaksi jää, että jos koneelta joskus poistetaan FilZip, ainoastaan poistajalta poistuu HKCU-haarasta FilZip asetukset. Tämän ei pitäisi olla kovin suuri ongelma, sillä ylimääräiset asetukset eivät haittaa mitenkään.

Toinen mahdollinen ongelma on, että FilZip poistuessaan tyhjentää zip-assosiaation kokonaan, jolloin esim. Windows XP ei osaa enää näyttää Zip-tiedostojen sisältöä. Kokeilin tätä, ja ilmeisesti Windows XP:ssä on jonkinlainen palautus tuolle asetukselle, sillä se osasi FilZipin poiston jälkeen purkaa itse zipit.

paketit/filzip.txt · Viimeksi muutettu: 2014/11/20 13:01 (ulkoinen muokkaus)