Archive for dicembre 2016
Mio articolo SpotLight
E’ online, il mio nuovo articolo sul Blog Technet Wiki Ninjasit.
Il link è questo:
https://blogs.technet.microsoft.com/wikininjasit/2016/12/20/article-spotlight-lavalondock-it-it/
Leggi l'articolo intero | Make a Comment ( None so far )
Nuovo mio articolo sul Technet Wiki
E’ online il mio nuovo articolo sul Blog Technet Wiki. E’ l’ultimo della serie di controlli WPF. Con l’anno nuovo parlerò di altre cose, ovviamente sempre legate a tecnologie Microsoft.
Il link è: http://social.technet.microsoft.com/wiki/contents/articles/36503.prism-avalondock-extension.aspx
Leggi l'articolo intero | Make a Comment ( None so far )
Mio nuovo articolo sul blog Technet Wiki
Pubblicato un nuovo articolo sui controlli WPF. Questa volta si parla di AvalonDock, il sistema per trascinare le finestre nelle varie aree dello schermo ed ancorarle.
Il link è: http://social.technet.microsoft.com/wiki/contents/articles/36484.xceed-avalondock.aspx
Buona lettura
Leggi l'articolo intero | Make a Comment ( None so far )
Pubblicato mio nuovo articolo sul Blog Techent Ninjasit
E’ stato pubblicato il mio nuovo articolo della serie Sportlight del martedì.
Questa volta si parla del Navigation Panel.
Il link è questo: https://blogs.technet.microsoft.com/wikininjasit/2016/12/04/article-spotlight-il-navigationpanel-it-it/
Buona lettura.
Leggi l'articolo intero | Make a Comment ( None so far )Mio nuovo articolo sul Technet Wiki
Mio nuovo articolo appena pubblicato sul Network Wiki. Ci occupiamo ancora di Navigation Panel.
Leggi l'articolo intero | Make a Comment ( None so far )
La mia prima Conversione da applicazione Win32 a applicazione UWP
Per mille motivi, può succedere che tocchi a noi sviluppatori anche fare il deploy del nostro software.
Se sviluppiamo applicazioni Windows Win32 abbiamo da sempre avuto il problema di “come vendere la nostra applicazione”. E il cliente a volte non paga, e a volte ci sono problemi tecnici e non si riesce a fare il deploy.
Quante volte ci siamo detti, dopo l’apertura degli Store per le applicazioni mobile “Che bello se ci fosse una cosa così facile anche per le app Win32”. Ebbene, finalmente quel momento è arrivato.
Durante il Connect();2016 si è parlato anche di questo e seppur non ancora funzionante al 100% possiamo giocare a fare la conversione delle applicazioni Win32 in Universal Windows Platform.
La cosa non è semplice, anzi, e tal proposito vi rimando a un articolo dell’ottimo Mario De Ghetto sul numero di Dicembre di IoProgrammo. Nell’articolo di Mario è spiegato benissimo anche i vari tipi di conversione, i comandi da lanciare, i parametri, le parti da scaricare.
Dobbiamo preparare il nostro sistema con alcune componenti, vedere le versioni e altro ancora.
Però voglio giocarci a prendere un gestionale in WPF e vedere cosa succede. Magari forse non riesco neanche, vediamo, questa è una prova a la mia prima esperienza di conversione da App Desktop a Universal App. Vi voglio raccontare “in diretta” la mia esperienza della prima conversione, da utente comunque esperto in sistemi e programmatore.
Prima di tutto avremo da fare qualche operazione anche sull’applicazione Win32 e dobbiamo tenere conto di diverse cose.
Prendo direttamente dal sito Microsoft (https://msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-root#convert)
-
L’app usa una versione di .NET precedente a 4.6.1. È supportato solo .NET 4.6.1. Devi ridestinare l’app a .NET 4.6.1 prima della conversione.
-
L’app viene eseguita sempre con privilegi di sicurezza elevati. L’app deve funzionare se viene eseguita con i privilegi dell’utente interattivo. Gli utenti che installano l’app da Windows Store potrebbero non essere amministratori di sistema, quindi il requisito di esecuzione con privilegi elevati significa che non funzionerà correttamente per gli utenti standard.
-
L’app richiede un driver in modalità kernel o un servizio Windows. Il bridge è adatto per un’app, ma non supporta un driver in modalità kernel o un servizio di Windows che deve essere eseguito con un account di sistema. Invece di un servizio di Windows, usa un’attività in background.
- L’app modifica l’hive del Registro di sistema HKEY_LOCAL_MACHINE (HKLM). Qualsiasi tentativo eseguito dalla tua app di creare una chiave HKLM o di aprirne una per la modifica causerà un errore di accesso negato. Ricorda che l’app usa una visualizzazione virtualizzata privata propria del Registro di sistema, quindi il concetto di hive del Registro di sistema a livello di utente e di computer non è applicabile (come è il caso per HKLM). Dovrai trovare un altro modo per ottenere quello per cui usavi HKLM, ad esempio la scrittura in HKEY_CURRENT_USER (HKCU).
-
L’app usa una sottochiave del Registro di sistema ddeexec come mezzo per avviare un’altra app. Usa invece uno dei gestori di verbo DelegateExecute nella configurazione implementata dalle varie estensioni Activatable* nel manifesto del pacchetto della tua app.
-
L’app scrive nella cartella AppData con l’intenzione di condividere dati con un’altra app. Dopo la conversione, la cartella AppData viene reindirizzata all’archivio dati locali dell’app, ovvero un archivio privato per ogni app UWP. Usa altri mezzi per la condivisione dei dati tra processi. Per altre info, vedi Archiviazione e recupero di impostazioni e altri dati dell’app.
-
L’app scrive nella directory di installazione per la tua app. Ad esempio, l’app scrive in un file di log che inserisci nella stessa directory del file EXE. Questa situazione non è supportata, quindi dovrai trovare un’altra posizione, come l’archivio dati locale dell’app.
-
Per l’installazione dell’app è richiesta l’interazione con l’utente. Il programma di installazione della tua app deve poter essere eseguito in modo invisibile all’utente e provvedere all’installazione di tutti i prerequisiti non disponibili per impostazione predefinita in un’immagine pulita del sistema operativo.
-
L’app usa la directory di lavoro corrente. In fase di esecuzione, l’app convertita non avrà a disposizione la stessa directory di lavoro specificata in precedenza nel collegamento LNK del destkop. Devi modificare la directory di lavoro corrente in fase di esecuzione, se la disponibilità della directory corretta è importante per il corretto funzionamento della tua app.
E ce ne sono altre.
Una volta corrette queste cose possiamo procedere.
Quello che proverò a fare è la semplice conversione, senza aggiunta di funzionalità. Per fare questo ci serve avere il pacchetto di installazione, altrimenti lo creiamo. Non so se vale anche il pacchetto creato con Clickonce, piuttosto che il file exe o l’msi. Li proveremo…
Detto in parole “non tecniche” il Converter prende il pacchetto di installazione, lo scompatta, tira via l’installazione di Windows e ci mette l’installazione sullo Store. Alla fine avremo un pacchetto con installazione .XAP.
Procediamo a scaricare dallo Store il DesktopAppConverter:
Iniziamo bene, mi appare questo errore:
Per risolverlo basta andare in “Gestione attività” e killare i processi “Explorer.exe” e quindi riproviamo.
A questo punto l’installazione funziona.
Come abbiamo visto sopra è richiesto che nel sistema sia installata la build 14393, ossia l’Anniversary Update.
Dobbiamo andare adesso a scaricare l’immagine di Windows 10 che servirà al converter per mettere su una macchina virtuale per la conversione.
Andiamo nel sito https://www.microsoft.com/en-us/download/details.aspx?id=54283
Selezioniamo il file BaseImage-14393.wim se abbiamo l’Anniversary Update, altrimenti, se siamo degli Insiders e abbiamo installato delle successive versioni scaricheremo quella.
Per fare la conversione dobbiamo aprire il DAC con diritti amministrativi.
La sinstassi è la seguente:
DesktopAppConverter.exe <arguments>
Use "DesktopAppConverter.exe -?" or visit http://go.microsoft.com/fwlink/?LinkID=785434 for more information on arguments supported by this tool.
EXAMPLES
1. Setup converter environment using a base image
C:\> DesktopAppConverter.exe -Setup -BaseImage C:\BaseImage\BaseImage-<version>.wim
2. Convert an installer for a desktop app (MSI or EXE) to a UWP package (AppX)
C:\> DesktopAppConverter.exe -Installer C:\MySetup.MSI -Destination C:\MyAppxFolder -PackageName "MyApp" -Publisher "CN=<publisher_name>" -Version 1.0.0.0 -MakeAppx
Sono due comandi da dare a riga di comando.
Nel nostro caso la prima è:
DesktopAppConverter.exe -Setup -BaseImage C:\Conversione\BaseImage-14393\BaseImage-14393.wim
Dobbiamo riavviare il sistema.
Dopo aver riavviato il sistema procediamo…
Si apre automaticamente Powershell che continuerà la preparazione del sistema.
Creo il file eseguibile del setup, tramite clickonce ma non ne vuole sapere.
Preparo allora il pacchetto msi.
Questo è il programma in WPF in esecuzione:
E’ un programma fatto diverse decine di anni fa che utilizzo da cavia.
Riapriamo il Desktop App Converter e digitiamo:
DesktopAppConverter.exe -Installer C:\Conversione\SoftwareAstronomia_setup.msi -Destination C:\output -PackageName "SoftwareAstronomia" -Publisher "CN=Piero Sbressa" -Version 1.0.0.0 -MakeAppx -AppExecutable "C:\Program Files (x86)\SoftwareAstronomia\SoftwareAstronomia.exe" -PackageArch x86
Al terzo tentativo l’operazione è riuscita:
Andiamo a vedere la cartella creata:
Come potete vedere ecco il pacchetto appx.
Ora gli facciamo doppio click.
E lanciamo l’installazione.
Ancora un problema. Dobbiamo installare prima il certificato.
Mi è capitato che a ogni tentativo il pc si disconnette dalla rete interna.
Rilanciamo la conversione aggiungendo –Sign che crea il certificato e –Verbose che spiega in dettaglio quello che sta facendo.
DesktopAppConverter.exe -Installer C:\Conversione\SoftwareAstronomia_setup.msi -Destination C:\output -PackageName "SoftwareAstronomia" -Publisher "CN=Piero Sbressa" -Version 1.0.0.0 -MakeAppx -AppExecutable "C:\Program Files (x86)\SoftwareAstronomia\SoftwareAstronomia.exe" -PackageArch x86 -Verbose –Sign
Ecco che ora c’è anche il file del certificato:
Per installarlo bisogna fare click con il tasto destro del mouse sul file con estensione cer e premere “Installa certificato”
Selezionare come da seguenti schermate:
Rilanciamo l’installazione.
Nuovo errore, sta diventando una cosa infinita.
Errore 0x87AF0001: errore dell’estensione elementi visivi durante l’elaborazione dell’elemento notifica.
Dobbiamo usare questo comando per risolvere:
dism /online /cleanup-image /startcomponentcleanup.
Ma a sua volta c’è un altro errore.
Riavviamo il computer e teniamo chiusi tuti i programmi.
Questa volta va.
Ma ancora il problema non viene risolto.
Lascio stare, vado sul portatile e rifaccio tutto dall’inizio.
Questa volta non ci sono stati intoppi ed ecco il programma UWP installato e funzionante.
Troverete comunque la spiegazione dei parametri e di tutto quello che succede sempre nell’articolo di Mario De Ghetto su Io Programmo di Dicembre, al quale mi sono ispirato per fare la mia prima conversione. Vi consiglio di andare in edicola e leggere il suo articolo, scritto e redatto molto bene. Qua ho voluto raccontare la mia esperienza facendo riferimento al suo articolo e agli altri articoli ufficiali sul sito Microsoft.
Di sicuro la vedo ancora macchinosa e non si dovrebbe andare a tentativi.
Ho voluto provare a fare la conversione per Windows Phone. Un delirio.
Io spero che in una futura versione si possa fare la conversione con interfaccia grafica rendendo il tutto meno macchinoso.
Leggi l'articolo intero | Make a Comment ( None so far )Mio nuovo articolo nel Technet Wiki
Apriamo dicembre con i botti. Ho appena pubblicato un articolo sul Wiki Twchnet.
Ancora si parla di WPF, questa volta si torna a parlare di layout e interfaccia grafica. Scopriremo cosa è e come usare il NavigationPane.
Il link è http://social.technet.microsoft.com/wiki/contents/articles/36387.wpf-navigation-pane.aspx
Buona lettura
Leggi l'articolo intero | Make a Comment ( None so far )