Skip to content
⌘ NSIS Forum Archive

UpgradeDLL vs makensis on linux

9 posts

code101#

UpgradeDLL vs makensis on linux

I'm building installers on the fly for my users using php and makensis on linux. This works great. I just added a shell extension to the mix, and I'm using the UpgradeDLL script to install it. This works fine on my Win32 machines, but does not work under linux. Specifically, I get this:

Error: GetDLLVersionLocal is disabled for non Win32 platforms.

Is there anything I can do about that?

Thanks,
kichik#
Your options are using Wine or helping to implement GetDLLVersionLocal for non Win32 platforms.
kichik#
Implemented in latest CVS version. I've only tested it on Windows so please test it and let me know if it works (snapshot updated).
Guest#
It does work on Linux but sometimes fails with smth. like "GetDLLVersionLocal: error reading version info from "tk83.dll": Unicode conversion failed". I've tested it with 'tcl83.dll' and 'tk83.dll' DLLs (Python's TCL/TK libs) so it works with 'tcl83.dll' but fails with 'tk83.dll'.
kichik#
Can you compile a debug version and tell me which line in ResourceEditor.cpp generates that exception?
Guest#
There're just two lines which raise runtime_error('Unicode conversion failed') - 442 and 446. It seems that the 446 raises an exception when there're some global iconv problems, so I'd have a look at 442 (I checked it out, it is 442 indeed).
For the moment I replaced 424 from

if (rdToScan->Entries[i].NameString.NameIsString) {
to

if (0)
(always set the name to entry's id) so it works for me.
kichik#
I'll try to find out why it fails converting strings from tcl83.dll, but I think the solution will be keeping the strings in Unicode. The conversion in CResourceEditor is useless and lossy anyway.
w31rd0#
Thanx a lot!
But most likely you won't find it out, because it fails with 'tk83.dll', not with 'tcl83.dll' 🙂)
BTW about the new (in 2.01) 'Library.nsh': it looks fancy and more handy than UpgradeDll. Will it ever be implemented in Linux version as well?
kichik#
I've fixed the problem in the latest CVS version. The lossy conversion, however, is still there. I have opened a bug report about it for easier tracking.