Creazione di un'istallazione (e creazione di un database su server DB ...

lunedì 29 giugno 2009 - 17.18

Luka90 Profilo | Junior Member

Salve a tutti

Intanto vorrei ringraziare tutti voi per avermi aiutato in questo progetto. Se sono riuscito a completarlo è anche merito vostro!Ho imparato un sacco di cose e molte altre mi aspettano

Detto ciò ecco l'ultima fase:
la mia applicazione, per essere distribuita, necessita di esser installata tramite una procedura di installazione. Premetto che non ho nessunissima idea di come si possa fare ciò.

Nello specifico sarebbe necessario:
- installare il framework sul pc se sprovvisto
- installare assieme al programma alcune librerie aggiuntive (messe da me nel progetto) per la connessione al database MySql e l'istallazione dei driver ODBC offerti sempre dagli sviluppatori di MySql (versione 5.1).
- Un form per la specifica dei dati di connessione al server, username e password... porta. (datinecessari per la stringa di connessione).
- Sul server specificato, creazione del database per l'applicazione.

Fatto ciò il programma dovrebbe essere in grado di funzionare!

Sò che è una cosa difficile, o almeno credo, ma vi sarei grato se saprete darmi qualche indicazione.


Luca

freeteo Profilo | Guru

Ciao,
per i pacchetti aggiuntivi puoi specificare i prerequisiti della tua applicazione:
http://blogs.dotnethell.it/freeteo/vs-2005-semplifica-il-deploy-anche-per-Crystal-Report__1190.aspx
in questo caso viene mostrato per Crystal ma il concetto è lo stesso se hai usato qualcos'altro e lo trovi dentro li.

e per le altre operazioni tipo la scelta del db etc...ti consiglio questo mio post:
http://blogs.dotnethell.it/freeteo/Far-apparire-una-Form-.net-durante-il-deploy-con-Windows-Installer__15332.aspx
dove spiego come far apparire una maschera WindowsForm .net classica, quindi con tutte le potenzialità della piattaforma.

Ciao.

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

Luka90 Profilo | Junior Member

Grazie mille Freeteo
Credo che sia proprio ciò di cui ho bisogno, dò una letta e in caso accetto la tua soluzione.

Luca

freeteo Profilo | Guru

>Grazie mille Freeteo
di nulla, siamo qui per questo

>Credo che sia proprio ciò di cui ho bisogno, dò una letta e in
>caso accetto la tua soluzione.
ok fammi sapere.
Grazie.



Ciao.

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

Luka90 Profilo | Junior Member

Ho letto e fatto tutto ma ho alcuni dubbi:
1) tutti i dati inseriti nella form che apro all'installazione, mi conviene salvarli in variabili di settaggio? (Properties.Settings.Default...)
2) Va benissimo nei Prerequisiti vi sia il framework, ma non ho trovato il modo di mettere anche le librerie che ho aggiunto al progetto, scaricate da MySql. Le implementa automaticamente? Ho solo aggiunto CrystalReport basic!
3) Durante l'installazione devo anche creare il mio DB sul server specificato! Come mi consigli di fare? :S

Grazie :)

Luca

freeteo Profilo | Guru

>1) tutti i dati inseriti nella form che apro all'installazione,
>mi conviene salvarli in variabili di settaggio? (Properties.Settings.Default...)
si esatto, puoi salvarli tramite Settings, oppure in maniera più precisa usando "Config" e "ConfigurationManager", oppure puoi anche pensare di farti un file a se stante, oppure addirittura su db, dove vai meglio insomma...tanto sei in .net puoi fare quello che va meglio per te.


>2) Va benissimo nei Prerequisiti vi sia il framework, ma non
>ho trovato il modo di mettere anche le librerie che ho aggiunto
>al progetto, scaricate da MySql. Le implementa automaticamente?
>Ho solo aggiunto CrystalReport basic!
questo non lo so, forse no...forse puoi aggiungerlo come file nel pacchetto di installazione, e poi cmq da codice andare ad installarlo...


>3) Durante l'installazione devo anche creare il mio DB sul server
>specificato! Come mi consigli di fare? :S
Fai delle query Sql usando le classi di ado.net del framework, quando hai la connection e un command ti basta fare le sintassi giuste.
Se vuoi essere più snello potresti pensare di aggiungere anche qui un file mdf che ti serve come struttura e poi tentare di fare l'attach ma io per sicurezza lavorerei con la sintassi sql.
Casomai puoi pensare di appoggiarla in qualche file di testo, che carichi sempre in quella maschera e le esegui, così te le fai fare da SQL e sei sicuro...

Ciao.

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

Luka90 Profilo | Junior Member

