Let's say I compile 50 megs of OGG files. I don't need them compressed under lzma as that'll waste time, they're already compressed audio files. So I used the "SetCompress off" as one should.
goto SKIP_OGG_EXTRACT
SetCompress off
File "YS100_44.ogg"
File "YS101_44.ogg"
File "YS102_44.ogg"
File "YS103_44.ogg"
File "YS104_44.ogg"
File "YS105_44.ogg"
File "YS106_44.ogg"
File "YS107_44.ogg"
File "YS108_44.ogg"
File "YS109_44.ogg"
File "YS110_44.ogg"
File "YS111_44.ogg"
File "YS112_44.ogg"
File "YS113_44.ogg"
File "YS114_44.ogg"
File "YS115_44.ogg"
File "YS134_44.ogg"
File "YS135_44.ogg"
File "YS137_44.ogg"
File "YS138_44.ogg"
File "YS139_44.ogg"
File "YS140_44.ogg"
File "YS141_44.ogg"
File "YS142_44.ogg"
SetCompress auto
SKIP_OGG_EXTRACT:
The problem comes when it's time to not just extract, but decode/unzip back to WAVE format with the OGG-to-WAVE decoder NSIS plug-in that I built with the 2018 source code of OGG/Vorbis...
What I did in the past is inefficient, extract the OGG from the installer to the final location, and then pass the filename to the decoder to convert it to wave... So 50 megs of OGG data that are already sitting in the installer exe, are needlessly written again to the final location, when if I could just get a pointer offset into the installer EXE, I could just make the OGG decoder read the data from there, and open a wave file to the final location to begin decoding...
In other words, I wanna skip the inbetween step of normal extraction of the OGG files, I wanna get the offset of each OGG as it's been compiled in the installer exe, give that offset to my plugin DLL to open or reuse the existing handle, to read the OGG data directly to begin decoding it to wave in the final location, does that make sense ?
To this effort, I did start disassembling a compiled installer exe, I found where the NSIS code opens a file handle to itself, and unzips a file list to extract the OGG files, but I still need more research time on how this is arranged...
I have my own ideas on how to get this done, but I don't wanna waste my time if there's already a built-in way to do this, hence the thread.
Does that make sense, have I explained what I wanna do here ?
Any protip/help would be appreciated, thanks!
