-
Site Sections
-
|
-
Posts
-
83
-
Comments
-
165
-
Trackbacks
-
11
-
novembre 2006 Blog Posts
-
-
-
Scorrendo il registro...con C++
-
Siamo quasi alla fine, il progetto di setup
è quasi pronto (fase di test ) e quindi ho un po' di tempo per postare un po' di
codice. Come dicevo nel mio ultimo post se si dovesse essere nella condizione
di dover disinstallare una vecchia versione della propria applicazione o
comunque una generica applicazione esiste una chiave nel registro di
sistema che espone il comando, da eseguire dal prompt, che lancia
l'uninstall dell'applicazione.
Giusto per gradire ecco il codice in C++ che esegue questa
operazione
HKEY uninstallKey = NULL;
LONG lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", NULL, KEY_ENUMERATE_SUB_KEYS, &uninstallKey);
if (lResult != ERROR_SUCCESS) return; DWORD appKeyIndex = 0; TCHAR appKeyName[256]; DWORD appKeyLength = sizeof(appKeyName);
while (lResult = RegEnumKeyEx( uninstallKey, appKeyIndex++, appKeyName, &appKeyLength, NULL, NULL, NULL, NULL)) != ERROR_NO_MORE_ITEMS) { appKeyLength = sizeof(appKeyName);
if (lResult != ERROR_SUCCESS) continue;
HKEY appKey = NULL;
lResult = RegOpenKeyEx( uninstallKey, appKeyName, NULL, KEY_QUERY_VALUE, &appKey);
if (lResult == ERROR_SUCCESS) { TCHAR displayNameValue[256]; DWORD displayNameValueLength = sizeof(displayNameValue);
lResult = RegQueryValueEx( appKey, _T("DisplayName"), NULL, NULL, (LPBYTE)displayNameValue, &displayNameValueLength);
if (lResult == ERROR_SUCCESS && APPLICATION_NAME == displayNameValue) { TCHAR cmd[256]; DWORD cmdValueLength = sizeof(displayNameValue);
lResult = RegQueryValueEx( appKey, _T("UninstallString"), NULL, NULL, (LPBYTE)cmd, &cmdValueLength); if (lResult == ERROR_SUCCESS) ExecCmd(cmd,true); }
try { RegCloseKey(appKey);} catch (...) {} } }
try { RegCloseKey(uninstallKey); } catch (...) { }
Anche se il c++ è il mio primo amore, e il primo amore non
si scorda mai, ho come l'impressione che utilizzando le classi del
framework sia molto più semplice...proverò!!!
...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ lunedì 27 novembre 2006 16:36 |
-
Disinstallare...prima di installare!
-
Oramai è un incubo, me lo sogno di notte!
Cosa?!? Ma il progetto di setup che sto *cercando* di creare... Non sto ad
elencarvi i requisiti e i prerequisiti che deve soddisfare/installare perchè
dovrei scrivere un manuale!
Non lasciate (ve ne prego) commenti del tipo
"...ma utilizza ClickOnce...", "...ma è così facile con Visual Studio..."!
Abbiate pietà  Vi dico solo che l'intero progetto di setup è
scritto in C++ ed è, per non so quale ragione, tutto a riga di comando
(ovviamente su richiesta del cliente)...ebbene sì, a volte si torna indietro
invece di andare avanti !!!
Comunque tra le altre (mille ) cose che l'installazione
deve fare è quella di verificare eventuali versioni precedenti
dell'applicazione, disinstallarle senza la minima interazione con l'utente (?)
per poter poi installare la versione "definitiva".
Soluzione: Nel registro di sistema, sotto la chiave
HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Uninstall
c'è l'elenco di tutte le applicazioni presenti sulla macchina che prevedono la
possibilità di essere disinstallate. Trovata (e questo è un primo problema
, "cliccare per credere") la "cartella/chiave"
relativa alla nostra applicazione, tra le chiavi del registro disponibili,
dovrebbe esserci la chiave UninstallString. Il valore di
questa chiave non è altro che il comando da lanciare dal prompt per
disinstallare l'applicazione.
...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ venerdì 24 novembre 2006 13:50 |
-
Management (WMI) Extensions per Visual Studio
-
Scrivendo la firma dinamica per Happy Sign
richiesta da Igor, utilizzando WMI per reperire alcune
informazioni relative alla configurazione del proprio pc, mi sono imbattuto
in questo componente. Non l'ho nemmeno scaricato, ma
da quanto riporta la documentazione online dovrebbe aggiungere due
nuovi nodi allo strumento Server Explorer di Visual Studio, per la
gestione delle classi WMI e dei suoi eventi...
La segnalazione era dovuta , anche se il componente è sicuramente datato (le "extensions" sono per
Visual Studio 2003, non so se è compatibile con VS 2005 o se ne esiste una
versione adatta)! Tempo per testarlo non ne ho (non sono ai livelli di Lorenzo, ma poco ci manca), quindi se qualcun'altro
l'ha già provato o ha modo di provarlo...insomma fatemi sapere! ...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ lunedì 20 novembre 2006 16:11 |
-
Red, Green, Refactor...
-
Non avete capito di cosa
sto parlando? Vuol dire che non avete seguito il suggerimento del mio post precedente , o peggio ancora non seguite il mio blog , ma questo, allora, è un altro
discorso.
Comunque per tornare a noi, nel titolo ho
semplicemente riassunto quello che, in prima battuta, mi è sembrato essere lo
scheletro su cui si basa TDD. Per meglio comprendere quello che voglio dire
riporto (virgolettando) uno stralcio dell'articolo da cui ha
preso inizio la mia curiosità verso questa nuova metodologia di
sviluppo:
"...
- Write a test.
- Run the test. It fails to compile because the
code you're trying to test doesn't even exist yet! (This is the same
thing as failing.)
- Write a bare-bones stub to make the test compile.
- Run the test. It should fail. (If it doesn't, then the test
wasn't very good.)
- Implement the
code to make the test pass.
- Run the test. It should pass. (If it
doesn't, back up one step and try again.)
- Start over with a new test!
..."
Ancora non si è capito a cosa mi riferisco con
'Red" e "Green"? Non credo proprio... ...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ venerdì 17 novembre 2006 17:53 |
-
Test Driven Development...iniziamo?
-
Su suggerimento di Emanuele (thanks) sto iniziando a valutare la possiblità di
utilizzare questa metodologia (TDD) nello sviluppo delle mie applicazioni. La
scelta di questa "inversione di tendenza" (proprio di inversione si tratta ), secondo il mio punto di vista, va
pesantemente ponderata anche perchè sono abbastanza legato al famoso detto
"...chi lascia la strada vecchia per la nuova...". Partendo dal presupposto,
però, che un nuovo punto di vista non fa mai male (anzi credo che sia
proprio attraverso il confronto con persone/metodologie differenti che nascono
le cose migliori) mi sono deciso almeno a "documentarmi"...
Lo scopo di questo post è semplicemente fare da tramite e
segnalarvi lo starting point che mi è stato suggerito...Test Drive Development in .NET L'articolo è assolutamente
introduttivo, ma presenta le fondamenta sulle quali si
basa questa metodologia di sviluppo. E' secondo me un buonissimo punto di
partenza...dato che ha rovesciato completamente la mia visione delle cose è
ancora "instabile" nella mia mente ed è ancora in fase di assimilazione . Ogni commento a riguardo sarebbe,
quindi, assolutamente poco opportuno anche perchè dettato semplicemente da
sensazioni...l'unico modo per poter essere più consistente nelle mie
affermazioni, come al solito, sarà quello di applicare questa metodologia ad un
caso reale. Solo dopo potrò essere più preciso a riguardo.
Che altro dire...ai prossimi post l'ardua sentenza!!!
...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ mercoledì 15 novembre 2006 10:43 |
-
Metodologia SUPER-Agile???
-
Premetto che non è il
mio modo di lavorare e credo che non utilizzerò mai questo tool se non
sotto tortura ...ma in certe situazioni super-critiche, ci vogliono delle
metodologie super-agili... ...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ venerdì 10 novembre 2006 14:09 |
-
Cos'è Grasshopper?
-
Grasshopper è un
plugin per Visual Studio .Net, che permette di sviluppare, debuggare e
"deployare" WebApps e WebServices su qualsiasi piattaforma
Java... ...almeno da quello che mi è sembrato di intuire a prima
(s)vista!
Da
verificare!!! ...comunque il link è questo... Qualunque
feedback a riguardo è assolutamente gradito  ...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ giovedì 9 novembre 2006 17:53 |
-
Le estensioni per rendere sicuro FireFox
-
Sul blog del centro CERIAS dell'Università di Purdue sono elencate le
11 estensioni che rendono FireFox un browser veramente sicuro. Riporto i
link alle varie extensions...per una breve descrizione rimando alla fonte di questa informazione:
...sovvertiamo le gerarchie...
powered by IMHO 1.3
-
posted @ mercoledì 8 novembre 2006 11:29 |
-
|
-
Archives
-
|