Jump to content

Universal Extractor


nitro322

Recommended Posts

Sorry, I forgot to tell you that you need the latest .NET framework installed in order to use that parameter.

Ok, looking into this again.

7-Zip v4.49 beta :)

Awesome. I added WIM support in UniExtract, thanks to the new support in 7-Zip. Thanks for the heads up.

Thanks!

And LZMA SDK is 4.49 now.

Updated. Thanks.

Link to comment
Share on other sites


Hi nitro,

I'm wondering how will you manage nsis installer in the future since all dll files have been merged in the same on and therefore it won't be possible to use 7zip 4.40's nsis.dll with newer release.

Will you compile your own modifier version of 7zip?

Link to comment
Share on other sites

I dropped off the forum for the last week or so, but I'm still plugging away at the new version. I think I'm pretty close to a beta release at this point; just have a few rough areas I still need to polish out. I also need to go through my backlog of translation submissions, which will take a while. A lot of folks have sent in support for new languages, which is fantastic, but I've been slow about responding to them as they come in. Now I have to deal with all at once and hope that the authors are still interested in updating the files to the latest release. Fun stuff.

Just for those interested, here's a list of the latest developments. The biggest changes here are the new preferences dialog (with corrosponding UI changes to the main GUI) and multi-user preference support. This should resolve the vast majority of Vista issues (I hope). These two items will need heavy testing during the beta period, so I'd really appreciate any feedback on this once the beta is released.

  Added support for individual user preferences for better Vista support;
by default, globalprefs is enabled for portable, disabled for installed
when enabled, UniExtract uses single .ini file as with previous version
when disabled, individual prefs/history are saved to registry in HKCU
this can be changed by modifying globalprefs setting in .ini file
Added menu bar to main GUI;
includes options to quit, edit preferences, and visit UniExtract website
Added separate preferences GUI to provide easy access to all options;
can be invoked through Edit menu or through '/prefs' argument
Added support for WIM (Windows Imaging Format) images via 7-Zip
Updated UniExtract to prompt user before executing files for extraction;
can be disabled via warnexecute option
Updated UniExtract to verify that debug file location can be written to;
user's temp directory will be used if selected dir fails test
Updated UniExtract to disable appendext option by default
Updated TrID detection of Windows Installer (MSI) packages
Updated installer to support new /nowarnexecute paramater
Updated installer to support reversed appendext default preference;
now use /appendext to enable instead of /noappendext to disable

Link to comment
Share on other sites

I'm wondering how will you manage nsis installer in the future since all dll files have been merged in the same on and therefore it won't be possible to use 7zip 4.40's nsis.dll with newer release.

Will you compile your own modifier version of 7zip?

No, unfortunately I just had to change over to using the current NSIS extraction support in 7-Zip. It dropped the ability to create an .nsi file, but to be honest the files that were created by 4.40 really weren't that useful anyway. I tried to use them as reference a few times to figure out what an installer is doing, and it's just a major pain in the rear to try to read through and follow. I'd still like to have the feature there if it was possible, but I don't feel it's worth a lot of extra effort to bring it back.

Link to comment
Share on other sites

Would it be possible to request the ability to use the '/sub' switch before the archive?

Ex:

UniExtract.exe /sub "c:\whatever.zip"

Why?

I dislike adding more entries to the context menu. I try to use a SendTo shortcut if possible, and the way shortcuts work it is not possible to have switches after a dropped file. (That I know of)

Edited by mushu13
Link to comment
Share on other sites

I'm wondering how will you manage nsis installer in the future since all dll files have been merged in the same on and therefore it won't be possible to use 7zip 4.40's nsis.dll with newer release.

Will you compile your own modifier version of 7zip?

No, unfortunately I just had to change over to using the current NSIS extraction support in 7-Zip. It dropped the ability to create an .nsi file, but to be honest the files that were created by 4.40 really weren't that useful anyway. I tried to use them as reference a few times to figure out what an installer is doing, and it's just a major pain in the rear to try to read through and follow. I'd still like to have the feature there if it was possible, but I don't feel it's worth a lot of extra effort to bring it back.

This quite annoys me because I sometimes repackage apps and having the .nsi file was a lot more than handy.

One solution would be to find whether the file is a NSIS file and use a different version of 7zip to extract it but that's not very sexy.

I'll try to mod 7zip and provide a version which is able to extract .nsi files.

Btw, unshield compiles under mingw and with default optimizations, it takes 109+47.8KB (dll+main executable). With size optimizations, it takes 100+45.8KB. Not that bad. =)

Link to comment
Share on other sites

Would it be possible to request the ability to use the '/sub' switch before the archive?

Ex:

