dscharrer / innoextract

A tool to unpack installers created by Inno Setup
https://constexpr.org/innoextract/
Other
1k stars 125 forks source link

[1.9] Started erroring out saying "Coul not open output file" rather than creating needed directories? #178

Open hartwork opened 2 months ago

hartwork commented 2 months ago

Hi @dscharrer,

thanks for making this nice tool and sharing it as Software Libre! :pray:

With regard to the bug, here's a live demo and reproducer:

# innoextract --version
innoextract 1.9
Extracts installers created by Inno Setup 1.2.10 to 6.0.5
                                                    ^^^^^
# wget https://github.com/libexpat/libexpat/releases/download/R_2_6_2/expat-win32bin-2.6.2.exe
[..]

# innoextract -e expat-win32bin-2.6.2.exe 
Extracting "Expat 2.6.2" - setup data version 5.5.7 (unicode)
 - "app/Bin/xmlwf.exe"
Coul not open output file "app/Bin/xmlwf.exe"
Done with 1 error.

# innoextract -l expat-win32bin-2.6.2.exe | awk -F'"' '{print $2}' | xargs dirname | sort -u | xargs mkdir -v  # the workaround
mkdir: cannot create directory ‘.’: File exists
mkdir: created directory 'app'
mkdir: created directory 'app/Bin'
mkdir: created directory 'app/Doc'
mkdir: created directory 'app/Source'
mkdir: created directory 'app/Source/cmake'
mkdir: created directory 'app/Source/examples'
mkdir: created directory 'app/Source/fuzz'
mkdir: created directory 'app/Source/lib'
mkdir: created directory 'app/Source/tests'
mkdir: created directory 'app/Source/tests/benchmark'
mkdir: created directory 'app/Source/win32'
mkdir: created directory 'app/Source/xmlwf'

