Archive: path variables under linux


path variables under linux
Hi,
we have now compiled nsis under linux and use the compiler there. works fine.

one problem is still there: how to specify path names in the script file? for files or/oname modifiers.

anyone who can help?
Gaylord


Just like Windows, only with forward slashes.

File dir/file.ext

WOW, i did not know you could make installers for linux with NSIS.

How does this work?

I am running WIN XP (SP1) and I would love to make installers for linux.

I do work for AmxModX and they make both Linux and Windows distributions.
Now if I could make an installer for Linux that would be sick.


No, you can compile Windows installers on a Linux server. You can't create Linux installers.


Oh man, you got my hopes up!
*Goes back to Wishing he had $4000 to buy Installanywhere*


But then you have to change a lot of files in the Modern UI and your .nsi would have to be different under windows and linux :(

Could you make it so that the compiler under linux will substitute the \ by / when it needs to find a file and it can't?

Also, the makefile under linux seams to be a bit broken :(


Originally posted by Correa
But then you have to change a lot of files in the Modern UI and your .nsi would have to be different under windows and linux :(

Could you make it so that the compiler under linux will substitute the \ by / when it needs to find a file and it can't?

Also, the makefile under linux seams to be a bit broken :(
read two posts above :rolleyes:

Re-read my post ;)

I know it won't create a linux installer, and I don't want a linux installer, I want to compile under linux my windows installer and have to maintain a single copy of my installer file in CVS for both the hand made (Windows hosted) installations and the one that runs on a cron using xmingw to build windows executables.

Again, if you compile the makensis compiler under linux and apply it, it will complain a lot about the \ under the Modern UI includes, which are a pain to change manually, not to mention you will get major cvs conflicts when updating from CVS.

Please, someone consider the request.

Thank you.


It is planned.

Makefiles work fine for me. Submit a detailed bug report if you have a problem with them.


I'm trying to get makensis to work on linux and create a MUI installer. This is the only page I can find on Google that appears to talk about it.

I've managed to get it to compile, but I may have done it wrong. What I did was this:

- got the cvs code
- Changed the exehead compiler (CC in Source/exehead/Makefile) to an xmingw cross-compiler. I also changed RC to an xmingw version of windres.
Without these two changes, the stuff in exehead didn't compile at all.
- Left Source/Makefile alone
- Ran make.

All this is on a Gentoo linux machine.

The compile ran (a few warnings, but that's all), and I have an executable makensis.exe, which seems to run OK.

I spent a while fixing file paths in my nsis scripts, and in MUI scripts.

But now I get an error on this line:
ChangeUI all [NSISpath]/Contrib/UIs/modern.exe.
The error is "Can't find IDC_EDIT1 (1000) in the custom UI!"

If I remove the offending line, I get a working installer, but with no MUI screens (ie not much use because I need them).

Any help appreciated.

Thanks.


fixed


Wow! That was lightning fast. I've recompiled, and it looks like it runs OK.

Thanks a lot.

I can't test completely right now. If I have further problems, I know where to come...


Some bad news. Everything appears to run OK, and the windows installer is created OK, but none of my custom pages work. I'm working on an installer for a java web app, and there is a page for choosing a port to run on, and a page that checks the java version. These are defined like:

Page custom port portOut

They appear to compile OK, but don't appear in the compiled installer, which only shows the MUI_PAGE_LICENSE, MUI_PAGE_DIRECTORY etc.

The compile shows no errors, and the output includes "Install: 8 pages", which is the correct number of pages, including the custom ones.

Sorry to be a pain, but if there's a fix for this as quick as the last one, I'd like to get hold of it.

Incidentally, while I'm here... I needed to change line 9 in Contrib/Modern UI/Language Files/English.nsh from
!insertmacro MUI_LANGUAGEFILE_BEGIN "ENGLISH"
to
!insertmacro MUI_LANGUAGEFILE_BEGIN "English"
because of case-sensitive filenames on linux.


Have you made sure it's not your script? Does it work on Windows? Have you tested the examples?


My script has been working on windows for a while, and the resulting executable works fine. I only tried it on linux for the first time yesterday, but it's not brand new.
Obviously, I've doctored the file separators for the linux version, but apart from that it's the same.

I've tried a few of the examples. primes.nsi, silent.nsi and StrFunc.nsi work fine. bigtest.nsi works after some tweaking (filename case and file separators).

But these don't seem to use custom pages.

The examples that use custom pages are gfx.nsi and makensis.nsi.

I haven't got either of these to work, because of the number of file separator etc changes. Also, I get "AddBrandingImage is disabled for non Win32 platforms." with gfx.nsi.


Contrib/InstallOptions/test*.nsi use custom pages and work fine for me. Have you tried those?

AddBrandingImage requires Windows fonts handling for pixel to dialog units conversion and is therefore currently disabled.


Thanks for your continued help on this one...

I tried Contrib/InstallOptions/test.nsi, and first of all it didn't work, because I was reversing too many file separator characters. The effect was that the custom page was skipped (exactly as I've been experiencing). I got it to work by putting back some windows file separators.

Now I've fixed my own script - the problem was actually that I had messed up the MUI macros when I converted them to linux file separators, so the ini files didn't behave properly.

So, thanks for your help Kichik, and sorry I messed up the linux conversion. Looking forward to a version that can automatically translate file separators...


This isn't relevant to the above, but this is the thread I've been using, so I'll continue it...

My installer makes windows shortcuts to URLs as well as files. These have been working OK, but and I found that the URL shortcuts were not working with my new linux-originated installers (giving errors like "failed to create shortcut" in the install screen). I managed to fix the problem by hacking exec.c. I'm not a C programmer, so it was a bit of a guess, but it seems to have worked. Here's the diff:


Index: exec.c
===================================================================
RCS file: /cvsroot/nsis/NSIS/Source/exehead/exec.c,v
retrieving revision 1.139
diff -r1.139 exec.c
1006c1006
< GetStringFromParm(0x11);
---
> GetStringFromParm(0x21);


Thanks, uploaded.