この質問の前に、次の情報を記載する必要があります。この問題は、アプリケーションがTclAppでラップされている場合にのみ発生します。
Tcl プログラムをラップするとき、内部ファイル システムにまだラップされていない場合、プログラムがファイルを検索するために必要なディレクトリの場所に移動するlappend
必要があることを理解しています。auto_path
それが私が行ったことですが、私のコードは tk_getSaveFile ではなく tk_getOpenFile に対してのみ機能します。指定したディレクトリで保存ダイアログを開くのではなく、マイ ドキュメントで開きます。
これが本質的に私がやっていることです:
set root [file dirname [info script]];
if {$iswrapped} {
lappend auto_path "$root/../../../../myFolder";
set target_dir "$root/../../../../myFolder";
}
set filename [tk_getSaveFile -initialdir $target_dir -title "Save As"];
これがWindowsの問題ではないことを確認しました(プログラムで初めて保存/開いた後、ダイアログの開いている場所を保存します)。新しいシステムで初めてプログラムを実行すると、tk_getSaveFile My Documents で開きますが、tk_getOpenFile は正しいフォルダー「myFolder」で開きます。
何か案は?
編集:
非常に奇妙な問題も発生していることに気付きました。関連しているのではないかと思います。これで、C:\ の下の子ディレクトリにファイルを保存するときはいつでも、プログラムの開くダイアログと保存ダイアログからしかファイルを見ることができません。Windows エクスプローラーで同じ場所に移動すると、ファイルが表示されないだけでなく、まったく表示されません。ここで何が起こっているのですか?
編集:
私のプログラムは管理者権限で実行する必要がありました - そのため、本当に奇妙なエラー (2 番目のエラー) が発生しました。