Kernen falder aldrig langt fra applikationen

På både Klassisk Dynamics C5 og på Dynamics NAV/C5 er det mulig at lave en såkaldt teknisk opgradering. Det er faktisk meget udbredt på Dynamics NAV/C5, men rimeligt overset på Klassisk Dynamics C5.

 

Forskellen på en traditionel, komplet opgradering og en teknisk opgradering er at kun selve kernen/platformen opgraderes (de eksekverbare filer og deres støttefiler), mens selve applikationen og databasedefinitionen mv. ikke opdateres til nyeste udgave. Dermed slipper man af med evt. problemer/bugs der måtte være i kernen, men får naturligvis ikke rettet fejl/bugs i applikationen – ligesom man ikke får adgang til forbedringer og nye funktioner i applikationen. Men man får fuld adgang til alle kernes forbedringer – herunder performanceforbedringer og support af nye Windows- og evt. SQL-udgaver.

 

Som sagt er det meget udbredt på Dynamics NAV/C5, så den vil jeg ikke bruge tid på her. Historien på Klassisk Dynamics C5 er dog en anden. Her er det ofte overset – og det på trods af at Microsoft faktisk har gjort sig umage for at det ikke giver (alt for store) problemer. Og da det jo faktisk giver mulighed for at “opgradere” meget gamle Klassisk C5’ere så de kan køre på moderne 64 bits operativsystemer – også selvom de har utallige applikationstilpasninger, så er det faktisk lidt en skam at det ikke bruges mere end det gør.

 

Det skal naturligvis understreges at det er helt på egen regning og risiko det her! Kombinationen af netop din applikation, netop dine data og netop den kerne du ønsker at opgradere til er hverken testet af Microsoft, os eller andre. Så du er helt på egen hånd hvis det ikke virker – men det gør det altså som regel – eller kan i hvert fald bringes til at virke :-). Men gør lige dig selv den tjeneste at teste det grundigt i et testsystem inden du sætter det i drift.

 

Lad os lige starte med at slå fast hvad kernen i C5 består af – minimalt er der på native tale om filerne c5w32.exe, c5w32c.exe, c5txtdat.dk, c5txtdat.is og c5txtdat.uk. På SQL skal c5w32.exe og c5w32c.exe lige erstattes af d5w32.exe og d5w32c.exe.

Derudover KAN det også være du har brug for nye ODBC-drivere til din Native C5 database – de skal jo så også lige kopieres fra den nye pakke – klik evt. her for at få hint til hvordan du installerer dem!

 

Det grundlæggende trick til en kerneopgradering er at bruge den halvvejs udokumenterede -Qnnn/-QXnnn parameter til Klassisk C5 kernen. Den justerer nemlig kernens opførsel en smule, så den passer til din applikation i det omfang det er nødvendigt. Den kan på 2012 kernen have følgende værdier:

  • -Q170: Concorde C5 1.70 og Concorde C5 1.80
  • -Q200: Damgaard C5 2.0 og Navision C5 2.1
  • -Q300: Microsoft Navision C5 3.0 og Microsoft Business Solutions C5 3.0 SP3
  • -Q400: Microsoft C5 4.x
  • -Q420: Microsoft Dynamics C5 2008 (intern version 4.2)
  • -Q430: Microsoft Dynamics C5 2010 (intern version 4.3)
  • -Q440: Microsoft Dynamics C5 2012 (intern version 4.4 – default på C5 2012 kernerne)

-Q parameteren findes også i en -QX-variant. X’et styrer bl.a. om tabeltriggere kører i DBD eller TRG (Fx -QX170). Q-parameteren er arvet fra Concorde XAL og er beskrevet i kernenyhedsbrevet til XAL 2.80.

Parameteren kan selvfølgelig sættes i C5.ini, ligesom alle andre parametre. Bemærk dog at en evt. C5 ODBC driver IKKE læser C5.ini, så parameteren skal også sættes i dens “Additional Directories” som beskrevet i dens hjælp.

Nu er det jo ikke “bare” at kopiere de nye kerner ind, sætte den korrekte Q-parameter, genoversætte applikationen og så tro at alting virker. Der er lige nogle ting man skal have styr på:

Du skal naturligvis have et aktivt abonnement på din Klassiske Dynamics C5’er. Det er nemlig en forudsætning for at du i det hele taget må bruge de nye kerner og låne applikationskode fra de nye C5ere. -Q parameteren medfører at du kan køre på dine gamle licenskoder, men husk at du skal indlæse dem i den nye kerne. Og det er muligt at du ikke “bare” kan indlæse den gamle licens på samme måde som du plejer – for slize-metoden blev ændret ifm. C5 2008 (mere om det nedenfor).

Bemærk at det kan være et problem at skifte licenskoden til kernerne hvis du har 3. parts moduler, som selv har licenskoder der baserer sig på C5 kernens licenskode. Her må du have fat på den 3. part der producerer modulet for at få nye koder!

