Bonjour
Je voudrais diffuser mon programme. Il semblerait que pondre une installation avec ClickOnce soit le plus simple.

J'accède à une base de contacts Access que mon programme travaille. La base est stockée à part. Je stocke le chemin en local dans un fichier txt que j'ai fort originalement baptisé Path.txt.
Mais j'ai besoin d'indiquer au logiciel où se trouve ce fichier (ou celui de la base, tant qu'on y est).
L'intérêt du fichier txt est de ne demander le chemin à l'utilisateur qu'une seule fois lors de l'installation.

Mais voilà, ClickOnce m'installe le programme n'importe où, au fond d'AppData ou je ne sais quoi au lieu de me faire ça gentiment sous ProgramFiles.

J'ai bien tenté de prendre directement Path.txt dans le répertoire d'installation, mais impossible de donner un chemin correct :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
rivate Sub Euroline_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Dim configpath As String
        Dim mypath As String
        configpath = "..\Path.txt"
        Try
            If File.Exists(configpath) = False Then
                BaseOpenFileDialog.FileName = "Path.txt"
                BaseOpenFileDialog.DefaultExt = ".txt"
                If BaseOpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                    BaseOpenFileDialog.RestoreDirectory = False
                    BaseOpenFileDialog.InitialDirectory = "..\"
                    configpath = BaseOpenFileDialog.FileName
                Else : Exit Sub
                End If
            End If
            mypath = File.ReadAllText(configpath)
 
            If mypath = "" Then
                BaseOpenFileDialog.FileName = "data.mdb"
                BaseOpenFileDialog.DefaultExt = ".mdb"
                If BaseOpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                    BaseOpenFileDialog.RestoreDirectory = True
                    mypath = BaseOpenFileDialog.FileName
                    File.WriteAllText(configpath, mypath)
                Else : Exit Sub
                End If
            End If
 
 
        Catch ex As Exception
 
 
        End Try
 
        strConn = "Provider=Microsoft.jet.OLEDB.4.0;Data Source= " & mypath & ";"
        objetConnection = New OleDbConnection()
        objetConnection.ConnectionString = strConn
        objetConnection.Open()
        Requetes()
        objetDataAdapter.Dispose()
        objetConnection.Close()
    End Sub
Si je parvenais à donner un chemin valide pour Path.txt, ça irait. Mais entre ..\Path.txt ou ..\Bin\Path.txt ou autre, rien ne marche.

Et si je tente d'utiliser Environnement.CurrentDirectory, il m'indique le répertoire Debug qui ne sera pas le répertoire d'exécution. Pourtant, j'ai bien ajouter mon Path.txt aux fichiers d'application.

Ca vous inspire?

Merci