If I had my dream, it would be to make management go away; that has to be our mission - Jim Allchin, Microsoft



Relevanta dokument
DDR PC SOFTWARE 2 RELEASENOTES VERSION 2.5. Swerob Service AB Global Robot Parts AB

INSTALLATIONSGUIDE. Uppdatering av ditt Mamut-system

Flytt av. Vitec Mäklarsystem

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

Myndigheten för samhällsskydd och beredskap 1 (10) Datum Installationsguide ROPA

OBS! FÖRSÖK INTE INSTALLERA PROGRAMVARAN INNAN DU HAR LÄST DET HÄR DOKUMENTET.

PM Dokumentation

Installation/uppdatering av Hogia Personal fr.o.m. version 13.1

Allmänt om programvaror och filer i Windows.

7 Mamut Client Manager

Installationsguide för FAR Komplett Offline 2.1.2

3.2 1H[W*HQHUDWLRQ6HFXULW\ Användarmanual

Viktigt angående version av Win 7 och Win 8 OS

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Handicom. Symbol for Windows. Encyklopedi. Version 3.4

Skapa ett eget programnu! NU! Komplett med programvara och konkreta exempel! Patrice Pelland. Swedish Language Edition published by Docendo Sverige AB

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Objektorienterad programmering i Java I

Installationsbeskrivning för CAB Service Platform med CABInstall

INSTALLATION AV VITEC MÄKLARSYSTEM

Uppgraderingsinstruktion för Tekis-FB Avisering version 6.3.1

Installationsanvisning för LUQSUS version 2.0

Installationsanvisning - Kopplingen mellan GK96 och golf.se -

Installation och setup av Net-controller AXCARD DS-202

Installationsguide, Marvin Midi Server

INSTALLATION AV KLIENT

Installationsanvisning för Su Officemallar 2013 För PC

Scan Station Pro 550 Administration och serviceverktyg för Scan Station

Uppgraderingsinstruktion för Tekis-FB Avisering version 6.3.0

Win95/98 Nätverks Kompendium. av DRIFTGRUPPEN

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

INSTALLATION AV KLIENT

Procedurer för att ändra standardplats för programinstallation i Windows XP

Installationsmanual för OnCourse

FLEX Personalsystem. Uppdateringsanvisning

HotCalc Business Simulator Fullständig installationsanvisning

Installationsanvisningar HogiaLön Plus

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Alla rättigheter förbehållna.

Lathund Blanketthotell Komma igång

Installationsanvisningar HogiaLön Plus

Skapa ett paket av TI-Nspire programvara med Microsoft SMS 2003

TIS-Web startguide 3.6. TIS-Web Startguide

PSTYR OBS! Om du ska installera på en dator med Microsoft Windows XP så måste servicepack 3 vara installerad.

Grundkurs 1 IKT Filhantering

NetBeans 5.5. Avsikt. Projektfönster

INSTALLATIONS ANVISNING

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Ja, men resultatet blir inte lika bra. Det är att skapa genvägsikoner. Se anvisningar nedan:

Installationsanvisning för Su Officemallar 2003 För PC

Hogia Administration AB bedriver kontinuerlig utveckling av programmen och reserverar sig för avvikelse mellan program och handbok.

Installationsanvisning för LUQSUS-K version 3.0b

LIMITED DESKTOP. Version Januari 2008

Författare Version Datum. Visi System AB

Handledning för Installation av etikettskrivare

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Qlik Sense Desktop. Qlik Sense 1.1 Copyright QlikTech International AB. Alla rättigheter förbehållna.

Strul med Windows 10? Här är lösningarna på de vanligaste problemen

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Installation av. Vitec Mäklarsystem

Instruktion för användande av Citrix MetaFrame

Installationsguide fo r CRM-certifikat

Information om program och lokalisering för TI-grafenheter

Föreläsning 2. Operativsystem och programmering

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Alla rättigheter förbehållna.

Installationsanvisning för Su Officemallar 2007 För PC

AVCAD 4.0 för Windows

Komponenter med COM (och COM+/VC++ 7.0)

Installationsmanual ImageBank 2

Manual Godman Redovisning

Mobilus får inte användas under tiden uppdateringen genomförs.

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Installation, Novaschem 2005

Krav: * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

INSTALLATION AV KLIENT

Uppdatering till Windows 8.1 steg för steg-guide

Uppdatering till Windows 8.1 steg för steg-guide

Installationsguide. Innehållsförteckning

Installation av RIB Huvudprogram 1.3

SharpdeskTM R3.2. Installationsguide Version

Datum Den första bilden i installationsprogrammet visar vilken version det är. Klicka på Nästa eller tryck Enter för att fortsätta.

Installations- och startguide. För DataPage+ 2013

INSTALLATIONSHANDBOK

INSTALLATION AV KLIENT

Installationsanvisningar VisiMIX. Ansvarig: Visi System AB Version: 2.2 Datum: Mottagare: Visi MIX kund

SharpdeskTM R3.2. Installationsguide Version

BaraTrav Prenumeration och Installation Version 1.3.4

Manual Produktion av presentationssynkar med PowerPoint och Producer

Installationsguide ELCAD 7.10

Kompletterande instruktioner för installation och konfiguration av HMS-server för koppling mot KONTAKT

Installation av. Vitec Mäklarsystem

Årsskiftesrutiner i HogiaLön Plus SQL

Installationsanvisningar VISI Klient

Meditech. CardioVisions. version 1.19.xx. Installationshandledning

Föreläsning 3. Programmering, C och programmeringsmiljö

Du kan installera Widgitprodukter på ett nätverk. Följande program och tillägg hanteras (du kanske inte har licens att installera all dessa):

Installationsanvisning för Su Officemallar 2007 För PC Word och PowerPoint

Många företag och myndigheter sköter sina betalningar till Plusoch

FileMaker Server 14. Guiden Installation över nätverk

Transkript:

If I had my dream, it would be to make management go away; that has to be our mission - Jim Allchin, Microsoft MÄLARDALENS HÖGSKOLA INSTITUTIONEN FÖR DATATEKNIK 2000-03-14 HARALD WALDEN DTV96HWN@MDS.MDH.SE

Förord Denna rapport är gjord som en del i ett 20 poängs examensarbete inom området datateknik och behandlar ämnet. Examensarbetet är på D-nivå vilket innebär att minst 10 av de totalt 20 poängen skall vara teoretiska (forskarnära), därför har jag i tillsammans med ABB valt att dela upp mitt arbete i en ren implementationsdel (10-poäng) och en teoretisk fördjupningsdel (10-poäng). Både dessa delar kommer att behandlas i denna rapport. Examensarbetet är utfört på ABB Robotics Products AB samt vid Mälardalens högskola (Institutionen för Datateknik, IDt) i Västerås. Jag vill här även passa på att tacka mina handledare Ivica Crnkovic (Mälardales högskola, IDt) och Peter Ericsson (ABB Robotics). Jag vill även tacka Ralph Sjöberg (ABB Robotics), Simon Mitchell (InstallShield Software Ltd), Oscar Newkerk (Technical Evangelist Microsoft Corporation) och fram för allt Zoltan Pataky (ABB Robotics) för hjälp och stöd under tiden detta examensarbete pågått. Harald Walden -1-

Sammanfattning Ett examensarbete som kretsar kring kan tyckas vara rätt tråkig. Men det arbetas/forskas just nu väldigt mycket inom området computer management. I och med Windows Installer Service så kommer en hel rad nya finesser som man tidigare inte haft att tillgå när man skapat installationsprogram. Vad sägs till exempel om applikationer som kan reparera sig själva eller automatiskt återhämta filer som saknas när de behövs eller att till exempel lägga till en ikon i startmenyn på 1000-tals datorer i ett företag samtidigt, utan att för den sakens skulle installera någon programvara på de olika datorerna Installationsproceduren kommer nu att tas över av operativsystemet och på så sätt göras säkrare. Det leder i sin tur att det blir lättare att hantera, övervaka och uppgradera redan installerade produkter, då det nu finns ett definierat gränssnitt som operativsystemet står för. Tidningen InfoWorld (18, januari 1999) anser att Windows Installer Service är den 4:e största förändringen i Windows 2000 (jämfört med NT 4.0) och tidningen Datateknik påstår att det till och med skulle kunna vara den näst största förändringen! Denna rapport behandlar inte bara den nya tekniken i Windows Installer Service utan innehåller även information om den implementation Robot Install Assist - som jag gjort under examensarbetets gång. Denna rapport vänder sig främst till de som har någon form av utbildning inom Datateknik. -2-

Innehållsförteckning 1 Inledning... 6 1.1 Problembeskrivning... 6 1.1.1 Installationsprogrammet (praktisk del, 10p)... 6 1.1.2 Framtida installationsmöjligheter (teoretisk del, 10p)... 6 1.2 Metod... 7 2 Tidigare tillvägagångssätt vid installations... 7 3 Implementationen Robot Install Assist... 8 3.1 Krav på Robot Install Assist... 8 3.1.1 Hierarkiska uppbyggd... 8 3.1.2 Organiserad filstruktur... 8 3.1.3 Möjlighet till flera språk... 9 3.1.4 Avinstallation... 9 3.1.5 Genvägar... 9 3.1.6 Registerkommunikation... 9 3.1.7 Automatisering med hjälp av skript... 10 3.2 Fördelar jämfört med tidigare installationsförfarande... 11 3.3 Funktionsbeskrivning... 12 4 Utvecklingsmiljön (InstallShield 5.1 Professional Edition, International West Version)... 16 4.1 International West Version... 16 4.2 Inbyggda hjälpmedel - Wizards... 16 4.2.1 Project Wizard... 16 4.2.2 Mediabuild Wizard... 17 4.2.3 Function Wizard... 17 4.2.4 Visual Basic Project Wizard... 17 4.3 De sju huvuddelarna i utvecklingsmiljön... 18 4.3.1 Skript... 18 4.3.1.1 Språket...18 4.3.1.1.1 Färdigskrivna funktioner...18 4.3.1.1.2 Typer...18 4.3.1.1.3 Inkludering av andra filer...19 4.3.1.2 Debuggern...19 4.3.2 FileGroups... 19 4.3.3 Components... 19 4.3.4 Resources... 19 4.3.4.1 String table...19 4.3.4.2 Registry Entries...20 4.3.4.3 Shell Objects...20 4.3.5 SetupType... 20 4.3.6 Media... 20 4.3.7 SetupFiles... 20 4.4 Onlinehjälpen... 20 4.5 InstallShield Professional avslutning... 20 5 Windows Installer Service... 21 5.1 Historia och motivering till Windows Installer Service... 21 5.2 Administratörens upplevelse idag... 21 5.3 Att skapa ett installationsprogram idag... 22 5.4 Windows Installer Service Lösningen?!... 22 5.5 Arkitekturen... 23 5.6 OS Resident Install Service... 24 5.6.1 Transaktionsbaserat...24 5.6.2 Elevated priviliges... 24 5.7 Automatisk reparation... 25 5.8 Windows Installer Paket... 25-3-

5.9 Program, Komponenter, Resurser och Entry Points... 26 5.9.1 Program... 26 5.9.2 Komponent... 27 5.9.2.1 Referensräknare...27 5.9.2.2 GUID...27 5.9.2.3 Osynliga komponenter...27 5.9.2.4 Key Path...27 5.9.3 Entry Points... 28 5.9.4 Program och produkter... 28 5.10 Automatic Repair Så fungerar det... 29 5.11 Package Customisation... 30 5.12 Patching Support... 30 5.13 Management API... 31 5.14 Accessing Management API... 31 5.15 Just In Time Install (eller on-demand installation)... 31 5.16 Advertising... 32 5.17 Leveraged By Windows... 32 5.18 Windows 2000 Software Installation (advertising mha avtive directory)... 32 5.19 Problemet med nya filer och lösning... 33 5.20 Shell Support... 35 5.21 Att skapa Windows Installer packet... 35 5.22 Windows Installer Versioner... 35 5.23 Windows Installer avslutning... 35 6 InstallShield for Windows Installer...36 6.1 Wizards... 36 6.2 Dialogeditor... 36 6.3 SKU-Manager... 36 6.4 Övrig nya funktionalitet... 37 7 Slutord... 38 7.1 Arbetsförlopp... 38 7.2 Övergången till Windows Installer Service... 38 7.2.1 Antalet användare av Windows Installer tekniken... 39 7.3 Virusproblem... 39 7.4 Slutsats... 39 8 Referensdel... 40 8.1 Referenser... 40 8.1.1 Böcker:... 40 8.1.2 Artiklar:... 40 8.1.3 Hemsidor (några av dem):... 41 8.2 Bilagor... 41-4-

Figurförteckning Figur 3-1 Robot Install Assists filstruktur... 8 Figur 3-2 Genvägar i startmenyn... 9 Figur 3-3 Integrations-applikationen... 10 Figur 5-1 Beskrivning av arkitekturen hos Windows Installer Service... 23 Figur 5-2 Innehållet i en msi-fil... 25 Figur 5-3 Exempel på Produkt, Program (Features), Komponenter, Resurser och Entry Points... 26 Figur 5-4 Automatic Repair... 29 Figur 5-5 Package Customization... 30 Figur 5-6 "Open with", vanligt problem i Windows 95... 33 Figur 5-7 Lösningen på "Open with"-problemet... 34 Figur 6-1 När tänker du börja använda Windows Installer tekniken... 39 Bilageförteckning (antal sidor) Bilaga 1 Koden till Robot Install Assist... 15 Bilaga 2 Automatisering med hjälp av skript... 19 Bilaga 3 Manualer... 26 Bilaga 4 Specifikationen av examensarbetet... 1 Bilaga 5 CD-skiva med bland annat howto-manualen...xx -5-

1 Inledning ABB Robotics Products AB har under de senaste 25 åren varit världsledande på industrirobotar och mjukvaruprodukter till dessa. Mjukvaran som fram för allt består i styrsystem till de olika robotmodellerna (men även olika typer av simulatorer) uppgraderas betydligt oftare än själva robotarna. På grund av detta krävs att ABB Robotics på något sätt distribuerar nya versioner av den mjukvara som blivit föråldrad. Denna distribution har fram tills idag skett via disketter, men kommer i och med detta examensarbeta att i fortsättningen göras via CD, och kanske lite längre fram i tiden kommer detta göras via Internet. Denna rapport innehåller förutom information om implementationen även information om Microsofts nya, standardiserade, installationsteknik Windows Installer Service (MSI), och InstallShields verktyg för att skapa installationsdatabaser till denna teknik: InstallShield for Windows Installer (ISWI). Dessutom finns en del information och InstallShields gamla InstallShield Professional, med vars hjälp Robot Install Assist har skapats. Eftersom det idag inte finns några (eller i alla fall väldigt få) beskrivningar av Windows Installer Service på svenska har jag valt inte hitta på några egna översättningar då dessa skulle kunna skapa mer förvirring än förståelse. Istället använder jag mig av de korrekta engelska uttrycken. 1.1 Problembeskrivning Arbetet har varit indelad i två huvuddelar. Den första delen var att skapa ett installationsprogram för de ABB s nya robotstyrsystemen och den andra var att undersöka andra (framtida) installationsmöjligheter. 1.1.1 Installationsprogrammet (praktisk del, 10p) I denna del (implementationsdel) av examensarbetet var huvudmålet att skapa och anpassa en InstallShield-applikation för ABB Robotics nya robotstyrsystem. Till detta installationsprojekt skulle även någon form av användarbeskrivning skapas. Dessutom skulle jag undersök möjligheten att automatisera hela processen, med hjälp av något typ av skriptspråk. 1.1.2 Framtida installationsmöjligheter (teoretisk del, 10p) I den teoretiska delen skulle andra installationsmöjligheter undersökas. I denna del skulle vikten läggas på Windows 2000 s inbyggda installationsupport; Windows Installer Service. -6-

1.2 Metod I början av examensarbetet ägnade jag en hel del tid åt att leka med InstallShield Professional. Jag skapade till en början ett par grundläggande installationsprogram samtidigt som jag lärde mig att hantera utvecklings-miljön (se separat kapitel om Utvecklingsmiljön). Den mesta informationen hämtades till en början från InstallShields manualer och fram för allt deras hemsida. Jag fortsatte sedan med att utveckla de första installationsprogrammen för att skapa lite mer avancerade applikationer. Eftersom varken jag eller någon på ABB Robotics tidigare hade skapat ett installationsprogram så blev jag tvungen att skapa allt från grunden. Då ABB Robotics ville att man skulle känna igen sig från andra installationsprogram som skapats av stora företag så tittade jag bland annat på hur Microsoft, Adobe, Activision med flera hade löst liknande uppgifter. På grund av att ABB Robotics aldrig tidigare hade skapat ett installationsprogram av den här typen så fanns det ingen som kunde hjälpa mig då jag körde fast. De problem som uppstod var jag helt enkelt tvungen att lösa själv. Den implementation, Robot Install Assist, som jag sedan skapade byggde på det jag lärt mig under de första veckorna. Denna implementation har sedan växt kontinuerligt, då man från ABBs sida ständigt kommit med nya idéer om hur man kan förbättra installationsprogrammet. Att ha skapat ett installationsprogram av Robot Install Assists storlek är av, har varit till stor nytta under den teoretiska delen. Man hängde lättare med i begreppen och förstod snabbare de olika problemställningarna som beskrev i de artiklar jag läst i området. 2 Tidigare tillvägagångssätt vid installations En av anledningarna till att detta examensarbete över huvud taget blev av, beror på ABB Robotics något gammalmodiga installationsförfarandet. Nedan följer en kortare beskrivning av hur detta har gått till fram tills idag. Installationen var egentligen ingen installation! Styrsystemen till ABB s robotar laddades istället direkt från de distribuerade disketterna in i robotskåpet via diskettstationen. Idag är de flesta företag utrustade med någon form av internt nätverk och har då möjligheten att koppla samman sina robotar till detta nätverk. Fördelen med att ha roboten kopplad till nätverket är att man slipper ladda data (exempelvis styrsystemet) via diskettstationen, utan man kan istället ladda data direkt via nätverket från en lokal dator. Fram tills idag har det levererats nio disketter tillsammans med varje nyproducerad robot. Den första disketten var en så kallad keydisk som innehöll information om vad kunden hade rätt att installera. Denna keydisk fungerade som en spärr för all annan data på de övriga disketterna. De resterande åtta disketterna innehöll robotdata. Diskett nummer ett var alltså unik för varje installation, medan de övriga åtta alltid var identiska. Keydisken samt de andra åtta disketterna laddas direkt in i roboten, eller rättare sagt via diskettstationen i robotskåpet. Disketterna var alltså så kallade root-disketter som innehöll styrsystem som roboten kunde läsa direkt. Som sagt skickades alla dessa nio disketter ut tillsammans med varje nyproducerad robot och dessutom skickades det ut nio nya disketter varje gång ABB Robotics släppte en buggfix eller kom med en ny version av styrsystemet. Dessa extra utskick var självklart helt gratis för kunderna. -7-

3 Implementationen Robot Install Assist Den först delen av detta examensarbete var att skapa ett installationsprogram för ABB Robotics produkter. Målet var att skapa ett installationsprogram som liknade andra stora företags installationsprogram och som gjorde att kunderna kunde känna igen sig. Eftersom det inte fanns någon mall eller tidigare försök att skapa ett sådant installationsprogram har det inte bara varit min uppgift att skriva själva koden, utan även att ta reda på hur ett installationsprogram skall byggas upp. Jag har under tiden examensarbetet har pågått, skapat en hel del exempel på olika installationsprogram och utifrån dessa exempel har sedan ABB Robotics bestämt hur Robot Install Assist skall se ut. Robot Install Assist är namnet på det installationsprogrammet jag sedan skapade. 3.1 Krav på Robot Install Assist Eftersom det inte fanns någon mall så var kraven till en början ganska små, men dessa har sedan växt under projektets gång då man sett vad som är möjligt att skapa med hjälp av InstallShield Professional. Ett av kraven var i alla fall att kunden skulle känna igen sig i installationsprogrammet, nedan följer en del andra krav varav vissa fanns med från början och där andra kommit till senare. 3.1.1 Hierarkiska uppbyggd Ett av de ursprungliga kraven var att installationen skulle vara uppbyggd med hjälp av en hierarki av komponenter. Det skulle alltså finnas en mängd huvudkomponenter och till vissa av dessa skulle man sedan kunna koppla en eller flera subkomponenter. Ett exempel på detta är Controll OS Packages som är en huvudkomponent som i sin tur innehåller en mängd olika styrsystem till roboten, exempelvis 3HAXaaaa-1.00., 3HAXbbbb-2.42 med flera. 3.1.2 Organiserad filstruktur På samma sätt som Robot Install Assist är uppdelade i olika lager av komponenter så skall även filstrukturen på måldatorn vara organiserad på ett korrekt sätt. Installationsprogrammet skall kunna ta reda på sökvägen till defaultprogramkatalogen * och kunna föreslå denna som lämplig plats för installationen. Under denna katalog skall Robot Install Assist skapa en huvudkatalog innehållande en underkatalog för varje installerad komponent. Figur 3-1 Robot Install Assists filstruktur * C:\Program, C:\Program Files, C:\Apps eller dylikt. -8-

3.1.3 Möjlighet till flera språk Eftersom ABB Robotics har kunder över hela världen var ett av kraven att installationen skulle kunna hantera en rad olika språk. Installationsprogrammet skall automatisk välja rätt språk. Med rätt menas att installationen skall anpassa sitt språk till den Windowsversion som finns installerad på måldatorn och om detta misslyckas skall engelska väljas som standardspråk. Språken som skall kunna hanteras är svenska, engelska, tyska, spanska och franska. Dialogboxarna till dessa språk finns inkluderade i InstallShield Professional, men alla Robot Install Assist -specifika meddelande måste översättas för hand, dock överlåts detta till ABB Robotics på grund av vissa brister hos mig i en del av språken ovan. Förutom att själva installationen skall kunna presenteras i olika språk så skall även olika filer kopieras till måldatorn beroende på vilket språk som används. 3.1.4 Avinstallation Man skulle även kunna avinstallera alla komponenter utan att det lämnades filer eller registerskrivningar kvar på måldatorn. Denna avinstallation skall kunna göras dels via Add/Remove Program i kontrollpanelen eller via en genväg som skapats i startmenyn. 3.1.5 Genvägar Installationsprogrammet skall även skapa genvägar i startmenyn. Varje fristående komponent skall ha en egen genväg under en gemensam katalog. Genvägarna skall endast skapas om kunden valt att installera just den komponenten. Dessutom skall det alltid skapas en genväg till en readme-fil plus en genväg för avinstallationen. Figur 3-1 Genvägar i startmenyn 3.1.6 Registerkommunikation För att installationsprogrammet skall kunna kommunicera med de installerade produkterna används registret som brevlåda. I registret skall installationsprogrammet skriva information om vilka huvudkomponenter och subkomponenter som installerat samt sökvägen till dessa. -9-

3.1.7 Automatisering med hjälp av skript Jag hade även till uppgift att undersöka om det fanns någon möjlighet att skapa en ny CD-image innehållande installationsprogrammet med hjälp av något skript. Detta för att kunna automatisera hela processen från kompilering och bygge till skapande av den slutliga CD-skivan. InstallShield hade redan viss support för kunna automatisera processen. Först och främst bifogas två program som går att köra direkt från kommandoraden. Dessa två program är Compile och ISBuild Som namnet antyder används Compile för att kunna kompilera InstallShield-koden och ISBuild används för att bygga det slutliga installationsprogrammet. För att ISBuild skall kunna veta vilka filergrupper, komponenter och så vidare som skall tas med i en installation så använder sig InstallShield Professional av en massa projektfiler som innehåller just denna information. Projektfilerna är rena textfiler och kan lätt läsas och skrivas av andra program/skript, men på grunda av att de är så många blir komplexiteten relativt hög även för väldigt små installationsprogram. Som en bilaga till denna rapport finns ett dokument ( Automatisering med hjälp av skript ) som behandlar ovanstående ämne betydligt mer ingående Nedan visas en bild på hur min implementation (redan) är integrerad i resten ABB Robotics utvecklingsverktyg. Man kan alltså bygga en releas-cd bara genom att fylla i dialogboxen Build CD. Figur 3-1 Integrations-applikationen -10-

3.2 Fördelar jämfört med tidigare installationsförfarande Det finns en hel del fördelar med det nya tillvägagångssättet av installationen. Nedan följer en lista med några av dom fördelarna ABB Robotics kommer att få i och med att dom börjar använda Robot Install Assist Disketter började redan för ett par år sedan att bli ett relativt föråldrat datamedia. Robot Install Assist kommer att distribueras på en CD-skiva, vilket är ett betydligt säkrare * datamedia. Storleken på disketten är endast 1.4 Mb, medan en CD-skiva rymmer 650 Mb. Tidigare har ABB Robotics varit tvingade att snåla på utrymmet på de 9 disketterna som distribuerades till kunderna, men i framtiden kommer det att finnas gått om plats för inte bara styrsystemet till roboten utan även andra applikationer. Detta kommer att utnyttjas redan från den första versionen av styrsystem som släpps tillsammans med Robot Install Assist. På denna CD-skiva kommer det att utöver de traditionella styrsystemen att ingå en rad olika PC-applikationer, bland annat TestSignal och Virtual Controller. I framtiden kommer det med största sannolikhet att finnas ytterligare ett par program som följer med på CD-skivan. Övergången från ett flertal disketter till en CD-skiva kommer att leda till en kostnadsvinst eftersom det kostar mindre att producera och trycka en CD-skiva i jämförelse mot nio stycken (eller flera) disketter. Eftersom ABB Robotics valt att använda InstallShield Professional för att skapa installationsprogram kommer kunderna att känna igen sig i installationsmiljön. Installationsprogrammet kommer numera att finnas tillgänglig på fem olika språk på samma CD, vilket ytterligare underlättar för kunden. ABB Robotics har nu möjligheten att göra reklam för andra mjukvaruprodukter eller kommande robotmodeller under tiden kunden väntar på att filerna skall kopieras från CD-skivan till måldatorn. * Med säkrare menar jag att CD-skivor har en betydligt lägre felfrekvens än disketter. Dialogboxar, menyer och tillvägagångssättet är liknande i alla installationsprogram som är skapade med hjälp av InstallShield. -11-

3.3 Funktionsbeskrivning Nedan följer en beskrivning av programflödet under installationen. Eftersom programflödet i ett installationsprogram är relativt rakt (få iterationer och hopp) så har jag valt att beskriva funktionerna i den ordningen de exekveras. Dock kan vissa återhopp ske om användaren väljer att gå tillbaka till en tidigare meny under installationen. Dessutom visas vilken funktion som anropar vilken/vilka med hjälp av indentering (se även fig. 3.1, anropshierarki för Robot Install Assist). - CheckRequirements Som namnet antyder så har denna funktion till uppgift att kontrollera att måldatorn klarar av att hantera installationsprogrammet men fram för allt de installerade programmen. Exempel på saker som kontrolleras är skärmens möjlighet att visa vga-grafik (640x480 eller högre) samt att systemet kör NT - SetupInstall När man vet att systemet kommer att klara av att köra installationen och det slutliga programmet så är det dags att ta reda på vilket språk som körs på måldatorn, detta eftersom installationsprogrammet klarar av att köra installationen på fem olika språk: svenska, engelska, tyska, franska och spanska. Målet är att installationen skall presentras med hjälp av samma språk som språket på den aktuella datorns Windowsversion. Om språket på Windowsversionen är exempelvis svenska så kommer alla menyer och dialogboxar att presenteras på svenska. Om däremot språket på Windowsversionen inte finns med bland de fem språken så kommer defaultspråket (engelska) att användas. Dessutom sätts värdet på en del variabler som kommer att användas under installationen. Exempel på en sådan variabel är svdir, som är en variabel som innehåller katalogen där programmet skall installeras. Denna variabel liksom många andra sätt i början till något defaultvärde, i detta fall PROGRAMFILES\ABB Robotics AB\Robot Install Assist Där PROGRAMFILES är en pekare till den aktuella datorns programkatalog (exempelvis c:\program, d:\program files eller c:\app) - SetupSceeen Detta är en funktion som sköter inställningarna till skärmen. Bland annat så sätts bakgrundsfärgen, överskriften, fönsternamnet, bilden uppe till höger presenteras samt lite till. - ShowDialogs Denna funktion har uppgifter att sköta presentationen av de olika dialogrutorna, samt knapparna i dessa: exit, next, previous, cancel, ok och så vidare. - InstalledBefore InstalledBefor är en funktion vars uppgift är att te reda på om Robot Install Assist sedan tidigare finns installerat på den aktuella måldatorn. Detta görs genom att läsa upp data ur registret. Om det visar sig att Robot Install Assist fanns installerat så kopieras den gamla sökvägen till programmet in i en speciell variabel, så att man sedan kan fylla i standardsökvägen med den i funktionen DialogShowSdAskDestPath. - DeselectWrongLanguageFiles Som namnet antyder så går denna funktion igenom komponenter en och en och stryker de som inte är av samma språk som Windowsversionen. -12-

- DialogShowSdWelcome Denna funktion visar en dialogruta med ett standardiserat välkomstmeddelande, som bland annat talar om för användaren vilken produkt som skall installeras. - DialogShowSdLicense Denna funktion visar en dialogruta med ABB Robotics och Robot Install Assists licensavtal. Texten som visas finns i filen licens.txt, filen ligger i sin tur under SetupFiles (Operating System Independent). - DialogShowSdAskDestPath Frågar vart användaren vill placera produkten. Om man installerat produkten tidigare så kommer programmet att föreslå samma katalog som användaren valde förra gången. Vill man ändra katalog så får man fram Windows standard browse rutan. Det kontrolleras även att användaren inte försöker installera i någon root-katalog. Med root menas i detta fall C:\ och C:\winnt eller liknande (informationen om root-katalogen hämtas ur registret). Om användaren försöker placera produkten i en root-katalog så dyker samma dialogbox upp igen (till dess att man angivit en korrekt sökväg). Självklart får användaren veta vad för fel han eller hon har gjort innan den nya dialogboxen dyker upp igen. - DialogShowSdSetupType I den dialogbox som visas med hjälp av denna funktion får användaren chansen att välja mellan tre olika installationstyper; typical compact eller custom. Väljer användaren typical så kommer Robot Install Assist plus alla kontroll OS paketen att installeras. Väljer användaren compact kommer endast kontroll OS paketen att installeras. Om användaren däremot väljer custom så kan han eller hon välja fritt mellan alla olika komponenter som distribueras med den aktuella CDn. Dessa val görs i funktionen DialogShowSdComponentDialog2. - DialogShowSdComponentDialog2 - DeselectInstalledItems Denna funktion har till uppgift att i förhand kryssa i och kryssa ur checkboxarna som presenteras i samband med varje huvudkomponent. Om en checkbox skall vara i kryssade eller inte, baseras på om huvudkomponenten redan finns installerad på måldatorn och om versionsnummret är nyare (högre) på de nya huvudkomponenterna. Dessutom kontrolleras listan med Controller OS Packages för att kryssa i och kryssa ur dessa. All information angående om en huvudkomponent eller Controll OS Package redan är installerat finns i registret, detta beskrivs mer ingående under rubriken SetupRegistry då denna information skrivs till registret. Användaren får i funktionen DialogShowSdComponentDialog2 chansen att välja vilka huvudkomponenter som skall installeras. Detta görs genom att ändra på värdet i de dialogboxar som fördefinierats i funktionen DeselectInstalledItems. Vissa huvudkomponenter kan innehålla subkomponenter som även dessa kan påverkas av användaren. Ett exempel på en sådan komponent är Controll OS Package som innehåller flera olika styrsystem. -13-

- DialogShowSdStartCopy När användaren sedan (från förra menyn) tryckt next så skapas en lista (med hjälp av funktionen GetSelectedItemsAndCreateList) med de huvudkomponenter och subkomponenter som är valda och presenteras för användaren. Nu kan användaren antingen välja att avbryta installationen, ändra sina inställningar, eller att påbörja kopieringen av filerna. - CheckInternetExplorerVersion Eftersom Robot Install Assisten kräver att användaren har Internet Explorer - version 4.0, (eller nyare) installerat, så körs denna funktion som går in i registret och hämtar information om Internet Explorer. Först och främst kontrolleras om programmet över huvud taget finns och om det finns så hämtas versionsnummret som sedan kontrolleras att det är större eller lika med 4.0. Om användaren har Internet Explorer installerat kommer han/hon inte märka denna funktion, om användaren däremot inte har Internet Explorer installerat så kommer personen i fråga att få en varning som påpekar att de måste installera den innan man kan starta Boot Assistant. - ProcessBeforeDataMove Denna funktion skapar uninstall-logfilen, samt sätter diverse variabler som behövs under själva kopieringen av filerna. - MoveFileData Funktionen kopierar filerna till destinationskatalogen och visar samtidigt med hjälp av en mätare hur många procent av kopieringen som är avklarad. Dessutom så visas vilka komponenter som för närvarande kopieras. Denna funktion är också förberedd för att visa nya bilder eller någon form av bildspel (film) under tiden filerna kopieras. Om det blir någon film eller några nya bilder beror helt på ABB Robotics marknadsavdelningen. - ProcessAfterDataMove Denna funktion har till uppgift att kontrollera att ingen annan använder uninstall-logfilen så att man kan skriva nödvändig information i denna. - SetupRegistry Detta är en funktion vars uppgift är att uppdatera registret. I registret skall det nämligen finnas information om vilka komponenter och Controll OS Packages som finns installerade. Den information som finns lagrad i registret är versionsnummer till komponenterna samt sökväg till både komponenter och Controll OS Packages. För att skapa listan med valda Controll OS Packages används hjälpfunktionen GetSelectedControllers. - SetupFolders Denna funktion skapar mappar och ikoner i startmenyn, funktionen visar även meddelande om att detta görs. - CleanUpInstall Funktionen CleanUpInstall tar bort cashad information plus katalogen som temporärt skapats i temp-katalogen (_istmp0.dir) -14-

Nedan följer ett anropsträd för Robot Install Assist. Trädet läses uppifrån och ned och från vänster till höger (dock finns vissa undantag då återhopp kan ske, om användaren tillexempel väljer att gå tillbaka till en tidigare meny under installationen). Figur 3-3 Anropshierarki för Robot Install Assist -15-

4 Utvecklingsmiljön (InstallShield 5.1 Professional Edition, International West Version) Jag har under exjobbstiden arbetat med InstallShield 5.1 Professional Edition International West Version (build 146) för att utveckla Robot Install Assist. När jag i fortsättningen skriver InstallShield så refererar jag till ovanstående version (om inget annat anges), trots att det numera finns både InstallShield 5.5 och InstallShield 6.0. 4.1 International West Version International innebär att man med hjälp av denna version av InstallShield kan skapa installationer som innehåller flera olika språk. West Version innebär i sin tur att denna version av InstallShield supportar väst-världens språk, eller rättare sagt de 19 vanligaste europeiska språken plus den kanadensiska versionen av franska samt den brasilianska versionen av portugisiska. Att InstallShield supportar 21 språk innebär egentligen bara att de 10 mest standardiserade dialogboxarna samt de vanligaste felutskrifterna redan finns översatta till de olika språken. Skall man sedan göra något utöver de absolut vanligaste så får man stå för översättningen själv. Denna version av InstallShield klarar även av att bygga installationsprogram för alla aktuella Windowsplattformar, Windows 3.x, Windows 95/98, NT 3.5 och NT 4.0. Installationsprogram skapade för Windows NT 4.0 kan man även köra på en dator som har Windows 2000 som operativsystem, men installationsprogrammet kommer då inte att utnyttja den nya Windows Installer tekniken. För detta krävas att installationsprogrammet är skapat i InstallShield for Windows Installer som kommer att beskrivas senare i denna rapport. 4.2 Inbyggda hjälpmedel - Wizards InstallShield innehåller 4 stycken olika wizards, som alla guidar användaren genom de olika stegen till ett fullständigt installationsprogram. Tanken med dessa wizards är mycket bra då de hjälper en ovan användare igenom de viktiga och ibland lite krångliga stegen i skapandet av ett installationsprogram. Nedan kommer en kortfattad beskrivning av de 4 olika wizards som finns med i InstallShiled. 4.2.1 Project Wizard Denna wizard är antagligen den mest användbara och används kanske inte helt oväntat till att skapa nya projekt med. Användaren leds på ett snabbt och enkelt sätt via åtta olika dialogboxar fram till ett nyskapat projekt. I varje dialogbox får användaren svara på en del frågor om det nya projektet. Exempel på vad som frågas efter är förutom en del grundläggande information *, vilka av de 10 färdiggjorda dialogboxarna som man vill använda, vilket/vilka språk och operativsystem är installationsprogrammet avsett för samt vilka installationstyper man vill stödja. Dessutom så får man ange vilka filgrupper och komponenter man vill att installationen skall innehålla. När man gjort detta genereras ett grundläggande skript automatisk, utifrån vilket man sedan kan arbeta vidare. Dessutom skapas de filgrupper och komponenter som man angivit, det ända som egentligen saknas innan man har ett färdigt installationsprogram är kopplingen mellan filgrupperna och komponenterna samt vilka filer som skall ingå i de olika filgrupperna. * Namn på produkten, typ av produkt, företagets namn, versionsnummer på produkten mm. Compact, typical, custom, network, administrator osv. -16-

4.2.2 Mediabuild Wizard Denna wizard används för att bygga samman komponenter, filgrupper, skript, registerskrivningar, genvägar osv till ett enda installationsprogram. Man har i denna wizard möjligheten att göra vissa inställningar vad det gäller det slutliga installationsprogrammet. Exempel på dessa inställningar är till vilket media * man vill bygga installationsprogrammet för, om man vill packa produkterna i.cab-filer eller om man vill behålla produkterna opackade plus en rad andra inställningar. En liten nackdel är att man måste köra denna wizard varje gång man gjort förändringar i sitt projekt. Vilket innebär att man måste passera de 5 dialogboxarna i Media Build Wizard varje gång man vill testköra sitt installationsprogram. 4.2.3 Function Wizard Denna wizard hjälper användaren, vilket namnet antyder, att lägga till anrop till fördefinierade InstallShield-funktioner. Man får helt enkelt hjälp att hitta den funktionen man söker efter samt möjligheten till hjälp när man skall fylla i argumenten till denna funktion. Personligen tyckte jag att det var lättare att använda manualerna när jag var osäker på vad funktionerna hette eller vad de tog för argument, men det är som sagt en smaksak. 4.2.4 Visual Basic Project Wizard Eftersom produkterna som skall installeras med hjälp av Robot Install Assist inte var skapade i Visual Basic så använde jag inte heller denna wizard. Meningen är i alla fall att man skall kunna flytta över ett helt Visual Basic projekt, med filberoenden, komponenter osv till ett InstallShieldprojekt utan att behöva lägga ner så mycket tid på detta. * 3.5 Diskett, 5.25 Diskett, CD-ROM, eller egen storlek. Förutom i skriptet som hanteras av en separat kompilator. InstallShield Language Reference plus online-manualen. -17-

4.3 De sju huvuddelarna i utvecklingsmiljön Utvecklingsmiljön i InstallShield Professional är uppdelad i sju stycken fönster, varifrån man kan utföra olika typer av operationer. De sju huvudmenyerna är Scripts, FileGroups, Components, Resources, SetupType, Media och SetupFiles. Nedan följer en kortare beskrivning av dessa. 4.3.1 Skript I denna del av utvecklingsmiljön så kan man bara göra en sak och det är att hantera de olika skripten som ingår i det aktuella installationsprojektet. I hanteringen ingår självklart editering, kompilering och exekvering av skripten, men även en debugger. Både språket och debuggern kommer att behandlas separat nedan. Skriptet presenteras med syntax-highlighting vilket gör koden väldigt tydlig, då man lätt ser skillnaden på kommentarer, konstanter, variabler, funktionsanrop till fördefinierad funktioner och anrop till egna funktioner. Däremot har InstallShield misslyckats med sökfunktionen då editorn blir helt låst * under tiden man söker 4.3.1.1 Språket Skriptspråket i är ett Pascalliknande programmeringsspråk som innehåller de flesta standardkommandon som ett iterativa programmeringsspråk bör innehålla. Exempel på dessa standardkommandon är if-then-else-endif, while-endwhile, repeat-until, for-endfor och goto. Dessutom innehåller språket en rad kommandon som opererar på listor, ungefär som en primitiv variant av klassen list() i Java. Utöver dessa standardkommandon eller primitiver så innehåller språket väldigt många färdigskrivna funktioner för att underlätta bland annat fönsterhantering, registerskrivningar, filhantering mm. 4.3.1.1.1 Färdigskrivna funktioner Koden blir relativt lättläst för en person som har någon erfarenhet av programmering, oavsett om det rör sig om Pascal, C, Java eller något annat språk. Detta eftersom namnen på de färdigskrivna funktionerna beskriver innehållet väldigt bra, däremot blir det ganska svårt att komma ihåg funktionsnamnen då de i regel är väldigt långa (inte ovanligt med funktionsnamn som innehåller mellan 20 och 30 bokstäver). Exempel på sådana välbeskrivande men långa funktionsnamn är, VersionSearchAndUpdateFile, DialogShowsSdAskDestPath och ComponentCompareSizeRequired. Till denna rapport kommer att bifogas en bilaga som innehållande koden till Robot Install Assist där man kan se hur koden ser ut. 4.3.1.1.2 Typer Typerna som kan användas i detta skriptspråk liknar även de typerna i Pascal. De olika typer som finns är Number, Bool, List, String, Char, Long, Pointer och Hwnd (WindowHandler). De variabelnamn som förekommer i den genererade (eller importerade) koden skrivs med Ungersk notation för att underlätta läsningen av koden. * Det går inte att skrolla koden uppåt eller nedåt bakom sökfönstret. Ungersk notation innebär att man har ett prefix på varje variabel som beskriver typen på variabeln. Exempel: svdir (StringVariable), ntemp (Number) osv -18-

4.3.1.1.3 Inkludering av andra filer På samma sätt som i andra iterativa språk finns möjligheten att inkludera filer. Man kan inkludera header-filer (xyz.h) innehållande funktionsdefinitioner mm (precis som en h-fil i exempelvis C), man kan även inkludera andra skriptfiler (men filtypen.rul). Dessutom finns även en möjlighet att inkludera dll er innehållande egendefinierade dialogboxar. Dessa dll er kan vara skapade i exempelvis Microsoft Visual Studio eller något liknande program. 4.3.1.2 Debuggern I InstallShields utvecklingsmiljö ingår även en debugger. Debuggern är uppdelad i två delar, ett kontrollfönster och kodfönster. I kontrollfönstret har man möjligheten att skapa brytpunkter samt titta på innehållet i olika variabler. Dessutom kan man härifrån stega sig framåt i koden som samtidigt syns i kodfönstret. Jag har inte direkt några egna åsikter om debuggern då jag själv föredrar att använda mig av spårutskrifter * för att leta efter fel. 4.3.2 FileGroups Under denna meny så skapas de verkliga länkarna till de filer man vill inkludera i sitt installationsprojekt. Dessa filer läggs samman i så kallade filgrupper. För varje filgrupp kan man sedan göra en hel del inställningar, såsom om filerna i gruppen skall packas, om dom är språkberoende, om dom är operativsystemberoende med mera. 4.3.3 Components En eller flera filgrupper kan sedan skapa en komponent. Varje komponent har även den en rad inställningar som kan göras under fliken Components. Inställningar som kan vara av intresse för en hel komponent är till exempel: destinationskatalog, om komponenten kräver några andra komponenter, om den skall lösenordsskyddad eller dylikt. 4.3.4 Resources Under denna meny kan man hantera ytterligare tre delar av projektet, dessa är String table, Registry entries och Shell objects, som alla beskrivs nedan. 4.3.4.1 String table Varje språk som stödjs i ett installationsprojekt har en egen strängtabell och alla dessa tabeller samlas under denna meny. Så fort man skapar en konstant sträng så skapas denna sträng i en kopia för varje språk som finns inkluderat i det aktuella installationsprojektet. Sedan får man fylla i värdet på strängen för varje språk. När sedan installationen körs så plockas rätt sträng från rätt strängtabell in i installationen. * Spårutskrifter i InstallShield Professional måste göras genom att skriva texten i någon dialogbox. -19-