Dernæst SKAL du pløje SAMTLIGE kernenyhedsbreve igennem fra den gamle kerneversion og til og med den kerneversion du ønsker at køre med. Du skal have styr på de ændringer der er sket – og hvad de betyder for din applikation. Der kan være tilpasninger eller 3. parts moduler der ikke længere kan oversættes – ligesom der kan være brugt kernekald (SYSINFO-kald) der ikke længere supporteres!

Du skal især have fokus på:

  • Den nye slize-metode er beskrevet i kernenyhedsbrevet til C5 2008 kernen.
    Det er lidt vigtigt at de nye kerner IKKE slizes med slize.exe-/C5Koder.exe-programmerne, idet det ødelægger deres digitale kode-signatur og Windows derfor vil advare om at der er pillet ved dem. Slize-koderne gemmes ikke længere i exe-filerne
    Husk også at du kan afvikle din slize-XAL-kørsel med -a parameteren til C5-kernen, men at den skal afvikles som Supervisor (brug evt. også -uSupervisor parameteren)
  • Windows authentication: Fra og med version 4.0 benyttes windows’ brugernavn til C5 (så man ikke også skal logge ind i C5 længere). Læs derfor “Factsheet om Sikkerhed.PDF” og kernenyhedsbrevet fra C5 4.0.
  • Evt. kald til de krypteringskald, der er fjernet fra kernen fordi de alligevel ikke var ret sikre
  • VBX er ikke længere supporteret – så du skal justere din applikation hvis den bruger det. VBX har tidligere været brugt som billedfremviser og til grafer mv.
  • Da der er tale om en halvvejs usupporteret parameter, skal du ikke forvente at der har været en helt stringent styring af ny kernefunktionalitet med -Q-parameteren. Så lad være med at brokke dig hvis noget ikke er helt 100% logisk 🙂

Men læse nu bare alle nyhedsbrevene – det kan jo også være at de nye C5’ere kan noget, der VIRKELIG kan score points hos din kunde/dine brugere uden ret meget arbejde for dig (CTRL+J – Udskrift til Excel er efter min mening en god kandidat til det – og det er blot noget applikationskode du skal hente fra de nye C5’ere 🙂 ).

Du skal være forberedt på at du – ud over at gen-oversætte hele applikationen, skal justere hist og her for at få det til at fungere, så det er faktisk et must at have licenskode til basis udvikling og rigeligt med ledige formstilpasninger. Du får brug for dem.
Og savner du inspiration til hvordan en given opgave løses i den gamle applikation – jamen så kigger du da bare i den nye – så meget er der altså heller ikke ændret 🙂

Vi ved at andre tidligere med succes har været igennem dette arbejde med applikationen – og har allerede en zip-fil med de nødvendige elementer for at en 2.10 applikation tilsyneladende fungerer på en 2012 kerne…

C5210på2012

Klik for at åbne billedet i fuld størrelse: C5 2.1 applikation på C5 2012 kerne – bemærk hovedmenu som navigationsmenu og versionsnummeret i titellinjen, samt manglende “Oversigts”-fane i debitorkartoteket.

Vi kan dog desværre ikke blot lade dig downloade pakken herfra, idet vi jo ikke kan verificere, at du har det nødvendige opdateringsabonnement til din C5.
Er du interesseret i at få pakken, så send Gert Lynge en e-mail på gsl@systemconnect.dk så vi kan få verficeret dit abonnement.

Husk: Vi vil som sagt aldrig kunne påtage os et komplet ansvar for 100% korrekt funktion – det er dit ansvar hvis du vælger denne løsning. Det sker med andre ord HELT for din egen regning og risiko!

 

10.09.2015 Tilføjelse inspireret af henvendelse fra Peter Stenstrup de Heus fra www.gits.dk.
Det der KAN drille meget er at Klassisk Dynamics C5 fra og med version 2008 ikke længere skal have serienummer slized ind i exe-filer og odbc-dll-filer. Disse serienumre lagres i stedet i C5Direct.C5S og i den forbindelse er der introduceret nye SYSINFO-kald til at sætte og læse dem. Det er omtalt i kernenyhedsbrevet til kerne version 4.2.0.256 sammen med følgende XAL-kodestump der skulle være selvforklarende:

//Serial Number: "12345678" 
//Kernel execution code: "abcdefg" 
//ODBC execution code: "gfedcba" 

//SysInfo(1009,"12345678abcdefg") Slizes the kernel code into the C5 application and returns old kernel code if successful, otherwise '' (empty string) is returned. 
//SysInfo(1000,'') Returns the kernel code. 
//SysInfo(1021,"12345678gfedcba") Slizes the ODBC code into the C5 application and returns old ODBC code if successful, otherwise ''(empty string) is returned. 
//Sysinfo(1020,'') Returns the ODBC code. 

PRINT "Old SerialNo: " + SysInfo(1009,"12345678abcdefg") 
PRINT "New SerialNo: " + SysInfo(1000,'') 

PRINT "Old ODBCSerialNo: " + SysInfo(1021,"12345678gfedcba") 
PRINT "New ODBCSerialNo: " + SysInfo(1020,'')
PAUSE