# innoextract -e expat-win32bin-2.6.2.exe 
Extracting "Expat 2.6.2" - setup data version 5.5.7 (unicode)
 - "app/Bin/xmlwf.exe"
 - "app/MANIFEST.txt"
 - "app/Source/AUTHORS", "app/AUTHORS.txt"
 - "app/Source/Changes", "app/Changes.txt"
 - "app/COPYING.txt"
 - "app/README.txt"
 - "app/Doc/reference.html"
 - "app/Doc/ok.min.css"
 - "app/Doc/style.css"
 - "app/Doc/xmlwf.xml"
 - "app/Bin/libexpat.dll"
 - "app/Bin/libexpatw.dll"
 - "app/Bin/libexpat.lib"
 - "app/Bin/libexpatMT.lib"
 - "app/Bin/libexpatw.lib"
 - "app/Bin/libexpatwMT.lib"
 - "app/Source/win32/version.rc.cmake"
 - "app/Source/README.txt"
 - "app/Source/CMake.README"
 - "app/Source/CMakeLists.txt"
 - "app/Source/ConfigureChecks.cmake"
 - "app/Source/expat.pc.cmake"
 - "app/Source/expat_config.h.cmake"
 - "app/Source/run.sh.in"
 - "app/Source/cmake/expat-config.cmake.in"
 - "app/Source/fuzz/xml_parsebuffer_fuzzer.c"
 - "app/Source/fuzz/xml_parse_fuzzer.c"
 - "app/Source/lib/xmlparse.c"
 - "app/Source/lib/xmlrole.c"
 - "app/Source/lib/xmltok.c"
 - "app/Source/lib/xmltok_impl.c"
 - "app/Source/lib/xmltok_ns.c"
 - "app/Source/lib/ascii.h"
 - "app/Source/lib/asciitab.h"
 - "app/Source/lib/expat.h"
 - "app/Source/lib/expat_external.h"
 - "app/Source/lib/iasciitab.h"
 - "app/Source/lib/internal.h"
 - "app/Source/lib/latin1tab.h"
 - "app/Source/lib/nametab.h"
 - "app/Source/lib/siphash.h"
 - "app/Source/lib/utf8tab.h"
 - "app/Source/lib/winconfig.h"
 - "app/Source/lib/xmlrole.h"
 - "app/Source/lib/xmltok.h"
 - "app/Source/lib/xmltok_impl.h"
 - "app/Source/lib/libexpat.def.cmake"
 - "app/Source/examples/elements.c"
 - "app/Source/examples/element_declarations.c"
 - "app/Source/examples/outline.c"
 - "app/Source/tests/acc_tests.c"
 - "app/Source/tests/alloc_tests.c"
 - "app/Source/tests/basic_tests.c"
 - "app/Source/tests/chardata.c"
 - "app/Source/tests/common.c"
 - "app/Source/tests/dummy.c"
 - "app/Source/tests/handlers.c"
 - "app/Source/tests/memcheck.c"
 - "app/Source/tests/minicheck.c"
 - "app/Source/tests/misc_tests.c"
 - "app/Source/tests/nsalloc_tests.c"
 - "app/Source/tests/ns_tests.c"
 - "app/Source/tests/runtests.c"
 - "app/Source/tests/structdata.c"
 - "app/Source/tests/acc_tests_cxx.cpp"
 - "app/Source/tests/alloc_tests_cxx.cpp"
 - "app/Source/tests/basic_tests_cxx.cpp"
 - "app/Source/tests/chardata_cxx.cpp"
 - "app/Source/tests/common_cxx.cpp"
 - "app/Source/tests/dummy_cxx.cpp"
 - "app/Source/tests/handlers_cxx.cpp"
 - "app/Source/tests/memcheck_cxx.cpp"
 - "app/Source/tests/minicheck_cxx.cpp"
 - "app/Source/tests/misc_tests_cxx.cpp"
 - "app/Source/tests/nsalloc_tests_cxx.cpp"
 - "app/Source/tests/ns_tests_cxx.cpp"
 - "app/Source/tests/runtests_cxx.cpp"
 - "app/Source/tests/structdata_cxx.cpp"
 - "app/Source/tests/acc_tests.h"
 - "app/Source/tests/alloc_tests.h"
 - "app/Source/tests/basic_tests.h"
 - "app/Source/tests/chardata.h"
 - "app/Source/tests/common.h"
 - "app/Source/tests/dummy.h"
 - "app/Source/tests/handlers.h"
 - "app/Source/tests/memcheck.h"
 - "app/Source/tests/minicheck.h"
 - "app/Source/tests/misc_tests.h"
 - "app/Source/tests/nsalloc_tests.h"
 - "app/Source/tests/ns_tests.h"
 - "app/Source/tests/structdata.h"
 - "app/Source/tests/README.txt"
 - "app/Source/tests/benchmark/benchmark.c"
 - "app/Source/tests/benchmark/README.txt"
 - "app/Source/xmlwf/codepage.c"
 - "app/Source/xmlwf/ct.c"
 - "app/Source/xmlwf/readfilemap.c"
 - "app/Source/xmlwf/unixfilemap.c"
 - "app/Source/xmlwf/win32filemap.c"
 - "app/Source/xmlwf/xmlfile.c"
 - "app/Source/xmlwf/xmlmime.c"
 - "app/Source/xmlwf/xmlwf.c"
 - "app/Source/xmlwf/codepage.h"
 - "app/Source/xmlwf/filemap.h"
 - "app/Source/xmlwf/xmlfile.h"
 - "app/Source/xmlwf/xmlmime.h"
 - "app/Source/xmlwf/xmltchar.h"
Done.

PS: I haven't tried with Git master yet. If it's fixed there, it would be great to get the fixes into a new release (#176)

Thanks! :pray:

hartwork commented 1 month ago

@dscharrer any thoughts?

hartwork commented 3 weeks ago

@dscharrer any thoughts?

hartwork commented 2 weeks ago

@dscharrer I kept having the same issue during the release process of both Expat 2.6.3 and now Expat 2.6.4 today again. It's quite annoying — any chance this could be fixed?