Pacchetto installazione VS2008 e update

sabato 23 maggio 2009 - 12.11

teo256 Profilo | Newbie

Buongiorno a tutti,
sono al mio primo post su questo utilissimo forum. Fino ad oggi ho sempre trovato risposte ai miei quesiti di programmazione, ma oggi mi sono imbattuto in una cosa un pò strana.
Ho creato una "piccola" applicazione gestionale per la mia azienda (ddt, fatture, ordini, gestione produzione, etc.). Ho sempre utilizzato la pubblicazione dell'applicazione (per distribuirla nei vari client) e mi risultava comodissima la funzione di auto-update (cioè che io rilasciavo una nuova build e al successivo riavvio dell'applicazione ogni client si autoaggiornava). Spero di essere chiaro...
Oggi, per una esigenza dovuta ad una nuova funzione dell'applicazione, ho dovuto adottare l'uso del pacchetto di installazione (.msi e setup.exe). Questo perchè ho bisogno che l'applicazione venga installata in un percorso prestabilito (c:\Programmi\xxxx\yyyy).
Ora, è possibile utilizzare sempre la funzione di autoaggiornamento?
Oppure è possibile tornare ad usare la pubblicazione dell'applicazione ma con la possibilità di specificare il percorso di installazione?

Grazie in anticipo a tutti quelli che risponderanno.

Ciao.

Jeremy Profilo | Guru

Ciao Matteo.
Se il software che hai utilizzato per creare il pacchetto di distribuzione, non prevede una funzione di autoaggiornamento, devi implementarla tu da codice....ovvero, crei una funzione che controlla la presenza di aggiornamenti sul sito e, qualora ci fossero li scarica sul pcclient.

>Oppure è possibile tornare ad usare la pubblicazione dell'applicazione ma con la possibilità di specificare il percorso di installazione?
No. ClickOnce non prevede la possibilità di indicare il percorso di installazione.


Facci sapere...
Ciao

freeteo Profilo | Guru

Ciao,
confermo quanto detto da Jeremy, non puoi specificare tantissime cose con CLickonce, soprattutto perchè gestisce lui in automatico Update e soprattutto Rollback dell'applicazione, quindi si arrangia per i percorsi.
Quello che puoi controllare da codice di Clickonce è il fatto di comandare un Update, ma cmq deve essere installata tramite quella tecnologia, oddio, non l'ho mai provato, ma dicono che tu possa fare un misto delle 2:
http://books.google.it/books?id=31Vfys04RjgC&pg=PA604&lpg=PA604&dq=clickonce+update+windows+installer&source=bl&ots=1lKzN3a95K&sig=Vzqqls_NCM4md8RjfyQ_hCYozz4&hl=en&ei=U5UaSpvzPJCZkQXNiiw&sa=X&oi=book_result&ct=result&resnum=4
guarda il paragrafo "TIP"

Ma tu perchè devi avere un determinato path di installazione...non puoi gestire da codice il path dei file che ti servono dentro all'applicazione e lasciarla come "installata" nel sistema senza sapere dove precisamente?

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

teo256 Profilo | Newbie

Grazie ad entrambi per la risposta.
Premesso che preferirei una distribuzione ClickOnce, l'unica necessità che ho è quella di "conoscere" a livello di codice il path dell'eseguibile del programma. Questo mi serve per un edit del registro di sistema. Quindi potrei tranquillamente tenere tale distribuzione però avrei bisogno di sapere come inserire nel codice il path dell'eseguibile dell'applicazione.

P.S.: se non si è capito, non sono un programmatore esperto....nè intermedio

Grazie.

freeteo Profilo | Guru

>Premesso che preferirei una distribuzione ClickOnce, l'unica
>necessità che ho è quella di "conoscere" a livello di codice
>il path dell'eseguibile del programma. Questo mi serve per un
>edit del registro di sistema. Quindi potrei tranquillamente tenere
>tale distribuzione però avrei bisogno di sapere come inserire
>nel codice il path dell'eseguibile dell'applicazione.
il path dell'eseguibile è recuperabile sempre, io uso questo metodo che va bene per entrambi i casi:
public static string GetDataDirectory() { if (ApplicationDeployment.IsNotworkDeployed) return ApplicationDeployment.CurrentDeployment.DataDirectory; else return Application.StartupPath; }



il fatto è che cambia, quindi cosa fai, all'avvio del programma lo riaggiorni nel registro?
Non ti conviene usare un file di configurazione XML, tipo App.Config?



>P.S.: se non si è capito, non sono un programmatore esperto....nè
>intermedio
nessun problema, nemmeno io


>Grazie.
di nulla figurati, siamo qui per questo.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

teo256 Profilo | Newbie

>public static string GetDataDirectory()
>{
> if (ApplicationDeployment.IsNotworkDeployed)
>return ApplicationDeployment.CurrentDeployment.DataDirectory;
> else
> return Application.StartupPath;
>}
>

perfetto!! Adesso funziona ed ho potuto riusare ClickOnce.
GRAZIE 10000!!

Se posso approfittare, sto utilizzando la funzione
MailMessage msgMail = new MailMessage();
con le relative options per l'invio automatico di messaggi di posta con allegato un documento.
C'è la possibilità di visualizzare ed eventualmente modificare il messaggio di posta prima che venga inviato?

Grazie ancora.

freeteo Profilo | Guru

>perfetto!! Adesso funziona ed ho potuto riusare ClickOnce.
>GRAZIE 10000!!
perfetto accetta una risposta così chiudiamo il thread.


>Se posso approfittare, sto utilizzando la funzione
>MailMessage msgMail = new MailMessage();
>con le relative options per l'invio automatico di messaggi di
>posta con allegato un documento.
>C'è la possibilità di visualizzare ed eventualmente modificare
>il messaggio di posta prima che venga inviato?
dove lo vuoi visualizzare/modificare? cmq sia non è possibile fare edit/import/export in ".eml" con quelle classi purtroppo...io ho fatto qualcosa con queste: http://www.aspnetemail.com/
ma sono a pagamento, anche se devo ammettere che ne vale proprio la pena.

Cmq per altre domande apri un thread nuovo, altrimenti mischiamo gli argomenti.
Grazie.


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5