UniExtract.exe /sub "c:\whatever.zip"

You can create a SendTo shortcut that opens the file in the UniExtract GUI and by default will extract to the '/sub' directory if you just hit enter. This will actually be included as an option in the 1.6 installer. Does that work for you, or are you just really wanting to skip that "hit Enter" step?

This quite annoys me because I sometimes repackage apps and having the .nsi file was a lot more than handy. One solution would be to find whether the file is a NSIS file and use a different version of 7zip to extract it but that's not very sexy. I'll try to mod 7zip and provide a version which is able to extract .nsi files.

Sorry man, I didn't know anyone was utilizing that functionality. I'd strongly prefer to not include two versions of 7-Zip as that would significantly increase the package size, and it's already becoming bloated enough (with all the new format support it's now 11 MB uncompressed). I wouldn't necessarily be opposed to a modified .dll that restores the previous functionality, though I can't say I'm really a fan of the idea of including a non-official build of 7-Zip. Have you asked about this on the 7-Zip forum? Maybe since the whining over on the NSIS forum has died down Igor would be willing to restore that functionality in current builds?

Btw, unshield compiles under mingw and with default optimizations, it takes 109+47.8KB (dll+main executable). With size optimizations, it takes 100+45.8KB. Not that bad. =)

Very cool. Question, though - do you know of any InstallShield packages that are not supported by UniExtract that will work with unshield? I haven't been able to find any in my test collection, and so I haven't yet found a need to add unshield to the mix.

Link to comment
Share on other sites

You can create a SendTo shortcut that opens the file in the UniExtract GUI and by default will extract to the '/sub' directory if you just hit enter. This will actually be included as an option in the 1.6 installer. Does that work for you, or are you just really wanting to skip that "hit Enter" step?
That is currently what I'm doing, but sometimes it becomes annoying.

So after my previous post I poked around in the source an came up with a way to have UniExtract to accept the /sub in either the first or second positions.

ReadPrefs()
if $cmdline[0] = 0 then
$prompt = 1
else
if $cmdline[1] == "/help" OR $cmdline[1] == "/h" OR $cmdline[1] == "/?" _
OR $cmdline[1] == "-h" OR $cmdline[1] == "-?" then
terminate("syntax", "", "")
else
$prompt = 1;GUI on
if fileexists($cmdline[1]) then ;Check for file in first spot
$file = $cmdline[1]
elseif $cmdline[1] = "/sub" then ;Check for /sub in first spot
if fileexists($cmdline[2]) then ;Check for file in second spot
$file = $cmdline[2]
$outdir = $cmdline[1]
$prompt = 0 ;GUI off
else
terminate("syntax", "", "")
endif
else
terminate("syntax", "", "")
endif
if $cmdline[0] > 1 and $cmdline[1] <> "/sub" then
$outdir = $cmdline[2]
$prompt = 0 ;GUI off
endif
endif
endif

; If no file passed, display GUI to select file and set options

Is is kind of sloppy (In my mind at least) but basically its a replacement for the beginning of the current ReadPrefs() section. I realize your source is probably very different from the current public source, but maybe this could inspire you to find a way to implement this in the next version.

Link to comment
Share on other sites

So after my previous post I poked around in the source an came up with a way to have UniExtract to accept the /sub in either the first or second positions.

I gave this a little more thought, and I agree that this will be a useful change, but I'm going to hold off until the next version before I implement this. Here's why: one long-standing item on my todo list is proper support for multiple files. In order to do this I'll have to change up how UniExtract deals with the CLI arguments, which means I'm going to have to implement your idea (or something similar) anyway at that time. It'll be a fairly big change, though, and I've already implemented a number of new features in the current dev version, so I'd prefer to get this out as is (just with bug fixes at this point) and then tackle multiple file support in version 1.7.

It'll get done, but it'll take some time. In the meantime, you're of course welcome to just use your modified binary. That section of the code should be very pretty similar between version 1.5 and 1.6, so even when the new version is released it should be pretty easy to merge in your changes and recompile.

will there be a public beta available?

Absolutely, as soon as I finish some more testing, resolving whatever bugs I'm able to find myself, and begin communicating with the translators for language file updates. It's coming, just not quite there yet. :-)

Link to comment
Share on other sites

@nitro, some news about 7-zip: I couldn't compile it.

I have some Visual Studio 2005 CDs MS graciously sent me but I couldn't import the project file.

Also, I wasn't able to install the 2005 Express Edition, my copy of windows not being validated; can't I run a compiler inside a virtual machine? =/

Anyway, I'll ask Igor by mail later today because I fear posting such a thing on the forum might wake up some NSIS dangerous guys. :rolleyes:

Edited by Camarade_Tux
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...