Eddig elég sok negatív dolgot írtam az intézeti rendszergazdákról. Álmomban sem gondoltam volna, hogy egyszer egyikük megoldja egy problémámat. Pedig most pontosan ez történt!
Elkészültem a programmal, aminek az lenne a szerepe, hogy koherenciát csempésszen abba a kaotikus világba, amit úgy hívnak pályázati adminisztráció. A program egy lokális adatbázist használ, aminek az a feladata, hogy megkönnyítse az életemet, de ezt valami Microsoftos mellékízzel teszi.
A fejlesztői gépen egy Visual Studio 2015 volt, adatbázis kezelőnek pedig egy SQL Server 2012. A program elkészülte után megpróbáltam a Publish menüponttal egy telepítőbe tuszkolni mindent, de elsőre nem sikerült. Mint megtudtam, alapértelmezetten nem rak bele minden szükséges komponenst a telepítőbe. Miután kiválogattam, hogy a PDB fájlokat, DLL-eket is tegye mellé, akkor már használható lett az eredmény.
Gondoltam kipróbálom a telepítőt a feleségem gépén is, mert azon nincs fent a több giga Visual Studio, közelebb áll az adminisztrátor konfigurációjához, aki majd használni fogja a programot. Ekkor szembesültem vele, hogy a futtatáshoz kell egy .Net Framework, és egy SQL Server LocalDB.
Szerencsére be lehet állítani, hogy milyen függőségei vannak a programomnak, és azokat a telepítő próbálja meg letölteni. A .Nettel még nem is volt probléma, de a LocalDB nem akart települni. Illetve települt, de utána hibaüzenetet adott, a kész program meg kivételeket dobott, hogy a szervert nem találja.
A Stackoverflow szerint a baj az volt, hogy a letölteni kívánt függőség megváltozott ahhoz a verzióhoz képest, amivel fejlesztettem. Ezt én nem értettem. Hogyan tudna megváltozni egy több, mint nyolc éves program?
Közben a programot egyre inkább használni akarták, én meg kapcsolatba kerültem egy fertőzött emberrel, amitől az intézet vezetősége kitiltott. Kénytelen voltam a telepítést az intézet rendszergazdáira, azon belül is Pan-ra bízni. Mondanom sem kell, ő sem jutott közelebb a megoldáshoz.
Ezért készítettem még egy telepítőt, de most azt állítottam be, hogy ne töltse le a komponenst, hanem csapja a programom mellé. Erre több, mint nyolc hibaüzenetet dobott, hogy neki azok nincsenek meg. A Microsoft dokumentációja szerint nekem kell letölteni azt a komponenst, aminek az URL-je ott van a Visual Studio könyvtárhierarchiájának mélyén, és amelyiket a programom telepítésekor le is tud tölteni.
Rendben, akkor letöltöm én. A dokumentáció arra viszont nem tért ki, hogy mind a 32 bites, mint a 64 bites verziót le kell tölteni, és elhelyezni az XML-ek mellett x86, illetve x64 alkönyvtárakban, és akkor a Visual Studio mellékelni tudja. A telepítő már több száz megabájtra duzzadt.
Ez sem jött be. Azt a hibaüzenetet kaptuk, hogy "...SQL Network Interfaces, error: 50...". Ezt sem tudtam értelmezni, mert nem használtam hálózatot, lokális adatbázist adtam meg kapcsolatként. Közben Pan kiderítette, hogy hiába lesz telepítve az SQL Server, a program képtelen lesz használni az adatbázist, kivéve, ha előtte az SqlLocalDB parancssoros eszközzel létre nem hozzuk az adatbázis bejegyzést. Mi van? Nem ezért van a telepítő? Nem az lenne a feladata, hogy a felhasználónak ne kelljen parancssorban bogarászni?
Egyébként ez a OneClick telepítő megérne egy külön bejegyzést. Fogja az elkészített programot, és kérdés nélkül elrejti a felhasználó AppData könyvtárának a bugyraiba, olyan intuitív elnevezésekkel, mint 8342-12312-74. Mikor megkaptam a hibaüzenetet, győztem megkeresni a program helyét.
Hanem, amikor elkészült az adatbázis bejegyzés, települt az SQL Server, még mindig nem lehetett használni a programot. Nem stimmelt az SQL Server verziószáma! Ekkor tudtam meg, hogy három féle verziószáma van a programnak. Van egy, amit mi, halandók használunk: SQL Server 2012, van egy belső adatbázis verzió, ami 706, és van még egy verziószám, amit akkor ír ki, ha parancssorban turkálunk benne, ami V11. Tényleg szükség van minderre? A hibaüzenet szerint, nekem 852-es adatbázisra van szükségem. A táblázat alapján ez SQL Server 2016!
Mikor Pan először kezdett beszélni nekem arról, hogy a programom a 2016-os adatbázist vár, azt hittem túl sokat ivott. Hiszen nekem SQL Server 2012-m van. Csak tudom, mi van a gépemen, még a Visual Studio is kilistázza nekem az elérhető szoftver komponenseket, és ott csak a 2012 szerepel.
Azért megnéztem, mi van a gépemre telepítve. Legnagyobb meglepetésemre volt SQL Server 2008, 2012, 2016 is. Amikor elkezdtem használni a LocalDB-t, ott valahogy a 2016-t kezdte el használni, bár nem emlékszem, hogy felajánlotta volna, melyik verziót akarom használni. A Visual Studio OneClick telepítője viszont csak a 2012-t ajánlja fel, mint telepíthető függőséget.
Hanem ekkor még nem volt vége. Pan hiába rakta fel a 2016-os verziót a célgépre, az még mindig nem működött. Ugyanis ez a szemét SQL Server képes különböző verziókat egy helyen tárolni. Mikor Pan 2012-es verziójú adatbázist hozott létre a 2016-os SQL Serverben, akkor a programom még mindig nem működött. Amint rájött erre, és javította, azonnal futott minden.
Mindig is tudtam, hogy nem értek a Windows-hoz, de azt hittem képes vagyok megoldani bármilyen problémát. Itt viszont semmi nem az volt, aminek látszott. Teljesen érthetetlenek számomra a telepítő készítés logikája, az opciók, az alapérelmezett beállítások. Semmit mondó hibaüzenetek és szürreális megoldások. Pan mégis átlátta az egészet és végigevickélt rajta. Egy rossz szavam sem lehet rá ezután.