MOLTI ENTI E SOCIETA’ PUBBLICHE PRODUTTRICI DI SOFTWARE ISTITUZIONALE PER WINDOWS NON HANNO FINORA RITENUTO DI PUBBLICARE VERSIONI ANCHE PER GNU/LINUX O MULTIPIATTAFORMA, ESCLUDENDO DI FATTO PRIVATI CITTADINI, IMPRENDITORI E PROFESSIONISTI DALL’ACCESSO LIBERO AI SISTEMI INFORMATICI DELLA PUBBLICA AMMINISTRAZIONE, PER FAR FRONTE AD ADEMPIMENTI BUROCRATICI E GIURIDICI OBBLIGATORI; PER ESSI INFATTI SONO RICONOSCIUTI, IN MODO ILLEGITTIMO, SOLO SISTEMI OPERATIVI MICROSOFT WINDOWS.
L’AUTORE CONDANNA FERMAMENTE QUESTO SCANDALOSO COMPORTAMENTO DELLA P.A., E SI AUGURA CHE QUESTI ENTI E SOCIETA’ RENDANO FINALMENTE DISPONIBILE L’ACCESSO AI CITTADINI CHE, DI PIENO DIRITTO, UTILIZZANO INVECE SISTEMI OPERATIVI ALTERNATIVI A MS WINDOWS (CHIUSO E PROPRIETARIO).
GLI UTENTI SONO CALOROSAMENTE INVITATI A SOLLECITARE LE AMMINISTRAZIONI PUBBLICHE A CONSENTIRE IL LIBERO ACCESSO ALLE LORO PROCEDURE CON SISTEMI ALTERNATIVI A WINDOWS, NONCHE’ AD UTILIZZARE IN PRIMA BATTUTA, LADDOVE DISPONIBILE, SOFTWARE RILASCIATO ANCHE PER GNU/LINUX.
LA GUIDA SEGUENTE SI RIFERISCE INFATTI A “TRUCCHI” NON UFFICIALI PER I QUALI NON E’ MAI GARANTITA AL 100% LA COMPATIBILITA’ CON LA PROCEDURA UFFICIALE PER WINDOWS STABILITA DAL PRODUTTORE DEL SOFTWARE, NE’ CON IL RISULTATO IN TERMINI DI FORMATO E/O DI CONTENUTO DELLA PROCEDURA IN AMBIENTE WINDOWS, E CHE NON POSSONO MAI CON CERTEZZA E COMPLETEZZA SOSTITUIRE A TUTTI GLI EFFETTI L’AMBIENTE PER I QUALI SONO ORIGINARIAMENTE CONCEPITI.
*** GUIDA INCOMPLETA ***
manca la verifica di funzionamento globale
non completamente testato in tutte le sue parti
E’ venuto il momento di un’altra guida passo-passo, per l’utilizzo del programma EMENS dell’INPS, che serve per la verifica delle denunce retributive mensili.
L’INPS ha reso disponibile l’applicazione solo per piattaforma Windows. Il programma è binario e senza disponibilità di sorgenti. Esso è in formato .msi all’interno di un .exe ed il suo funzionamento è basato sulla c.d. tecnologia MS .NET. Per farlo funzionare su GNU/Linux, sarà necessario operare degli adattamenti.
.
Prima di continuare la lettura si prega di prendere conoscenza delle CONDIZIONI DI UTILIZZO ed accettarle.
.
.
- PREPARAZIONE E INSTALLAZIONE
Nella guida, per evitare ripetizioni che potrebbero ingenerare confusione e per una migliore manutenibilità della guida stessa, si assumeranno le seguenti condizioni:
- con $HOME si identifica la directory /home/[utente] : dove [utente] è lo user name (senza parentesi) sulla macchina linux dell’operatore;
- la directory utente di wine in cui sarà installata l’emulazione di windows per questo programma ($HOME/.wineEmens) sarà indicata come $BASEDIR
Verificare di avere installato il programma wine, altrimenti installarlo preferibilmente dai pacchetti in uso della propria distribuzione o, in mancanza, da sorgenti (in tal caso leggere le istruzioni di compilazione sul sito del programma); verificare sul sito stesso di avere la versione stabile più recente o quantomeno una ragionevolmente recente, se si vuole usare un pacchetto precompilato.
Create una nuova directory utente per wine (installazione pulita, senza programmi di altri produttori) con il comando:
WINEPREFIX=$BASEDIR wineprefixcreate
IMPORTANTE: anche se nel prosieguo non dovesse essere esplicitamente indicato, ricordarsi di inserire SEMPRE
WINEPREFIX=$BASEDIR
davanti a wine nomedelprogramma.exe ogni volta che si avvia un programma di questo articolo con wine o altro programma che ad esso si riferisce (altrimenti tale programma sarà installato o avrà effetti sulla directory $HOME/.wine predefinita). Questo ovviamente non vale se si usa un programma diverso da uno del pacchetto wine, come p.es. mono nella versione per GNU/Linux
Creiamo una sotto-directory temporanea, preferibilmente nella directory $HOME, di nome p.es. $HOME/tmp/EMENS, poi rechiamoci in essa.
Il programma EMENS (la versione corrente è la 3.1 del giugno 2007 3.2 del febbraio 2008) si compone di un solo file. Scarichiamo in questa directory il file INPS_EMENS.exe, dal sito dell’INPS – linguetta Software – Aziende e Consulenti, a partire da qui. Scegliere software di controllo EMens in ambiente Windows – Procedura completa.
Scarichiamo anche il Manuale operativo ManualeEMens.exe (ci sarebbe da chiedersi il perché di un .exe che contiene solo un semplice file .pdf, quando si sarebbe potuto far scaricare dal sito direttamente il .pdf, ma tant’é …)
Nella directory corrente eseguire lo scompattamento dei due file scaricati con: unzip INPS_EMENS.exe e unzip ManualeEMens.exe
Al termine dovremmo avere diversi file: Emens.msi, Setup.Exe, Setup.Ini, Leggimi.htm (provenienti dall’eseguibile principale) e ManualeEMens.pdf (proveniente dal manuale).
Prima di proseguire è necessario risolvere alcuni problemi derivanti dalla mancanza di un adeguato gestore per file .msi (i file msiexec e msi.dll che sono forniti come built-in con wine non sono sufficienti; serve la versione 2.0 di Microsoft Installer). Se il programma di installazione di EMENS non rileva un’implementazione .NET adeguata si bloccherà; si può usare mono, nella versione 1.1 però: le successive non sembrano altrettanto utili.
NOTA: Questa versione per Windows di mono serve solo ad evitare l’errore che impedisce ad EMENS di installarsi, ma non verrà utilizzata nel prosieguo.
Allo stesso modo non sembra installabile con successo MS .NET 1.1 (dotnetfx.exe), nè direttamente con wine, nè scompattando con cabextract ed eseguendo il .msi con msiexec: si veda la scheda relativa del database delle applicazioni di wine qui
Procuriamoci quindi lo script winetricks, per lo scaricamento e l’installazione automatizzata di alcune aggiunte a windows. Scarichiamo winetricks, nella directory $BASEDIR/drive_c/ e rendiamolo eseguibile.
WINEPREFIX=$BASEDIR winetricks mono11 msi2
Verificare con WINEPREFIX=$BASEDIR winecfg che nella linguetta principale il sistema operativo sia impostato su Windows 98, e nella linguetta librerie msi e msiexec siano su (native) o (native, builtin), altrimenti apportare le modifiche necessarie.
NOTA: Se il sistema operativo è impostato su Windows 2000, si verificherà un errore di Exception Code: ACCESS VIOLATION
.
Dalla directory temporanea $HOME/tmp/EMENS eseguire poi l’installazione di EMENS con:
WINEPREFIX=$BASEDIR wine Setup.Exe
La directory in cui il programma viene installato è $BASEDIR/drive_c/Programmi/INPS/Emens/.
A differenza di altri programmi di INPS pare che questo non lasci in giro .dll in windows/system32 e dintorni.
Infine copiamo il file ManualeEmens.pdf dalla directory $HOME/tmp/EMENS a quella di installazione del programma ($BASEDIR/drive_c/Programmi/INPS/Emens/).
Verificare di avere installato nella propria distribuzione GNU/Linux sia mono che mono-basic (implementazione della libreria VisualBasic .NET) nella versione più recente, altrimenti scaricarle dal sito di mono e installarle, secondo le istruzioni relative.
Se si ha una versione recente di mono, all’avvio del programma, dopo qualche clic nei pulsanti, apparirà un errore:
** (INPSEMENS.exe:3571): WARNING **: The following assembly referenced from $BASEDIR/drive_c/Programmi/INPS/Emens/INPSEMENS.exe could not be loaded:
Assembly: Microsoft.VisualBasic (assemblyref_index=1)
Version: 7.0.5000.0
Public Key: b03f5f7f11d50a3a
The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly ($BASEDIR/drive_c/Programmi/INPS/Emens/).** (INPSEMENS.exe:3571): WARNING **: Could not load file or assembly ‘Microsoft.VisualBasic, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies.
** (INPSEMENS.exe:3571): WARNING **: Missing method SetProjectError in assembly $BASEDIR/drive_c/Programmi/INPS/Emens/INPSEMENS.exe, type Microsoft.VisualBasic.CompilerServices.ProjectData
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly ‘Microsoft.VisualBasic, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies.
File name: “Microsoft.VisualBasic, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
[..]
Il programma dell’INPS infatti si basa sulla versione 7.0.5000.0 della libreria Microsoft.VisualBasic.dll, mentre il pacchetto mono-basic installa la versione 8.0.0.0 nella directory /usr/lib/mono/gac/Microsoft.VisualBasic/.
E’ quindi necessario creare (con i privilegi di root, cambiando utente con su, o anteponendo sudo se già configurato) un link simbolico nella directory
/usr/lib/mono/gac/Microsoft.VisualBasic/ tra la subdirectory presente e quella che il programma si aspetta di avere.
ln -s 8.0.0.0__b03f5f7f11d50a3a 7.0.5000.0__b03f5f7f11d50a3a
.
.
.
- AVVIO
Recandosi nella directory dove è stato installato il programma ($BASEDIR/drive_c/Programmi/INPS/Emens/), eseguire
mono INPSEMENS.exe
Il programma dovrebbe avviarsi regolarmente; tuttavia se dovesse apparire un errore che lamenta la mancanza di un libreria .dll può essere necessario anteporre al comando mono la variabile MONO_PATH= indicando la directory in cui le librerie richieste di mono sono installate nel sistema (normalmente /usr/lib/mono/gac/, /usr/lib/mono/1.0/, /usr/lib/mono/2.0/)
NOTA: si ricorda che in GNU/Linux ove valori multipli debbano essere associati a variabili d’ambiente questi devono essere separati dai due punti (“:”)
Per la correttezza dell’elaborazione è necessario fornire il nome del file di una pratica formattata correttamente da un punto di vista strutturale e contenutistico, generata in formato .xml da un software esterno di procedura paghe.
.
.
- AGGIUSTAMENTI
Dopo l’elaborazione di una pratica in formato .xml, il programma crea delle directory dal nome errato: il separatore delle directory infatti è reso con il carattere corretto per windows, ma che in GNU/Linux rappresenta quello di escape (“\”)
Appaiono infatti questi nomi di file e directory:
Controlli\Index.xml
Controlli\XML
Controlli\XSD
Controlli\XSLT
Temp\LogVal.xml
E’ necessario pertanto rinominare ciascuno dei file/directory omettendo la parte che precede la barra “\” e spostarli nella directory esistente indicata prima della barra, in modo da avere questa situazione:
Controlli/Index.xml (file)
Controlli/XML/ (directory)
Controlli/XSD/ (directory)
Controlli/XSLT/ (directory)
Temp/LogVal.xml (file)
Pertanto Controlli\\XML va spostato in Controlli/ e rinominato come XML/; Controlli\\XSD va spostato in Controlli/ e rinominato come XSD/; Controlli\\XSLT va spostato in Controlli/ e rinominato come XSLT/; Controlli\\Index.xml va spostato in Controlli/ mantenendo il nome Index.xml; Temp\\LogVal.xml va spostato in Temp/ mantenendo il nome LogVal.xml
NOTA: ricordo infatti che essendo presente un carattere di escape, la barra “\” andrà indicata appunto due volte (“\\”)
P.S. c’è ancora qualche problema per quanto riguarda la dimensione e visibilità dei caratteri, ma su questo tornerò appena ho novità.
.
.
-FINE-
.
.
==============================================================
==============================================================
.
TENTATIVI INFRUTTUOSI PRECEDENTI
(
Questa parte, inserita qui sotto affinché non vada persa, è stata spostata dai software non funzionanti.
INPS – EMENS
ATTENZIONE: questo programma non si installa regolarmente e non funziona!!
NEWS: sto riscrivendo la guida proprio in questi giorni perché sto sperimentando l’uso di EMENS senza utilizzare le .dll proprietarie di MS .NET 1.1; la cosa sembra funzionare abbastanza bene, pazientate ancora un po’ …
Il programma EMENS serve per la verifica delle denunce retributive mensili.
EMENS (versione corrente 3.1) si scarica dal sito dell’INPS a partire da qui in corrispondenza di Software di controllo EMens ver. 3.1 in ambiente Windows – Procedura completa
Il file si chiama EMens.msi. Già subito si capisce che non è possibile installarlo con facilità:
1) utilizza un formato .MSI (Windows Installer) al posto del collaudato .exe: sia gli esperimenti con il msiexec incorporato in wine, che l’installazione di msi 2.0 (usando winetricks msi2) falliscono senza spiegare un granché; è possibile scompattare il contenuto del file .msi con uniextract (programma per windows), ma il contenuto del file scompattato rimanda ad una serie di file .exe .NET che difficilmente si capisce come installare o usare;
2) il programma è stato concepito con la c.d. “tecnologia” MS .NET, per cui serve l’installazione del .NET framework 1.1; sembra utilizzabile anche mono (l’implementazione opensource di .NET), ma prima bisogna capire come installare il programma EMENS.
EDIT: l’installazione di .NET 1.1 (richiesta già in fase di installazione di Emens) tramite il file dotnetfx.exe scaricata dal sito di Microsoft conduce ad un errore di “Unhandled exception: page fault on read access to [..]“, dopo una serie di
fixme:msi:ACTION_CustomAction msidbCustomActionTypeNoImpersonate not handled
può darsi che questo sia risolto con la versione in sviluppo, successiva alla 0.9.39 (wine-git), come appare in diversi bug segnalati come duplicati in bugzilla; altrimenti sarà necessario aspettare la prossima versione stabile.
EDIT: anche senza scaricare la versione -git, sembra possibile installarlo; a grandi linee è necessario fare questo:
installare con winetricks fakeie6 e msi2, con winecfg mettere win98 come sistema operativo, con cabextract estrarre dotnetfx.exe, avviare con msiexec netfx.msi, dopo diverso tempo (e qualche mancata registrazione, che sospetto essere critica) si installa, quindi sempre con msiexec installare EMens.msi; al termine dell’installazione se si avvia si ottiene però un errore "CLR error: 80004005. The program will now terminate." (ho letto che sembra dovuto al fatto che sia attiva la scheda di compatibilità di Windows XP con win98). Devo lavorarci sopra ancora …
Un ottimo sito di spiegazione sugli squallidi .msi è jsware
Per la verità lo scompattamento di un file .msi può essere effettuato anche con cabextract, il problema è che si ottengono una serie di file dal nome alfanumerico di tipo esadecimale che non dicono un granché: in ogni caso l’avvio con mono di uno dei file eseguibili fa vedere una schermata semivuota dell’INPS e non appaiono tre pulsanti che invece ci dovrebbero essere per il corretto funzionamento del programma.
P.S. In breve quando si pensa che con VB+Access+ActiveX si sia raggiunto il fondo per noi utenti GNU/Linux, è bene ricordare che si può ancora scavare nel terreno con MSI e dotNET …
AGGIORNAMENTO: Usando la versione 1.2.5 di mono e indicando con la variabile MONO_PATH la directory windows/assembly/GAC/
Microsoft.VisualBasic/7.0.5000.0__b03f5f7f11d50a3a/ (dove, nel mio caso sono installate le librerie Visual Basic .NET) sembra che parta e funzioni quasi regolarmente.
Nella directory ~/.wineEMENS/drive_c/Programmi/INPS/Emens/ digitare:
(tutto su una riga)
MONO_PATH=$MONO_PATH:~/.wineEMENS/drive_c/windows/assembly/
GAC/Microsoft.VisualBasic/7.0.5000.0__b03f5f7f11d50a3a/ mono INPSEMENS.exe
(~/.wineEMENS/ è la directory utente di wine)
.
.
=========================================================================
=========================================================================


[...] INPS -EMENS è ora almeno parzialmente funzionante; per vedere la guida recarsi qui. [...]
Da: Software di Enti pubblici che non funziona con GNU/Linux « pensieri sparsi per sopravvivere alla giungla burocratica su 31 Ottobre 2007
alle 22:08