A Ovest Di Paperino

Welcome to the dark side.

Windows Live Writer Post Download Plugin

English version of these instructions.

Come promesso, questo è il post sul plugin da premio Nobel che mi sono auto assegnato.

Il problema: tempo fa cercando sul mio blog, ho scoperto che un post antico non si visualizzava correttamente in quanto l’immagine hot-linkata su WikiPedia era stata rinominata. Siccome la piattaforma ancora non supporta l’editing on-line (Всему свое время, direbbero i russi), l’alternativa era quella di aprire gli ultimi 500 post via Windows Live Writer, trovare quello giusto, editarlo e ripubblicarlo. Più facile a dirsi che a farsi ed il post è rimasto “rotto” per un bel po’

La soluzione (teorica): la prima soluzione è stata quella di suggerire al team di Windows Live Writer di supportare l’apertura di un post tramite PostId. Purtroppo il suggerimento non è stato recepito in tempo (vorrei sperare) ed io ed un paio di colleghi siamo rimasti con un palmo di naso.

La soluzione (pratica): armato di santa pazienza e di magico reflector, ho ravanato un bel po’ nel codice di Windows Live Writer ed ho scoperto che la magica funzionalità era a qualche API di distanza. Da lì è stato poi semplice: ho referenziato le giuste DLL, creato le 10 righe di codice necessarie per fare la magia e ho creato uno URI protocol handler (wlw://) per invocare il codicillo magico. Il tutto condito di un installer ed una UI frichigna, che poi in realtà altro non è che una semplice animazione visto che scaricare il post via webservice non è una delle operazioni più veloci del mondo ed ho dovuto renderla asincrona. Tutto qui? Non proprio. Nel momento in cui ho testato il plugin sul mio PC in ufficio per testare che tutto funzionasse su un PC “vergine”, ho scoperto che diverse versioni di DLL rendevano lo sforzo vano: da lì l’idea di invocare le stesse API usando la reflection: sicuramente meno safe, ma funziona e sono contento così. Dal lato server per esporre la funzionalità basta inserire un link della forma wlw://hostname.com/?postid=numeroPost per i post o wlw://hostname.com/?pageId=numeroPagina per le pagine.

Seguono un paio di screenshot che non renderanno sicuramente giustizia al lavoro svolto :

Plugin1

 Plugin2

Un paio di note:

  1. il plugin, misteriosamente, non funziona su x64. Non avendo un PC x64 nelle immediate vicinanze, non ho nessuna possibilità di rimediare. FIXED
  2. il plugin potrebbe non funzionare correttamente se con WLW si gestiscono più blog sullo stesso PC (working on a fix, visto che la cosa interessa direttamente ) FIXED
  3. lo stesso è scaricabile dalla pagina download.works
  4. infine il nobel-worth-plugin è certificato works on my machine, use at your own risk; se lo usate, fatemi la cortesia di dirmi brevemente se funziona

-enjoy