code101
11th September 2004 00:32 UTC
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
11th September 2004 10:46 UTC
Your options are using Wine or helping to implement GetDLLVersionLocal for non Win32 platforms.
kichik
11th September 2004 12:26 UTC
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).
w31rd0
27th October 2004 13:07 UTC
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
28th October 2004 19:15 UTC
Can you compile a debug version and tell me which line in ResourceEditor.cpp generates that exception?
w31rd0
29th October 2004 08:08 UTC
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
29th October 2004 13:35 UTC
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
29th October 2004 16:02 UTC
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
11th December 2004 16:21 UTC
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.