Grazie mille di nuovo

Farò come da te consigliato. Unica cosa che ancora mi lascia perplesso è il punto 2.
Come faccio ad aggiungere la DLL al pacchetto d'installazione?
Come faccio ad aggiungerla all'applicazione da codice?

Se mi sai rispondere, credo di aver risolto molti problemi ^_^

Grazie ancora!

Luca

freeteo Profilo | Guru

>Come faccio ad aggiungere la DLL al pacchetto d'installazione?
intanto diciamo che se l'hai referenziata a livello di applicazione dovrebbe venirti aggiunta al pacchetto da solo, per file che invece non fanno parte delle referenze, ma che vuoi aggiungere al progetto ugualmente, puoi aggiungerli come file direttamente da "TastoDX->Add File" nella root del progetto di setup


>Come faccio ad aggiungerla all'applicazione da codice?
no intendo che da codice ad esempio la vai a scompattare o fare altre operazioni come lanciare l'installazione se è un pacchetto msi...

Ciao.

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

Luka90 Profilo | Junior Member

Si hai ragione, l'ha aggiunta da solo, come pensavo (logico).

Va benissimo, la tua guida su come aggiungere la visualizzazione di una form per passare dei dati durante l'installazione è fantastica!
Unica cosa che ancora non sono riuscito a fare è che il programma una volta installato mi si aggiunga a START->TUTTI I PROGRAMMI
E sarebbe anche comodo, che ci fosse la possibilità DISINSTALLA, che invece non c'è. Si deve per forza andare per pannello di controllo.

Grazie mille per tutto

Luca

freeteo Profilo | Guru

>Si hai ragione, l'ha aggiunta da solo, come pensavo (logico).
ok, ottimo


>Va benissimo, la tua guida su come aggiungere la visualizzazione
>di una form per passare dei dati durante l'installazione è fantastica!
grazie, troppo gentile.


>Unica cosa che ancora non sono riuscito a fare è che il programma
>una volta installato mi si aggiunga a START->TUTTI I PROGRAMMI
penso che questa sia una directory che fa parte dell'enum "SpecialFolders"
http://msdn.microsoft.com/en-us/library/system.environment.specialfolder(VS.71).aspx



>E sarebbe anche comodo, che ci fosse la possibilità DISINSTALLA,
>che invece non c'è. Si deve per forza andare per pannello di
>controllo.
queste sono cose che fa il pacchetto msi d'installazione non credo tu riesca a farlo a codice...


Ciao.

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

Luka90 Profilo | Junior Member

OK!

Però, nonostante vada tutto, quando salvo in ...settings.default.stringadiconnessione
Dopo avviando il programma, nel file Config non c'è proprio nessun value corrispondente. Perchè non mi salva la stringa di connessione che creo con la famosa form aperta durante l'installazione?

MannaCC...

Luca

freeteo Profilo | Guru

Forse c'è un problema di versione, o di path, oppure semplicemente non fai "Save" delle impostazioni.
Posta il codice che lo guardiamo insieme.

Ciao.

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

Luka90 Profilo | Junior Member

Il Save lo faccio per quello non capisco dove sia l'inghippo.

Con riferimento al tuo articolo:
... protected override void OnAfterInstall(IDictionary savedState) { base.OnAfterInstall(savedState); // IMPOSTAZIONI Configurazione conf = new Configurazione(); conf.ShowDialog(); } ...

E la mia FORM Configurazione, fa:

MySqlConnectionStringBuilder connstr; public Configurazione() { InitializeComponent(); } private void btnApplica_Click(object sender, EventArgs e) { connstr.Server= txtServerMySql.Text; connstr.Port = Convert.ToUInt32(txtPort.Text); connstr.Database="nomeDB"; connstr.UserID = txtUsername.Text; connstr.Password = txtPassword.Text; Properties.Settings.Default.connstr = connstr.ConnectionString; Properties.Settings.Default.Save(); MessageBox.Show(Properties.Settings.Default.connstr); this.Close(); }

Ecco

Luca

freeteo Profilo | Guru

ciao,
secondo me le properties in quel momento non puntano al tuo programma, ma piuttosto al programma che sta eseguendo, quindi l'install.
Secondo me devi andare ad agire sul app.config dell'applicativo, quindi da li devi recuperarti il path di installazione e andare ad agire su quel config:

string pathInstallazione = this.Context.Parameters["assemblypath"]; Configuration config; config = ConfigurationManager.OpenExeConfiguration(pathInstallazione); config.AppSettings.Settings.Add("nome","valore"); ... config.Save();

Ciao.

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

Luka90 Profilo | Junior Member

Risolto!
Grazie infinite.

Luca
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5