Path.GetDirectoryName(FilePath)
にファイルを保存するアプリケーションで作業しています。FilePath = Application.ExecutablePath
には、ライセンスに関する情報が含まれています。 VSからプログラムを実行すると問題なく動作しますが、インストーラを作成してインストールして実行すると、プログラムはファイルが既に存在すると考えます。メッセージボックスに私のFilePath
を表示するようにプログラムを変更し、File.Exists(FilePath)
がtrue
またはfalse
を返すかどうかを変更しました。だから私はその道を見て、隠しファイルとシステムファイルを表示したり、F5を何度も何度も何もしなかったりしました。ファイルは存在しませんが、File.Exists(FilePath)
がtrueを返します。なぜこのようなことが起こるのか、どうすれば回避できますか?File.Existsが存在しないファイルに対してtrueを返す
私はWindows Vista、Visual Studio 2010、C#を使用しており、VSのセットアッププロジェクトでインストーラを作成しました。
編集:私のパスは次のとおりです。C:\プログラムファイル(x86の)\ヘリウム\のLicense.xml。
これは私のコードの一部です:
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
ので、ファイルが存在するために使用する前に、私はすでにアプリケーションがインストールされていたことを言うのを忘れていました。私はコントロールパネルを使用してアンインストールしました。
絶対パスか相対パスですか?私たちに実際の道を示すことも助けになるかもしれません。 – bblack
ファイル名を指定して実行を試みてください。それは超隠されている可能性があります。また、Windows Vistaを使用しないことをお勧めします。 –
あなたは文字通り 'FilePath = Application.ExecutablePath; File.Exists(FilePath);と言っていますか?より完全なコードサンプルが参考になります。 – Sorpigal