Archive: LMZA feature eta?


LMZA feature eta?
Hi, I am really dying for the ability to compress each file individually into the archive rather than compile the archive and THEN compress.
Solid compression requires a temp space large enough for all the decompressed files and for some of us that isnt an option.

It was mentioned to be an easy and planned addition, any chance of it being done soon please? I'd really appreciate it.

Thanks.


The option is already there. Change it in config.h and recompile.


Do you mean recompile NSIS or recompile the project?
I cant recompile NSIS because, frankly I dont know how.


I haven't tested these mak files with the free MS compiler so I'd be glad if someone can.

Follow the instructions in the appendix regarding the free Microsoft compiler:

http://nsis.sourceforge.net/Docs/AppendixC.html#C.1

This page might help too:

http://www.winprog.org/tutorial/msvc.html

Download and extract maks.zip into the Source folder, open a command window, cd to the Source folder and type:

nmake /f makenssi.mak
BTW,
It was mentioned to be an easy and planned addition, any chance of it being done soon please? I'd really appreciate it.
I don't recall saying easy ;)

I spent several hours trying to make it work.
It doesnt. The error is in the ' cd ".\exehead" ' line(s)and nothing I did would make it work. I had to run it like this :

c:\program files\microsoft.net\sdk\v1.1\bin\> nmake /f "c:\program files\nsis\source\makenssi.mak"

From any other path even with the path envirinment variable set to both dirs it errored out with something about my f: No idea how my f: got involved - it's never had anything installed to it.

I am more than happy to help you test this but I've spent a long time, I'm frustrated and all I want is something you can do in minutes. Please, just give it to me and I'll help you test this method as much as you like afterward.

:S


Can you post the exact error messages? Did you install the Platform SDK?


-----
C:\Program Files\Microsoft.NET\SDK\v1.1\Bin>nmake.exe /f "c:\Program Files\NSIS\
Source\makenssi.mak"

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

No configuration specified. Defaulting to makenssi - Win32 Release.
Warning: cannot find "makenssi.dep"
cd ".\exehead"
NMAKE : fatal error U1077: 'cd' : return code '0x1'
Stop.

C:\Program Files\Microsoft.NET\SDK\v1.1\Bin>
-----

-----
C:\Program Files\NSIS\Source>"c:\Program Files\Microsoft.NET\SDK\v1.1\Bin\nmake.
exe" /f makenssi.mak

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

No configuration specified. Defaulting to makenssi - Win32 Release.
cd ".\exehead"
nmake / /F ".\exehead-lzma.mak" CFG="exehead_lzma - Wi
n32 Release"

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

if not exist ".\Release-lzma/" mkdir ".\Release-lzma"
NMAKE : fatal error U1073: don't know how to make '"f:\microsoft visual studio\m
icrosoft sdk\include\basetsd.h"'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft.NET\SDK\v1.1\Bin\nmake.e
xe"' : return code '0x2'
Stop.
-----

The makenssi.dep is in the "c:\Program Files\NSIS\
Source\' dir and I've checked my registry for EVERY reference to f: and there's nothing even slightly close to that path.


SDK's :

Common Setup Files

Debugging Tools for Windows

Core SDK (Windows Server 2003)

Build environment

Register environment variables

Windows Installer SDK (Version 2.0)


"f:\microsoft visual studio\microsoft sdk" is where PSDK is installed on my computer. Genius VC decided I want the make files to work only on my computer for some reason... Try the attached make files instead, no f: in them.


I've installed every sdk I can find and none of them have cl.exe and a dll that it needs. I sourced both of them from vs6 and now the file it wants is 'excpt.h'


ok, I got sick of that so I installed vb6.
Im having problems understanding that macro to register the dlls - I just plain dont get it.

This is the error I get :

C:\Program Files\NSIS\Source\exehead\util.c(490) : error C2065: 'CSIDL_FLAG_CREATE' : undeclared identifier
C:\Program Files\NSIS\Source\exehead\util.c(506) : error C2065: 'CSIDL_PROGRAM_FILES_COMMON' : undeclared identifier
C:\Program Files\NSIS\Source\exehead\util.c(510) : error C2065: 'CSIDL_PROGRAM_FILES' : undeclared identifier
C:\Program Files\NSIS\Source\exehead\util.c(516) : error C2065: 'CSIDL_SYSTEM' : undeclared identifier
C:\Program Files\NSIS\Source\exehead\util.c(520) : error C2065: 'CSIDL_WINDOWS' : undeclared identifier
Generating Code...


Get makensis_no_solid.zip of RC2.

cl.exe comes with .NET SDK.

Tell VC to use the PSDK header files to avoid compile errors about CSIDL_*.


Thanks, but its broken.
neither bzip2 or lzma work but it works flawlessly with zlib.

This is the entire thing. All it needs is to be unzipped to c: and rightclicked.
http://myne.customer.netspace.net.au/Dev.zip

I do appreciate your help on this and I feel bad that I cant even figure it out :S

error :
!insertmacro: MUI_PAGE_WELCOME
Error: add_db_data() - compress() failed - -1
Error in macro MUI_INSTALLOPTIONS_INITDIALOG on macroline 5
Error in macro MUI_FUNCTION_WELCOMEPAGE on macroline 43
Error in macro MUI_PAGE_WELCOME on macroline 23
Error in script "F:\Dev\DC 7.NSI" on line 170 -- aborting creation process


Fixed, thanks.


Thanks, it seems to hang on generating uninstaller now :/
(lzma) bzip works fine


Oh, Bzip doesnt work. Upon attempting to install it generates a "Error decompressing data, corrupted installer?" ok box and quits.

Btw, in my case the size difference between solid and non solid bzip was less than 1mb. My installer was 501mb in both cases. Thankyou for your continuing help.


I'd like to thank Kichik for his help and, when all else failed debugging for several hours. It works brilliantly. What more could you want from a dev?

A previous installer that had to be released at 540mb with zlib compiled down to 440mb with lzma and doesnt need any temp space. That is the same size as solid compression. :D

Thankyou thankyou thankyou.


i'm using latest cvs, updated few minutes ago (yes, it works again :D).
but i'm missing documentation how to enable lzma-compression.

4.8.2.4 SetCompressor
zlib|bzip2
This command sets the compression algorithm used to compress files/data in the installer. Options are ZLib or BZip2. ...
will this work:
SetCompressor lzma

and will i also have to reserver files like i have to for bzip2?

Yes that will work, the documentation will be updated.

If you are using solid compression (by default, solid compression is enabled for BZip2 and LZMA), it's important that files which are being extracted in init- or page functions function are located before other files in the data block, because this will make your installer faster.

If there are File commands in your sections or functions above the init- or page functions, you can reserve files.