Setup erstellt mit VB2010 Std., Datenbank SQL Compakt - kein Zugriff erlaubt

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von SeriTools.

    Setup erstellt mit VB2010 Std., Datenbank SQL Compakt - kein Zugriff erlaubt

    Hallo,

    habe ein kleines Anwendungsprogramm geschrieben, in dem eine .sdf (SQL Compact Database) enthalten ist.

    Beim Testen aus VB mit F5 funktioniert alles bestens und habe zugriff auf die DB.

    Wenn ich das Programm aber über das Setup installiere, wird der Zugriff verweigert - siehe Bild.

    Eingebunden habe ich alles - siehe Bild 2.


    Der Connection-String:

    XML-Quellcode

    1. Data Source=|DataDirectory|\Database_SanKalkLight.sdf



    Könnt Ihr mir sagen, warum das nicht funktioniert? ... habe ich was vergessen oder grundlegend falsch gemacht?


    Viele Grüße & danke vorab!

    Michl
    Bilder
    • 100.PNG

      19,39 kB, 425×304, 93 mal angesehen
    • 101.PNG

      21,63 kB, 855×212, 85 mal angesehen
    @michl75 Kann es sein, dass Dein Studio als Admin läuft, Dein installiertes Programm jedoch nicht?
    Warum liegt die DB in einem Program File Pfad? Pack sie in einen Data-Pfad:

    VB.NET-Quellcode

    1. Dim path1 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    2. Dim path2 = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du hast recht...
    Starte ich das Programm als Administrator, hat er Zugriff auf die Datenbank.

    Das ist das erste mal, dass ich mit so einer SQL Compact arbeite...
    Muss ich da nun eine Dateiberechtigung machen oder was an der Datenbank einstellen?


    In der DB ist nichts besonderes drinnen, nur ein paar Werte über Temperaturen usw.
    Die kann ruhig im Programmverzeichnis liegen bleiben - an der ändert sich nichts. Ist also nichts gefährdet bei einem "Update" oder so.

    michl75 schrieb:

    Die kann ruhig im Programmverzeichnis liegen bleiben
    Eben nicht :!:
    Genau das bringt den Fehler.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Eben nicht :!:
    Genau das bringt den Fehler.


    Habe nun den Pfad für die Datenbank geändert:

    VB.NET-Quellcode

    1. Dim _DataFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)
    2. My.Settings.Item("Database_SanKalkLightConnectionString") = _
    3. "Data Source=" & _DataFolder & "\Database_SanKalkLight.sdf;Password=XXXXX;Persist Security Info=True"


    Habe im Setup die Datenbank unter "Ordner gemeinsame Dateien" hinterlegt (siehe Bild), wo hin sie auch beim installieren kopiert wird...

    ...aber mein Start kommt wieder "Zugriff nicht zulässig" - siehe Bild 2.


    Muss ich da noch eine Berechtigung setzen ?


    Das von Dir vorgeschlagene "CommonApplicationData" konnte ich im Setup von Visual Basiv 2010 Std. nicht finden...
    Bilder
    • 201.PNG

      22,93 kB, 435×300, 83 mal angesehen
    • 202.PNG

      14,05 kB, 635×150, 92 mal angesehen
    • 203.PNG

      16,81 kB, 194×579, 82 mal angesehen
    • 204.PNG

      7,36 kB, 376×189, 80 mal angesehen

    michl75 schrieb:

    ...aber mein Start kommt wieder "Zugriff nicht zulässig"
    Weil nach wie vor Dein Pfad nicht stimmt:
    Bilder
    • Pfad.png

      26,03 kB, 466×373, 98 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jetzt habe ich den Pfad verwendet und geht auch ned.

    VB.NET-Quellcode

    1. Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)


    was für einen Pfad soll ich den verwenden, dass die .sdf Datenbank für alle User auf dem PC erreichbar ist ?

    Das von Dir vorgeschlagene - geht auch nicht:

    VB.NET-Quellcode

    1. Dim path2 = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

    michl75 schrieb:

    und geht auch ned.
    Welche genaue Fehlermeldung?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    da ich es langsam echt graue haare bekomme :) ...

    möchte ich dich erst mal noch was fragen!


    Lege den Pfad fest auf CommonApplicationData. Das ist doch wenn ich das richtig verstanden habe > "gemeinsame Programm Dateien" oder ?

    VB.NET-Quellcode

    1. Dim _DataFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
    2. My.Settings.Item("Database_SanKalkLightConnectionString") = _
    3. "Data Source=" & _DataFolder & "\Database_SanKalkLight.sdf;Password=XXXX;Persist Security Info=True"


    Aber unterm Setup finde ich kein CommonApplicationData Ordner... Siehe Bild. Was ist davon CommonApplicationData '??

    CommonApplicationData = C:\ProgramData ??
    Bilder
    • 501.jpg

      109,82 kB, 855×574, 87 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „michl75“ ()

    michl75 schrieb:

    oder ?
    Genau weiß ich das jetzt nicht, da musst Du mal probieren.
    Beginnen würde ich mit Ordner für Anwendungsdaten des Benutzers.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!