Jak dokładnie wyodrębniasz pliki? Czy używasz wiersza polecenia lub GUI? Przeciągasz pliki lub wybierasz je i używasz funkcji wyodrębniania? Czy używasz menu kontekstowego rozszerzenia powłoki?
Jeśli wejdziesz do folderu docelowego, a następnie wybierzesz funkcję wyodrębnienia lub użyjesz rozszerzenia powłoki, wówczas nie rozpakują się najpierw do folderu tymczasowego, lecz wyodrębnią bezpośrednio do miejsca docelowego.
Jeśli wybierzesz pliki w interfejsie użytkownika i przeciągniesz je do folderu docelowego, zostanie ono rozpakowane do folderu tymczasowego.
Powodem jest sposób wyboru miejsca docelowego. Jeśli wejdziesz do folderu docelowego lub użyjesz pozycji menu kontekstowego, wówczas program będzie wiedział dokładnie, dokąd musi się rozpakować. Jeśli jednak po prostu przeciągniesz pliki, to ze względu na działanie funkcji przeciągania i upuszczania w OLE program nie wie, gdzie jest folder docelowy. Innymi słowy, jest to Explorerktóry otrzymuje folder docelowy, a nie program do archiwizacji. W rezultacie program nie może wiedzieć, gdzie je wyodrębnić, dlatego po prostu rozpakowuje je do folderu tymczasowego, a następnie Eksplorator przenosi je po zakończeniu. Możesz to wyraźnie zobaczyć, wyodrębniając duży plik przy użyciu obu metod. Gdy przeciągniesz go do folderu, zostanie on wyodrębniony, a następnie zobaczysz standardowe okno dialogowe Eksploratora operacji przenoszenia pliku do folderu. Jeśli określisz folder i klikniesz Wyodrębnij, zostanie on wyodrębniony i dalsze przetwarzanie nie zostanie wykonane.
Zapoznaj się z kodem źródłowym 7-Zip, aby zobaczyć, jak obsługiwana jest lokalizacja ekstrakcji.
Nauczyłem się tego na własnej skórze kilka lat temu, kiedy chciałem zaimplementować funkcję przeciągnij i upuść w pisanym przeze mnie programie.