WiX: Utilizzare Heast.exe nell’evento post build nei progetti di Visual Studio 2010

Buonasera,

Volevo condividere il modo in cui ho deciso di generare i frammenti di tipo wxs per i progetti di Setup creati con WiX utilizzando il tool Heat ottenendo al tempo stesso la compatibilità con Microsoft Team Foundation 2010 Build Service Host .

L’idea è che ogni progetto di libraria o di un eseguibile scritti in VB .NET o C# deve generare i propri frammenti wxs all’interno del proprio post build event.

Ad esempio il comando da utilizzare per generare il frammento wxs in grado di registrare una dll nella GAC è:

"$(WIX)bin\heat.exe"
file "$(TargetPath)"
-cg $(TargetFileName)
-gg
-var var.$(ProjectName).TargetDir
-srd
-dr INSTALLLOCATION
-t $(SolutionDir)HeatGAC.xslt
-out "$(SolutionDir)WiXSetup\Fragments\$(TargetFileName).wxs"

Oppure se volete registrare una TypeLibrary potete usare il comando:

"$(WIX)bin\heat.exe"
file "$(TargetDir)$(TargetName).tlb"
-cg $(TargetName).tlb
-gg
-var var.$(ProjectName).TargetDir
-srd
-dr INSTALLLOCATION
-out "$(SolutionDir)WiXSetup\Fragments\$(TargetName).tlb.wxs"

Se avete necessità di capire più in dettaglio la sintassi fatemi sapere.

Sperando vi sia utile,

Buonanotte!

Remote Open SQL

Un saluto a tutti,

da alcuni mesi ormai sto dedicando il mio tempo libero alla realizzazione di un nuovo prodotto software. Si chiama Remote Open SQL e si rivolge a coloro che per lavoro (difficilmente per divertimento… :) hanno la necessità di estrarre da SAP R/3 una gran mole di dati.

Come avrete già intuito l’argomento è tecnico ed avanzato per cui se fra di voi c’è chi vorrebbe sentire le ultime news sui miei viaggi lo invito a ripassare più tardi…

L’ora è tarda per cui vi lascio solo un breve accenno alle idee alla base del progetto.

Spesso mi capita di voler vedere i dati delle tabelle di SAP in Excel o in Access per poter rielaborare i dati. A questo scopo esistono diverse transazioni in SAP, SE11, SE16, SE16N, oppure si possono creare dei programmi che connettendosi a SAP via RFC possono richiamare il function module RFC_READ_TABLE (per vederla transazione SE37).

Questi metodi hanno tutti dei limiti, essenzialmente di velocità, di flessibilità e di scalabilità.

Il mio progetto si pone come obiettivo il superamento di tutti questi limiti e per raggiungere lo scopo ho dovuto mettere in campo tutto quello che ho imparato durante la mia, se pur breve, carriera lavorativa.

Originariamente volevo creare un software simile ad Everything che funzionasse con i file archiviati in SAP (ad esempio con quelli presenti nel KPRO) ma poi mi sono scontrato con problemi che via via mi hanno portato a concentrarmi sul primo passo necessario: la rapida estrazione di dati.

Recentemente poi ho deciso di pubblicare il mio progetto con licenza GPLv2 e quindi a breve pubblicherò il tutto in CodePlex.

Appena possibile aggiornerò questo articolo con tutti i riferimenti.

In breve quello che Remote Open SQL è in grado per ora di fare è quello di consentire all’utente di scrivere una query di tipo Open SQL e di eseguirla connettendosi a SAP via RFC.

Le sfide più grandi che ho dovuto affrontare sono state:

  1. La comprensione dei limiti del linguaggio Open SQL unito all’utilizzo delle funzioni RFC
  2. L’ottenimento della scalabilità in termini di dimensioni delle tabelle estratte (milioni di record).
  3. L’ottenimento di performance di estrazione elevate in termini assoluti (decine di milioni di record all’ora).
  4. Verificare le autorizzazioni dei singoli utenti in base alle tabelle oggetto delle query.
  5. Eliminare la possibilità di SQL injection.
  6. Ideare un sistema sufficientemente semplice per l’esecuzione delle query. Questa parte comunque è in continua evoluzione.
  7. Ridurre al minimo i passi per l’installazione.

