+ Rispondi al Thread
Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 18 su 18

Discussione: InnoSetup: Controllare presenza programma sia 32 sia 64 bit

  1. #11
    L'avatar di BLUES
    BLUES non è in linea Scribacchino
    Luogo
    ROMA
    Post
    1,306
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Ma perché mai il tuo programma fatto in VB.NET dovrebbe avere bisogno del Runtime di Access??
    Non ha senso...

    A meno che non sia stato TU ad 'istruire' il tuo programma in tal senso.
    L'hai fatto?

    Quale driver/provider usi ?
    Infatti come detto da Brontolo che mi ha illuminato effettivamente non era necessaria ACCESS e che stavo solo perdendo tempo per colpa di OS 64bit e che funge soltanto da 32.

    grazie ancora ora ho un quadro molto chiaro.

    alla prossima
    BLUES

  2. #12
    L'avatar di BLUES
    BLUES non è in linea Scribacchino
    Luogo
    ROMA
    Post
    1,306
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Ma perché mai il tuo programma fatto in VB.NET dovrebbe avere bisogno del Runtime di Access??
    Non ha senso...

    A meno che non sia stato TU ad 'istruire' il tuo programma in tal senso.
    L'hai fatto?

    Quale driver/provider usi ?
    Adesso ho capito cosa intendi per driver/provider che mi ha incuriosito, visto che, disistallando Access, dal vb.net non partiva più a causa dell'errore che dice:

    Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato nel computer locale.

    ho fatto ricerche su google ma ancora non riesco a risolvere la questione, più o meno dovrebbe andare con questo codice:

    codice:
            Dim DBconnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\QRM.accdb;Encrypt Password=False;Mask Password=False"
            Dim myoledbConn As New OleDbConnection(DBconnString)
    
            Try
                myoledbConn.Open()
                '... Operazioni sulla base dati
            Catch ex As Exception
                'In caso di errore sulla connessione/operazioni sulla base dati
            Finally
                myoledbConn.Close()
                myoledbConn.Dispose()
            End Try
    cosa devo scrivere su Operazioni sulla base dati? e anche in caso di errore sulla connessione/operazioni?

    mi potete dare una diritta? Per me è una cosa tutta nuova...

    grazie anche da parte di Brontolo voglio risolvere questa cosa senza bisogno nessuna installazione di Access anche se Runtime.
    BLUES

  3. #13
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,087
    Quote Originariamente inviato da BLUES Visualizza il messaggio
    Adesso ho capito cosa intendi per driver/provider che mi ha incuriosito, visto che, disistallando Access, dal vb.net non partiva più a causa dell'errore che dice:

    Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato nel computer locale.
    La mia domanda era volta proprio a capire questo.

    Quindi non è il runtime di Access che ti serve installare, ma questo:
    Download Driver di Office System 2007: Data Connectivity Components from Official Microsoft Download Center
    https://www.microsoft.com/it-it/down....aspx?id=23734

    Quote Originariamente inviato da BLUES Visualizza il messaggio
    ho fatto ricerche su google ma ancora non riesco a risolvere la questione, più o meno dovrebbe andare con questo codice:

    codice:
            Dim DBconnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\QRM.accdb;...."
    Andrebbe bene se tu usassi la versione precedente del database di Access, quella con estensione .MDB;

    Se non vuoi avere problemi di installazione e di compatibilità (come chiedi), puoi convertire il tuo database .ACCDB in .MDB così non ti serve installare nulla, se non la tua applicazione.
    Inoltre, dato che il JET 4.0 è solo a 32 bit, non si pone il dilemma 32 o 64 bit (come invece avviene con l'ACE.OLEDB).

    A te la scelta.
    Personalmente ho sempre distribuito database MDB.

  4. #14
    L'avatar di BLUES
    BLUES non è in linea Scribacchino
    Luogo
    ROMA
    Post
    1,306
    Quote Originariamente inviato da gibra Visualizza il messaggio
    La mia domanda era volta proprio a capire questo.

    Quindi non è il runtime di Access che ti serve installare, ma questo:
    Download Driver di Office System 2007: Data Connectivity Components from Official Microsoft Download Center
    https://www.microsoft.com/it-it/down....aspx?id=23734
    Con Access Runtime funziona ma preferisco prendere questo che mi hai consigliato tu che occupa anche molto meno spazio ma ora come ora credo proprio che non mi è più necessaria nessuna installazione di Access visto che funziona tutto perfettamente però per sicurezza voglio mostrarvi il codice che ho scritto se per voi va bene o no:

    codice:
            Dim DBconnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Program Files\Quiz\QRM.mdb;Encrypt Password=False;Mask Password=False"
            Dim myoledbConn As New OleDbConnection(DBconnString)
    
            Try
                myoledbConn.Open()
                '... Operazioni sulla base dati
                Me.QRMultiplaTableAdapter.Fill(Me.QRMDataSet.QRMultipla)
    
                Dim ListCounts As Integer = QRMultiplaBindingSource.Count
                Number = Rnd.Next(0, ListCounts)
                QRMultiplaBindingSource.Position = Number
    
                Dim Index As Integer = ListBox1.FindString(Number)
                ListBox1.SelectedIndex = Index
    
                Dim Path As String = DirectCast(ListBox1.SelectedItem, MyListItem).NomeFileCompleto
                PictureBox1.URL = Path
    
            Catch ex As Exception
                'In caso di errore sulla connessione/operazioni sulla base dati
                Me.QRMultiplaTableAdapter.Fill(Me.QRMDataSet.QRMultipla)
    
                Dim ListCounts As Integer = QRMultiplaBindingSource.Count
                Number = Rnd.Next(0, ListCounts)
                QRMultiplaBindingSource.Position = Number
    
                Dim Index As Integer = ListBox1.FindString(Number)
                ListBox1.SelectedIndex = Index
    
                Dim Path As String = DirectCast(ListBox1.SelectedItem, MyListItem).NomeFileCompleto
                PictureBox1.URL = Path
    
            Finally
                myoledbConn.Close()
                myoledbConn.Dispose()
            End Try
    va bene così?

    Andrebbe bene se tu usassi la versione precedente del database di Access, quella con estensione .MDB;

    Se non vuoi avere problemi di installazione e di compatibilità (come chiedi), puoi convertire il tuo database .ACCDB in .MDB così non ti serve installare nulla, se non la tua applicazione.
    Inoltre, dato che il JET 4.0 è solo a 32 bit, non si pone il dilemma 32 o 64 bit (come invece avviene con l'ACE.OLEDB).

    A te la scelta.
    Personalmente ho sempre distribuito database MDB.
    Accetto il tuo consiglio e ho convertito in formato MDB

    Grazie
    BLUES

  5. #15
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,087
    Il database NON va installato in quel percorso.
    Poteva andar bene fino a Windows XP, ma di Vista in poi rischi di avere problemi in quanto le applicazioni nonhannopiù i diritti di scrittura nella cartella ProgramFiles.

    Ti consiglio di documentarti su SpecialFolder:

    Enumerazione Environment.SpecialFolder (System)
    http://msdn.microsoft.com/it-it/libr...code-snippet-2

  6. #16
    L'avatar di BLUES
    BLUES non è in linea Scribacchino
    Luogo
    ROMA
    Post
    1,306
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Il database NON va installato in quel percorso.
    Poteva andar bene fino a Windows XP, ma di Vista in poi rischi di avere problemi in quanto le applicazioni nonhannopiù i diritti di scrittura nella cartella ProgramFiles.

    Ti consiglio di documentarti su SpecialFolder:

    Enumerazione Environment.SpecialFolder (System)
    http://msdn.microsoft.com/it-it/libr...code-snippet-2
    a me che uso Win7 ha sempre funzionato, ad un altro Win8 ha pure funzionato ma voglio seguire il tuo consiglio. Dimmi soltanto dove dev'essere installato nel migliore dei modi? e al resto ci penso io

    come esempio uso questo codice per risolvere:

    codice:
    AppDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System)
    
            Dim DBconnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + AppDirectory + "\Quiz\QRM.mdb;Encrypt Password=False;Mask Password=False"
    questo perché va nella cartella System32 ma se mi dici che è meglio nella cartella C: o nella cartella Documenti, posso comodamente modificare, oppure semplicemente .ProgramFilesX86...
    Ultima modifica di BLUES; 30-01-2015 12:08 
    BLUES

  7. #17
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,087
    Il DOVE vada installato il database dipende dal tipo di applicazione:

    - se è in ambiente DESKTOP (locale) e mono-utente la puoi installare nella cartella \AppData\MyApp\ dell'utente
    - se è in ambiente DESKTOP (locale) e multi-utente allora si usa la \ProgramData\MyApp\
    - se è in ambiente LAN (client/server) si usa una cartella di rete condivisa, che sia in un disco diverso dal C:\, ad esempio D:\MyApp\


    Sicuramente non va installato nelle cartelle di sistema (Program Files, System32, SysWOW64, ecc.), perché se poi distribuisci la tua applicazione a terzi NON puoi sapere a priori se l'utente che la esegue ha i diritti necessari.

  8. #18
    L'avatar di BLUES
    BLUES non è in linea Scribacchino
    Luogo
    ROMA
    Post
    1,306
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Il DOVE vada installato il database dipende dal tipo di applicazione:

    - se è in ambiente DESKTOP (locale) e mono-utente la puoi installare nella cartella \AppData\MyApp\ dell'utente
    - se è in ambiente DESKTOP (locale) e multi-utente allora si usa la \ProgramData\MyApp\
    - se è in ambiente LAN (client/server) si usa una cartella di rete condivisa, che sia in un disco diverso dal C:\, ad esempio D:\MyApp\


    Sicuramente non va installato nelle cartelle di sistema (Program Files, System32, SysWOW64, ecc.), perché se poi distribuisci la tua applicazione a terzi NON puoi sapere a priori se l'utente che la esegue ha i diritti necessari.
    Ho capito grazie di tutto, ora funziona tutto perfettamente.

    Alla prossima.
    BLUES

+ Rispondi al Thread
Pagina 2 di 2 primaprima 12

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi