Archive: UpgradeDLL vs makensis on linux


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,


Your options are using Wine or helping to implement GetDLLVersionLocal for non Win32 platforms.


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).


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'.


Can you compile a debug version and tell me which line in ResourceEditor.cpp generates that exception?


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.

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.


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?


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.