我必须在这个问题前加上以下信息:这个问题只发生在我的应用程序使用TclApp包装时
我知道在包装 Tcl 程序时,如果它尚未包装在内部文件系统中,则必须lappend
到程序需要查找文件的目录的位置。auto_path
这就是我所做的,但我的代码仅适用于 tk_getOpenFile,而不适用于 tk_getSaveFile。它不是在指定目录中打开保存对话框,而是在我的文档中打开它。
这基本上是我正在做的事情:
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在我的文档中打开,而 tk_getOpenFile 在正确的文件夹“myFolder”中打开。
有任何想法吗?
编辑:
我现在注意到一个非常奇怪的问题也发生了,我怀疑它可能是相关的。现在,每当我将文件保存在 C:\ 下的任何子目录中时,我只能通过程序的打开和保存对话框看到该文件。如果我在 Windows 资源管理器中导航到同一位置,文件不仅不可见,而且根本不存在!这里发生了什么?
编辑:
我的程序必须以管理员权限运行——这就是为什么我得到那个非常奇怪的错误(第二个错误。)