Windows Form e Setup

lunedì 11 luglio 2005 - 15.54

astroman Profilo | Junior Member

Ho provato (e riprovato e riprovato...) a creare un programma di setup per il mio progetto, un ibrido m'è venuto fuori, questo è vero...solamente che ho qualche problema concettuale a settare la giusta directory per accedere al db access.
Cerco di spiegarmi meglio: il mio caso reale è che ho quest'applicativo in cui ho come db access, e vorrei fare in modo che durante l'installazione, se l'utente decide di installare il programma su una cartella differente da quella di default venga settato a da qualche parte, che ne so sul registro di sistema, dove vado a leggere e creo la mia stringa di connessione al DB...
Spero di essermi fatto capire...
Idee e suggerimenti?!?

Brainkiller Profilo | Guru

Ciao,
come ben sai il sistema di Setup di Visual Studio .NET non è molto avanzato. Io non l'ho mai usato molto. Sul sito c'è un articolo di Marco che ti spiega un po' come funziona. Nella versione di Visual Studio .NET 2005 è stato migliorato notevolmente.

So che nel sistema di setup corrente puoi creare delle Custom Action in cui fai partire determinate operazioni che vuoi tu.

Il problema è, il database ce l'hai già dentro il pacchetto o viene creato solo successivamente ? In entrambi i casi io ti consiglierei di metterlo nella stessa cartella del software in modo che lo puoi aprire con facilità, eventualmente se lo vuoi far spostare all'utente fai una mascherina con la cartella di destinazione fai un File.Move e poi scrivi nel Registry la locazione.

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

astroman Profilo | Junior Member

>Ciao,
>come ben sai il sistema di Setup di Visual Studio .NET non è
>molto avanzato. Io non l'ho mai usato molto. Sul sito c'è un
>articolo di Marco che ti spiega un po' come funziona. Nella versione
>di Visual Studio .NET 2005 è stato migliorato notevolmente.
>
>So che nel sistema di setup corrente puoi creare delle Custom
>
>Il problema è, il database ce l'hai già dentro il pacchetto o
>viene creato solo successivamente ? In entrambi i casi io ti
>consiglierei di metterlo nella stessa cartella del software in
>modo che lo puoi aprire con facilità, eventualmente se lo vuoi
>far spostare all'utente fai una mascherina con la cartella di
>
>ciao
>
>David De Giacomi
>Microsoft MVP
>http://blogs.dotnethell.it/david/

E si purtroppo ho visto che non è molto avanzato, cmq fà esattamente al caso mio, dato che devo fare un setup molto "scarno".In ogni caso il DB è già dentro al programma ed ho fatto che di default debba installarsi sotto la cartella "Program Files\NomeProgramma" che gestissce VS.NEt direttamente il la creazione correttamente...è il discorso della personalizzazione che non riesco a capire come farla...hai qualche consiglio?Non ho capito molto bene come farla installare nella stessa cartella software di installazione del programma...forse sto sbagliando qualche passaggio però...

AntCiar Profilo | Expert

Ciao, io di solito uso fare in questo modo:
faccio installare dal Setup il database nella stessa cartella in cui installo il programma (indipendentemente se è quella di default o viene scelta dall'untente).

All'interno dell'applicazione quando devo settare la stringa di connessione ad ogni apertura, faccio riferimento alla variabile Application.StartUpPath, che mi restituisce il percorso di avvio dell'applicazione. A questa aggiungo "\nomeDb.Mdb" ed il gioco è fatto.

Spero di essere stato chiaro e di aiuto
Ciao

astroman Profilo | Junior Member

>Ciao, io di solito uso fare in questo modo:
>faccio installare dal Setup il database nella stessa cartella
>in cui installo il programma (indipendentemente se è quella di
>default o viene scelta dall'untente).
>
>All'interno dell'applicazione quando devo settare la stringa
>di connessione ad ogni apertura, faccio riferimento alla variabile
>Application.StartUpPath, che mi restituisce il percorso di avvio
>dell'applicazione. A questa aggiungo "\nomeDb.Mdb" ed il gioco
>è fatto.
>
>Spero di essere stato chiaro e di aiuto
>Ciao
>
>

Ah interessante...senti, ti secca se ti chiedo di postarmi il codice della stringa di connessione?!?
In questo modo sarei sicuro di non combinare qualche disastro...

AntCiar Profilo | Expert

Ma figurati, non c'è di che.

Ecco il codice

Public Sub setConnection(Byval PAthCompleto as string)

connectionname.connectionstring = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
"ocking Mode=1;Data Source=" & PathCompleto & ";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OL" & _
"EDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=Fa" & _
"lse;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLED" & _
"B:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't " & _
"Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"

End sub

La variabile "PathCompleto" indica il percorso completo di nomefile.mdb

Ciao

AntCiar Profilo | Expert

se dovesse dare errore in fase di esecuzione, ricrea la stringa in questo modo:

- Apri una form in progettazione
- Associagli una connesiione di tipo OleDB
- nelle proprietà, alla voce Connection string, fai "nuova connessione"
- scegli come provider Microsoft Jet
- Seleziona il file di access
- Fai Ok

A questo punto ti ha creato la connessione. Dagli un nome facile da ricordare.

Vai nel "Codice generato da progettazione di windowsFor" e cerca la tua connessione. Copiati tutta la connection string e sostituisci il percorso che porta con una variabile in cui glielo passi tu

saluti



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