2012-04-11 13 views
0

ソフトウェアの一部のユーザーが、有線のDirectoryNotFoundException例外によって発生した問題を報告することがあります。これは、Vistaを実行している一部のユーザーにのみ発生します。 Vistaを使用しているすべてのユーザーにこの問題があるわけではありませんWin7やXPを実行しているユーザーからは、この問題は報告されていませんでした(ただし、これらのシステムではこの問題は発生していないことは証明されていません)。VistaでProgramDataにアクセスしたときにパスの一部が見つかりませんでした - WinIOError

私たちのソフトウェアは、ProgramDataフォルダ内にいくつかのグラフィックスデータを保存します。プログラムは次の例外がスローされ、それらのファイルを読み込もうとした場合:\はProgramData \マイアプリケーション名\サブフォルダ\サブフォルダ:

Message: Could not find a part of the path 'C:\ProgramData\My App Name\Subfolder\Subfolder'. 
mscorlib 
    in System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    in System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) 
    in System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption) 
    in System.IO.Directory.GetFiles(String path) 

パスはCです。フォルダが存在する - 私は100%確信しています。それはNSISインストーラによって作成されました。それはすべてのユーザに書き込み可能です(少なくとも、NSISスクリプトを使って設定する必要があります)。ユーザーはフォルダが存在することを確認し、Windowsエクスプローラを使用してその場所に移動できます。

私はそれがUACの問題だと思っていましたが、例外はと答えましたの一部を見つけることができませんでした。テストシステムで問題を再現することができないので、これは私を夢中にさせます。構成に関係なく。 XP、Vista、Win7 - 私たちのマシン上で動作します。

+0

.NETのファイルを読み取れない場合に備えて、単純なif(!File.Exists(path))文をこのコード行の直前で実行しようとしましたか? – Josh

+0

"パスはC:¥ProgramData¥My App Name¥Subfolder¥Subfolderです。フォルダは存在します - 私は100%確信しています。あなたはNSISインストーラに頼っているので100%確信しているのですか、または問題のマシンで起動 - >実行 - > "C:\ ProgramData \ My App Name \ Subfolder \ Subfolder"そのようなフォルダの内容ですか? –

+0

@AJ。 - ユーザーは、Windowsエクスプローラを使用してそのパスに移動できることを確認しました。私はスクリーンショットを見た。 – SiliconMind

答えて

1

最後に、同じ問題を抱えていて、テストに手伝ってくれるユーザーが見つかりました。このエラーの根本的な原因は、間違った文字を含むフォルダを作成するNSISインストーラのようです。誰も気付いていないのは、そのチャーが作成されるはずのものとほとんど同じであるからです。だからDirectoryNotFoundException本当に正しいです。

NSISはN文字

// U+0144 ń c5 84 LATIN SMALL LETTER N WITH ACUTE 

でフォルダを作成することになったが、代わりにñ文字

// U+00F1 ñ c3 b1 LATIN SMALL LETTER N WITH TILDE 

でフォルダを作成し、有線部分は、それはいくつかにのみ発生しています私たちはそれを再現できませんでした。

今日のレッスン:デバッグに関するユーザーの信頼は絶対にありません。それが問題のフォルダの内容だけを表示するので、ユーザーが提供するスクリーンショットさえ誤解を招いていました。

+0

考えられる解決策:http://stackoverflow.com/questions/10189227/nsis-installer-creates-directory-using-wrong-character-set – SiliconMind

関連する問題