giovedì, dicembre 13, 2007

Via libera - (symbian dll capabilities)

La situazione è questa:
una dll di terze parti
un certificato di sviluppo con le capabilities di default
un'applicazione da sviluppare.

Cosa diceva il security platform:
un'applicazione può caricare una dll solo se tale dll ha ha le stesse capabilities o superiori dell'applicazione che la chiama.

Perfetto, allora che faccio, chiamo la società che rilascia la dll e gli dico di compilare con tutte le capabilities cosi poi vado tranquillo per la mia strada sapendo che potrò inserire tutto quello che voglio senza essere vincolato.

Tuttto fantastico, a parte il fatto che quando metto l'applicazione sul dispositivo in fase di installazione mi esce il seguente errore:
"Required application access not granted"
e successivo fallimento dell'applicazione.

In tutto questo la dll di terze parti veniva installata direttamente dalla mia applicazione con l'aggiunta della seguente riga nel .pkg
"c:\path\dll\libraries.dll" -"!=\sys\bin\libraries.dll"


Una volta appurato che effettivamente le librerie dll si installano in quel modo, penso, vuoi vedere che mi serve la capabilities "allfiles" ... Ecco, questa è una cazzata bella e buona.
Il processo che si occupa di copiare la libreria nel path sys\bin non è la mia applicazione, ma bensi, il processo installer ... e quello le capabilities ce le ha tutte.

Facciamola breve.
La dichiarazione del security platform che ho riportato sopra vale solo se la dll è già installata nel sistema. In caso contrario, come nel mio, stavo cercando di installare un'applicazione che era stata certificata con le capabilities standard ma che all'interno conteneva una dll che di capabilities ne aveva molte di piu.

Una volta tolte le capabilities di troppo nella dll ... non solo l'installazione è andata a buon fine ... ma anche il programma ha ripreso a funzionare in maniera ottimale.

Per togliere le capabilities dall dll ho fatto ricompilare ... ma successivamente ho scoperto che non era necessario.
esiste un programmino che si esegue da shell (anzi dos ... insomma interfaccia a comandi )
che si chiama ELFTRAN.EXE.
Attraverso questo programma si possono modificare le capabilities all'interno di un programma .exe o anche .dll

link all'utilizzo di elftran.exe