@Hozso
When want do minimal work then no use tprocess. RunCommand or RunCommandInDir is need not all that many code that TProcess have need. But runcommand have drawback (have read below)
fwiw: I not have windows and not have pkzip (I no want use pkzip for Linux) then I not can test for you.
Is good that now is execute pkzip. Is progress

Why pkzip not continue I not know but can have guess that is error somewhere in argument and pkzip is confuse or wait for something is happen (we not know what, and this problem)
There is many thing happen and need for work pkzip TProcess commandline and do what you have want. This is list of things that have know:
- If use TProcess or RunCommand then output is only catch when command finish when use option poWaitOnExit.
- pkzip is unknown variable (undocument) in how is behave (you can know if familiar pkzip). Then better is for make test for command that is know (dir, tree, etc) and make test simple then can test all configure option for TProcess/RunCommand or,
- when pkzip have option for example have simple show version number then can use for test. Then make pkzip have show list of files in archive, then make small complicate for example make single file compress to zipfile, etc.
- TProcess/RunCommand have statuscode/exitcode etc so when command is continue then can read value and value is tell what exact wrong. Description that pkzip is 'not contue' with window and cursor is no precise and not help solve problem. Ofc, then have know it 'hang' but not is tell why.
If execute program have many output and want show output (realtime) then is need more difficult implement for TProcess. Wiki have example:
https://wiki.lazarus.freepascal.org/Executing_External_Programs#Reading_large_outputIf want now where program is 'hang' then have use message print or use step-debug and see where is 'hang'.
There is more quick/test solution: use runcommand(indir) have run cmd.exe and cmd.exe is load/execute batch. Have notice for cmd.exec that have other rule for add parameter (have read options for cmd.exe how is set parameter for execute batch). Pascal TStringlist can make Batchscript and save then have execute process cmd.exe for run this batch-script.
Now maybe have better understand why is advise for use tzipper because t(un)zipper many more easy, no have depends, have wiki-example and have more example in forum :-)