n° 219
Novembre 2017
Dicembre 12, 2017, 11:40:04 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Windows Installer: resiliency  (Letto 27977 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Hyde
Global Moderator
Hero Member
*****

Karma: +47/-8
Scollegato Scollegato

Messaggi: 3277


I am a man who walks alone


Mostra profilo WWW
« inserita:: Aprile 11, 2007, 04:38:37 »

Come da oggetto, sto litigando con questa magnifica feature inclusa nei pacchetti di installazione creati con windows installer.

Di per sé la possibilità di recuperare l\'applicazione anche se l\'utente ha distrattamente cancellato alcuni componenti fondamentali è molto utile, se però fosse flessibile in base alle esigenze del programmatore.
La mia esigenza è quella di poter scegliere quali file devono essere resilient. Ho notato infatti che WI ha qualche problema di gestione dei files che non hanno un numero di versione. Su di essi, infatti, il controllo viene fatto tramite hash o data di creazione/modifica ed in base a quello viene deciso se sostituirli.

La mia app, però, maneggia in modo particolare alcuni file unversioned e questo provoca, al successivo lancio dell\'app, l\'apertura automatica del WI che ripara automaticamente l\'applicazione copiando i file originari del pacchetto... E questo non è cosa buona.

Mi sono scartebbellato tutta l\'msdn alla ricerca di un qualcosa che mi aiutasse ma ho trovato ben poco, e quel poco non funziona come dovrebbe.

L\'articolo sul quale mi sono soffermato, dopo tanto peregrinare è questo: http://support.microsoft.com/kb/290997/en-us
In esso si dice:
Citazione

If you do not want a file to be resilient, you can leave the KeyPath information off of a component. This causes the file not to be resilient. Microsoft does not recommend that you do this. If you leave the KeyPath information off of a component, you cannot advertise that component. Advertising uses the KeyPath information of a component to activate the installation of the advertised component. The Windows Logo specification states that a package must be able to be advertised to meet the specification standards. Instead of leaving the KeyPath information off of a component, Microsoft recommends that you use a component with multiple files. The KeyPath information for that component can then point to a file to which resiliency can be applied.


Bene.. mi son detto, anche se microsoft non lo raccomanda  cancello i valori di KeyPath della tabella Component per tutti i file per i quali non ho necessità di reinstallazione e dovrebbe andare.
Invece, ovviamente, no!

Non riuscendo a capire come applicare la seconda possibilità che mi viene offerta, ovvero applicare più componenti ad uno stesso file, ho deciso di postare qui nella speranza che qualcuno abbia qualche idea sul come poter raggiungere il mio scopo!!

Grazie in anticipo....




Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
http://myitside.blogspot.com
Hyde
Global Moderator
Hero Member
*****

Karma: +47/-8
Scollegato Scollegato

Messaggi: 3277


I am a man who walks alone


Mostra profilo WWW
« Risposta #1 inserita:: Aprile 11, 2007, 09:33:32 »

Citazione
Non riuscendo a capire come applicare la seconda possibilità che mi viene offerta, ovvero applicare più componenti ad uno stesso file, ho deciso di postare qui nella speranza che qualcuno abbia qualche idea sul come poter raggiungere il mio scopo!!


Chissà perché quasi sempre dopo aver postato nel forum ho l\'illuminazione (in questo caso però non pienamente risolutiva).... Bah, effetto placebo?!  Felice

Vabbé, tralasciando queste sciocchezze son riuscito a capire cosa l\'articolo dell\'MSDN preso a riferimento voleva dirmi: crea un(o più d uno a seconda delle esigenze) componente fake, versioned, che sarà il componente di riferimento per tutti i file unversioned inclusi nel progetto. Questo componente sarà preso come riferimento dall\'msi. Finché questo componente manterrà la stessa versione anche cancellando i files ad esso collegati l\'utility di self repair non si attiverà.

Con questo meccanismo posso fare tutti i giochi che voglio con i componenti unversioned senza che nessuno venga tirato in ballo.

La soluzione trovata potrebbe essere definitiva se non fosse per un piccolo (ironico) dettaglio: se l\'utility di self repair si lancia a causa di un altro motivo, anche se il componente fake non è cambiato, essa ripara anche gli eventuali files unversioned collegati ad esso e che non corrispondono più alle caratteristiche originarie.
La mia domanda è: per quale cavolo di motivo devi essere così invasivo installer dei miei stivali?

Proseguo le prove, le ricerche e le bestemmie in attesa di qualcuno che possa offrirmi un po\' di conforto.
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
http://myitside.blogspot.com
Hyde
Global Moderator
Hero Member
*****

Karma: +47/-8
Scollegato Scollegato

Messaggi: 3277


I am a man who walks alone


Mostra profilo WWW
« Risposta #2 inserita:: Aprile 12, 2007, 09:18:41 »

Continuo con i tentativi di autorisoluzione del problema.

Approfondendo il discorso \"componenti legati\" ho notato che ho maggiori vantaggi utilizzando il fake componente o uno reale come companion file degli altri file unversioned. In questo modo riesco a gestire anche gli aggiornamenti su di essi avendo come riferimento la versione del file di appoggio.

Pian pianino sto arrivando alla fine del tunnel, ma ancora non ci sono. Avendo trovato questi sistemi per controllare il servizio di self repair in modo migliore ora sto cominciando ad essere esigente e quindi voglio che questa feature si comporti bene.

Spiego lo scenario in cui ho ancora qualche problema:

Installo un minor upgrade del mio prodotto seguendo le indicazioni presentate sull\'MSDN ( cambio il product code, lascio gli stessi compenent id e upgradecode) che aggiorna proprio il companion file e tutti i suoi associati.
WI e l\'utility di self repair però non adotta il comportamento giusto in caso di problemi.

1) Se cancello i file associati e costringo l\'utility di self repair ad aggiustare il pacchetto essa ripara tutto tranne quei file perché giustamente nel paccheto originale il companion file ha una versione precedente.

