Vai al contenuto

Porting da Mac a Windows 10 esperienza


Lief

Messaggi raccomandati

Dopo aver creato un'applicazione per mac ho deciso di provare a portarla su windows 10 usando le UWP (in pratica la piattaforma per sviluppare applicazioni universali).

L'applicazione che dovevo portare si basava su un'idea relativamente semplice:

- Interfaccia per passare dati ad un programma avviabile da terminale.

Su mac è stato decisamente semplice, la creazione dell'interfaccia ha richiesto pochissimo tempo e per avviare il terminale ho semplicemente usato la system di C (dentro un bridge Objective C)... per non bloccare l'interfaccia ho poi richiamato tale funzione Objective C all'interno di un nuovo thread. Ho usato questo sistema perché su mac il mio obbiettivo era proprio provare a mischiare codice C con Swift.

 

Su Windows il primo problema da superare è stato che le UWP (anche su desktop) sono state progettate solo per applicazioni sandbox (il che significa che richiamare un altro programma è impossibile all'interno delle UWP).

Per riuscirci è però stato introdotto un metodo nelle UWP tale metodo è chiamato fulltrustprocess.

Potrebbe somigliare al bridge di Swift.... ma funziona in maniera completamente diversa ed è davvero complesso da utilizzare.

 

Prima di tutto è necessario configurare tale fulltrustprocess nell'xml e, sebbene pare sia possibile passargli dei parametri, io non ho trovato modo di farlo e sembra che comunque passare tali parametri come variabili non sia possibile. Oltretutto non pare sia possibile usare più di un'applicazione trusted nella stessa applicazione (o perlomeno io non ci sono riuscito).

Il workaround che ho trovato è fare un'altra applicazione io di tipo WPF in grado di richiamare diverse applicazioni a seconda di... cosa trova scritto in un file txt.

Altro problema è infatti riuscire a comunicare tra le due applicazioni. Il metodo migliore che ho trovato è usare dei file txt rigorosamente all'interno della cartella Immagini (Documenti, Download ecc... non vanno bene visto che in tali cartelle da UWP non è possibile sovrascrivere i file).

 

Per finire bisogna anche editare il file di configurazione in modo che includa tutti i file exe da copiare all'interno del pacchetto (altrimenti il tutto fallisce e microsoft non segna questa procedura da nessuna parte):

https://stackoverflow.com/questions/38903012/error-while-creating-app-package-with-fulltrustprocess-pointing-to-a-executabl

 

Qualunque altro exe a parte la fulltrustprocess va poi copiato da un'altra parte (esempio la cartella immagini) altrimenti fallirà l'esecuzione una volta pacchettizzato su computer diversi da quello dove è stato creato.


Insomma... il risultato finale è quello che volevo ma su mac è stato decisamente più semplice raggiungerlo. Oltretutto la versione mac non ha bisogno di attese attive per controllare i file exe e comunicare con un'altra applicazione in background, quindi è più efficiente.

 

C'è però da dire che nelle UWP la WebView su Windows permette il fullscreen degli elementi in html5. Quella su mac non lo permette. (il motivo per cui non ho usato le WPF è appunto per la mancanza di questa feature anche nelle vecchie API per windows).

 

Insomma, l'ideale sarebbe che Microsoft offrisse le nuove UWP potendo contemporaneamente utilizzare, se si sviluppa per PC, una maggiore quantità di API.

Al contrario Apple dovrebbe aggiornare le proprie API e più in particolare la WebView per supportare meglio html5.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...