Cosa manca? Moltissimo! Il mio è solo il primo passo per saggiare l’interesse del mercato. Ho deciso di rendere il progetto Open Source per favorirne il più possibile la diffusione e poter sperimentare personalmente le difficoltà che è necessario superare prima di poter offrire un prodotto affidabile. Inoltre mi interessa toccare tutti i passaggi della filiera: dall’ideazione, alla realizzazione prototipale (situazione odierna), alla pubblicazione, alla promozione, all’assistenza e chi lo sa … magari anche alla ricezione di qualche offerta :D

Se siete interessati al tema rimanete in contatto! Mancano pochi giorni alla prima pubblicazione di Remote Open SQL!

Aggiornamento!

Il progetto è online! Ecco il link: http://remoteopensql.codeplex.com/

Il CMS Concrete5

Salve a tutti,

ho appena messo online il mio primo sito realizzato con Concrete5: Tabia. Ho provato in precedenza Drupal, Joomla e naturalmente WordPress ma Concrete5 si è rivelato il miglior CMS che abbia provato.

E’ l’unico infatti che consente di creare in modo realmente visuale il layout delle pagine web. E’ fornito di semplici ma efficaci strumenti di editing associati a molteplici tipologie di blocchi.

In realtà ogni CMS ha particolari peculiarità che lo rendono più o meno adatto alla realizzazione di una tipologia di sito. Sarebbe in effetti scomodo realizzare un blog come quelli che si possono fare con WordPress  utilizzando Concrete5. Per l’esigenza che avevo, realizzare un sito semplice ma dal layout che fosse proprio come io lo volevo, Concrete5 si è rivelato l’ideale.

Gli altri CMS non consentono di modificare il layout dei template al volo, e questo è un grosso limite. Quasi sempre i template contengono qualche parte da rimuovere oppure mancano proprio di quel riquadro che serviva per migliorare l’usabilità del sito. Con Concrete5 si può modificare tutto in modo molto intuitivo ed il risultato è immediatamente online. Inoltre la bacheca viene utilizzata raramente e non è il luogo dove inserire i contenuti. Infatti i contenuti si inseriscono direttamente nella pagina online.

Sul sito Concrete5 potete trovare diversi AddOn. Io ho provato tutti quelli gratuiti ma sinceramente il prodotto originale dispone di tutto quello che serve ed è comodissimo dalla prima installazione.

Unica accortezza: ricordatevi di impostare il set caratteri e la collation del database MySQL a utf8 e utf8_general_ci prima di installare Concrete5 altrimenti non potrete scrivere parole in altre lingue per la mancanza dei caratteri unicode. Per farlo potete seguire la guida:

How to change table character sets / collation of a MySQL database

Everything

Un saluto a tutti,

dopo un periodo di inattività causa pigrizia, riprendo con un post informatico.

Vi segnalo il programma Everything che ho scoperto qualche giorno fa e che mi ha risolto l’annoso problema della lentezza delle ricerche dei file con Windows.

Everything indicizza i nomi dei file ad una velocità stratosferica ma è in grado di farlo solo se il filesystem è di tipo NTFS. E’ in grado di indicizzare 1.000.000 di file in circa 1 minuto, rileva qualsiasi modifica al filesystem istantaneamente ed una volta installato occupa pochissime risorse. Io l’ho testato con un filesystem di 700.000 file e ne sono rimasto favorevolmente colpito.

Il programma ha un grandissimo pregio ed un piccolo difetto: restituisce il risultato delle ricerche in modo istantaneo ma non è in grado di ricercare nel contenuto dei file.

A mio avviso dovete vedere Everything come il “Notepad” delle ricerche e demandare ad altri software la ricerca nei contenuti.

Nel frattempo sono alla ricerca dei migliori software di indicizzazione, vorrei indicizzare anche le immagini iso dei CD e dei DVD ma non ho ancora trovato quello che faccia al caso mio.

Ogni consiglio è ben’accetto.

Process And Port Analyzer

Slave a tutti,

vi segnalo questo programma che ho trovato molto utile: Process And Port Analyzer.

Ve lo segnalo per due motivi: il primo è che l’ho trovato utile per analizzare il traffico di rete in entrata ed uscita dal mio PC e capire quindi se qualche programma fosse fuori controllo, il secondo è che ho il sospetto che sia causa di alcuni dump del sistema operativo (schermate blu) che ho subito tempo fa.

Non sono certo che ne sia la causa ma dopo averlo disinstallato il problema non si è più ripresentato.

Continue reading