2010-11-29 19 views
5

Je travaille sur une application qui enregistre un fichier dans Path.GetDirectoryName(FilePath)FilePath = Application.ExecutablePath qui contient des informations sur la licence. Si j'exécute le programme à partir de VS cela fonctionne bien mais si je fais un installeur et que je l'installe, puis l'exécute, le programme pense que le fichier existe déjà. J'ai changé mon programme pour montrer sur une boîte de message mon FilePath et si File.Exists(FilePath) renvoie true ou false. J'ai donc regardé dans ce chemin, activé montrant les fichiers cachés et système, F5'd plusieurs fois et rien. Le fichier n'existe pas, mais File.Exists(FilePath) renvoie la valeur true. Une idée de pourquoi cela se passe-t-il et comment puis-je contourner ce problème? J'utilise Windows Vista, Visual Studio 2010, C# et créé mon programme d'installation avec le projet d'installation de VS.File.Exists true true pour un fichier qui n'existe pas

Edit: Mon chemin est: C: \ Program Files (x86) \ hélium \ License.xml.

Cela fait partie de mon code:

 MessageBox.Show("LicenseFileName: " + LicenseFileName); // LicenseFileName: C:\Program Files (x86)\Helium\License.xml 
     System.Diagnostics.Process.Start(LicenseFileName);  // Nothing happens 
     MessageBox.Show("File.Exists(LicenseFileName): " + File.Exists(LicenseFileName)); // File.Exists(LicenseFileName): true 

a oublié de dire que j'avais déjà l'application installée avant que le fichier utilisé pour exister. J'ai désinstallé en utilisant le Panneau de configuration.

+0

Est-ce un chemin absolu ou un chemin relatif? Nous montrer le chemin réel peut aider aussi. – bblack

+2

Essayez d'ouvrir le fichier via Run. Cela pourrait être super caché. En outre, je recommande de ne pas utiliser Windows Vista - pour quoi que ce soit. –

+2

Est-ce que vous dites littéralement 'FilePath = Application.ExecutablePath; File.Exists (FilePath);'? Un exemple de code plus complet serait utile ici. – Sorpigal

Répondre

18

Si vous effectuez l'installation dans un dossier système, il est possible que la virtualisation de fichiers Windows ait démarré et créé une copie par utilisateur des fichiers. Ainsi, vos fichiers peuvent être situés quelque part dans le dossier% userprofile% \ AppData \ Local \ VirtualStore

+0

Yup. C'est là où c'est. – Juan

+0

Oui, j'ai gaspillé une journée entière l'autre jour avant de suivre celui-là, je suppose que je devrais de demander sur SO aussi :) – skajfes