[PsbDecompile]alldata could not be properly extracted even with correct usage (original) (raw)

Name of the game: METAL GEAR SOLID: MASTER COLLECTION Vol. 1
Platform the game is currently available on: Steam, Nintendo Switch, PS4, PS5, Xbox Series X|S
PSB file samples: alldata.7z <-- contains alldata.bin and alldata.psb.m
Program output: it's complicated...

this is how i used PsbDecompile

PsbDecompile.exe info-psb alldata.psb.m -k 25G/xpvTbsb+6 -b alldata.bin -l 64

and this is how the program reacted

FreeMote PSB Decompiler
by Ulysses, wdwxy12345@gmail.com
18 Plugins Loaded.

Extracting info from alldata.psb.m ...
System.AggregateException: Um ou mais erros. ---> System.IO.IOException: O processo não pode acessar o arquivo 'C:\[REDACTED]\alldata\opening_screen.psb.m' porque ele está sendo usado por outro processo.
   em System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   em System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   em System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   em System.IO.FileStream..ctor(String path, FileMode mode)
   em FreeMote.Tools.PsbDecompile.Program.WriteAllBytes(String path, MemoryStream ms)
   em FreeMote.Tools.PsbDecompile.Program.<>c__DisplayClass6_0.<ExtractArchive>b__0(KeyValuePair`2 pair)
   em System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
   em System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   em System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)
   --- Fim do rastreamento de pilha de exceções internas ---
   em System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   em System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   em System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   em System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   em System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, Action`1 body)
   em FreeMote.Tools.PsbDecompile.Program.ExtractArchive(String filePath, String key, Dictionary`2 context, String bodyPath, Boolean outputRaw, Boolean extractAll, Boolean enableParallel)
---> (Exceção Interna N° 0) System.IO.IOException: O processo não pode acessar o arquivo 'C:\[REDACTED]\alldata\opening_screen.psb.m' porque ele está sendo usado por outro processo.
   em System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   em System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   em System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   em System.IO.FileStream..ctor(String path, FileMode mode)
   em FreeMote.Tools.PsbDecompile.Program.WriteAllBytes(String path, MemoryStream ms)
   em FreeMote.Tools.PsbDecompile.Program.<>c__DisplayClass6_0.<ExtractArchive>b__0(KeyValuePair`2 pair)
   em System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
   em System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   em System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)<---

Process time: 0:00:17,7551361
Done.

adding -raw after -l 64 fixes this, which makes sense since with -raw on, files are only saved to disk as-is