2) Se cancello il companion file aggiornato l\'utility di self repair ripristina quello precedente.

Seguendo la logica, però, il self repair dovrebbe prendere in considerazione il fatto che i file sono stati aggiornati e ripristinarli prendendoli dall\'installer dell\'upgrade, cosa che invece non fa.

Sempre in attesa di conforto.. continuo con gli studi.
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
http://myitside.blogspot.com
LucaTo
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 1


Mostra profilo E-mail
« Risposta #3 inserita:: Marzo 20, 2011, 01:21:56 »

Ciao,
dopo aver vagato invano su internet per giorni e giorni, sono approdato finalmente alla tua discussione.
Non capisco come mai ci sia così poco materiale in rete; caspita, prima di trovare il tuo articolo mi sentivo l'unico al mondo ad avere questo problema!

Puoi cortesemente indicarmi se (e come) hai risolto? Anche solo tramite link o fornendomi un'idea di che cosa cercare...

Mi sarebbe di grande conforto una tua risposta! :-)

Luca
Registrato
Hyde
Global Moderator
Hero Member
*****

Karma: +47/-8
Scollegato Scollegato

Messaggi: 3277


I am a man who walks alone


Mostra profilo WWW
« Risposta #4 inserita:: Aprile 20, 2011, 01:07:00 »

Ciao LucaTo, i miei studi ele mie soluzioni si sono fermate a questo post, nel senso che ho cercato di farmi andare bene le soluzioni che avevo trovato usando quindi i companion files..
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
http://myitside.blogspot.com
Hyde
Global Moderator
Hero Member
*****

Karma: +47/-8
Scollegato Scollegato

Messaggi: 3277


I am a man who walks alone


Mostra profilo WWW
« Risposta #5 inserita:: Settembre 21, 2011, 10:22:58 »

Giusto per concludere il discorso iniziato tanto tempo fa, mi è capitato sotto mano questo articolo scritto direttamente da casa Microsoft che tratta l'argomento ed offre la soluzione madre al problema/feature del self-repair.

La soluzione consiste, brevemente, nel togliere il valore al campo KeyPath dalla tabella Component dello msi che altrimenti contiene il riferimento al file originale.

Tutto qui.
Registrato

I Moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
http://myitside.blogspot.com
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines