フォルダーがロックされる

Issue #911 closed
Ito Mitsuhiro repo owner created an issue

たとえば C:\Folder\File.zip を開き nv.command.Unload.Execute() で、ファイルを閉じたときですが
File.zip はロックされませんが、Folder はロックされて名前の変更などができません。

この手順だけでは再現できませんでした。過去に同様の現象を体験したことはあるので、何らかの不具合と思われます。

現象を再現するための情報をいただけると助かります。

Comments (11)

  1. aroma

    ご回答ありがとうございます。
    この現象は課題「タスクトレイ常駐」でのスクリプト

    // @name Close and minimize open books.
    // @description 開いているブックを閉じてから最小化します

    nv.command.Unload.Execute()
    nv.Config.Window.State = "Minimized"

    で、発生しています。現状、手元での再現性は100%です。

    この現象はアプリは終了させていないため、ファイルのクローズ処理でファイルはロック解除されても内部的にドライブやファルダ情報がキャッシュされて発生しているのではと思ってたりします。

    なので、たとえば nv.command.Unload.Execute() でファイルを閉じる際に、ファイル情報を別のファイル情報で上書きするようダミーで「サムネイルキャッシュの保存場所」などをセットすれば改善できるのでは?と思っています。

    特に自前でファイル処理を行ってはいない場合は疑ってみるのもありではないでしょうか。

    もしも実装された場合、再度、こちらでも確認し報告できると思います。

    よろしくお願いいたします。

  2. aroma

    引き続き色々試してみました。

    現状、わかったことはNeeViewを一度、終了させればロックは解除されるということです。

    ◆例を示します。

    1.C:\Folder01\Book01.zipを開きます。

    2.4種いずれかのスクリプトを使ってBook01.zipを削除します。

    3.Explorerで空になったフォルダC:\Folder01を削除しようとすると「別のプログラムこのフォルダー~」

    と表示され削除できません。

    4.最小化されているNeeviewを終了させます。

    5.単独または別のファイル開きNeeViewを起動します。

    6.Explorerで空になったフォルダC:\Folder01を削除しようとすると削除できます。

    手順5は実行しなくても良いのですが検証のために実行しました。

    プロセス上の問題などを考えて4種類のスクリプトを用意してみたのですが、いずれもロックは

    解除されません。子プロセス的な感じなのかもしれませんがこれ以上は思いつきませんでした。

    お役に立てたかわかりませんが、これが実現できるとファイルの整理が非常に捗るので助かります。

    ご一考いただければ助かります。

    ◆試したスクリプト

    [スクリプト 01]

    nv.Command.DeleteBook.Execute()
    nv.Command.Unload.Execute()
    nv.Config.Window.State = "Minimized"

    [スクリプト 02]

    nv.Command.DeleteBook.Execute()
    nv.Command.Unload.Execute()
    nv.Command.LoadAs.Execute("C:\\NeeView\\Scripts\\Dummy.jpg")
    nv.Config.Window.State = "Minimized"

    [スクリプト 03]

    nv.Command.DeleteBook.Execute()
    system("C:\\NeeView\\NeeView.exe", "C:\\NeeView\\Scripts\\Dummy.jpg")

    [スクリプト 04]

    nv.Command.DeleteBook.Execute()
    system("C:\\NeeView\\Scripts\\Dummy.vbs", "")

    [Dummy.vbs]

    Set ws = CreateObject("Wscript.Shell")
    ws.run "cmd /c C:\\NeeView\\NeeView.exe --window=min C:\\NeeView\\Scripts\\Dummy.jpg", 0, true

  3. Ito Mitsuhiro reporter

    詳細な情報ありがとうございます。

    こちらでもいろいろ試してみましたが、現状以下の条件でフォルダーが変更できなくなることがわかりました。修正を検討いたします。

    • 起動引数等でBook1.zipを起動と同時に開いた場合にフォルダーがロックされる。NeeView起動後にドラッグして開いた場合は現象が発生しない
    • この現象はブックを開くだけで発生。その後他のフォルダーのブックを開いてもロックは継続されている

    別条件ですが、以下の条件でもフォルダーがロックされます。こちらは仕様の可能性があり、ひきつづき調査いたします。

    • 本棚が現在開いているフォルダーの1つ上のフォルダーが変更できない (これはフォルダー変更追従するための監視が影響?)

  4. aroma

    迅速にご対応いただき恐れ入ります。

    速く解決することを祈りつつ

    季節の変わり目にどんどん肌寒くなってゆく、この時期です。

    お体をご自愛いただきくださいますようお願い申しあげます。

  5. Log in to comment