Archive: Build NSIS problem


Build NSIS problem
I have download source from CVS and installed Python and SCons, but when I open a console in source and type scons
I got a error: scons
not a command. What wrong for me?


Make sure scons.bat is in the path.


I had add to path environment but got another error:

scons: *** No SConstruct file found.
File "G:\Python24\scons\SCons\Script\Main.py", line 891, in _main

I make sure SConscript is in currently path.


Change the working directory to the directory where you put the NSIS source code. Make sure it contains a SConstruct file.


Thanks kichik, I can rebuild NSIS.
These is another problem: I changed #define NSIS_MAX_STRLEN 1024 to #define NSIS_MAX_STRLEN 8192 and building NSIS, when I using this makensis.exe to compile a NSIS script I have found that all components missing only leave one. Is it a bug?


I don't understand. What component is missing?


I have 3 section, if #define NSIS_MAX_STRLEN 1024, when build makensis.exe and then compile script, and running the installer, all section display in component page. But if #define NSIS_MAX_STRLEN 8192, the component page only display section 1.


You must have forgot to install the stubs. The compiler created section structs with 8192 bytes for the name, but the stub reads them as 1024 and so misses the real two last sections. Don't copy anything from the build folder. Use 'scons PREFIX="C:\..." install' or 'scons dist' as instructed in Appendix G.


I have the same problem but different :weird:. I have followed the steps above but when it starts to compile it throws many errors. It says it is using mstoolkit but all I have is visual studio 6 pro edition. Then it has several commands following that, that have six or seven commands calling the resources (gdi32 and others) and after each command (there are about seven), it says 'bad command or filename' which is the error shown when the system can't find the program being called. Then there are several more errors, then it shows a dialog saying: 'this program has executed an invalid instruction. Click ok to end this program' or similar message. Any thoughts?


How exactly does it say it's using MSTOOLKIT? It shouldn't be using it unless you pass MSTOOLKIT=yes on the command line.


Another build problem...
I have another build issue...

I downloaded the source for 2.08, downloaded python 2.4 and the latest version of SCons. When I attempt a build I get the following errors (seems like I am missing a header file?):
-------------------------
scons: Building targets ...
cl /nologo /O1 /W3 /c Contrib\AdvSplash\advsplash.c /Fobuild\release\AdvSplash\a
dvsplash.obj
advsplash.c
Contrib\AdvSplash\advsplash.c(214) : error C2065: 'LWA_ALPHA' : undeclared ident
ifier
Contrib\AdvSplash\advsplash.c(214) : error C2065: 'LWA_COLORKEY' : undeclared id
entifier
Contrib\AdvSplash\advsplash.c(244) : error C2065: 'WS_EX_LAYERED' : undeclared i
dentifier
Contrib\AdvSplash\advsplash.c(270) : error C2065: 'DWORD_PTR' : undeclared ident
ifier
Contrib\AdvSplash\advsplash.c(270) : error C2146: syntax error : missing ')' bef
ore identifier 'myWnd'
Contrib\AdvSplash\advsplash.c(270) : error C2198: 'timeSetEvent' : too few actua
l parameters
Contrib\AdvSplash\advsplash.c(270) : error C2059: syntax error : ')'
scons: *** [build\release\AdvSplash\advsplash.obj] Error 2
scons: building terminated because of errors.
-------------------------

If I attempt to skip the advsplash.c file, I get more errors further down the line on other files (another missing header file?):
-------------------
Creating library build\release\Library\TypeLib\TypeLib.lib and object build\r
elease\Library\TypeLib\TypeLib.exp
cl /nologo /O1 /W3 /TP /c Contrib\MakeLangId\MakeLangId.cpp /Fobuild\release\Mak
eLangId\MakeLangId.obj
MakeLangId.cpp
Contrib\MakeLangId\MakeLangId.cpp(13) : error C2065: 'LANG_INVARIANT' : undeclar
ed identifier
Contrib\MakeLangId\MakeLangId.cpp(29) : error C2065: 'LANG_DIVEHI' : undeclared
identifier
Contrib\MakeLangId\MakeLangId.cpp(37) : error C2065: 'LANG_GALICIAN' : undeclare
d identifier
Contrib\MakeLangId\MakeLangId.cpp(54) : error C2065: 'LANG_KYRGYZ' : undeclared
identifier
Contrib\MakeLangId\MakeLangId.cpp(62) : error C2065: 'LANG_MONGOLIAN' : undeclar
ed identifier
Contrib\MakeLangId\MakeLangId.cpp(79) : error C2065: 'LANG_SYRIAC' : undeclared
identifier
scons: *** [build\release\MakeLangId\MakeLangId.obj] Error 2
scons: building terminated because of errors.
--------------------

Any thoughts?


You're missing the latest Platform SDK.


It doesn't look like I can install that since I am still using visual studio 6.0.

Thanks for your help... I'll just have to do without the LogSet option for now.


You can use the Platform SDK with Visual Studio 6.0.


According to the Microsoft site:
This SDK does not support working with Microsoft Visual C/C++®, 6.0 as support for VC 6.0 has ended. The last SDK that will work with VC 6.0 is the February 2003 Edition, you can order a CD on the fulfillment site. Side by side installations are not supported.
-------------------
They at least claim that you can't with the current version. Are you sure installing that won't screw things up?


BTW... thanks for the reply Joost!


Wow, that's nice of them. You can use the Visual C++ toolkit instead. You'll still be able to work with Visual C++ 6 after installing it.


Thanks for finding this kichik! This site (forum, tools, and WinAmp for that matter...) rocks!

-------------------
I have Visual Studio or Visual C++. Do I need the Visual C++ Toolkit?
The Visual C++ Toolkit will work fine alongside installed versions of Visual Studio and Visual C++. If you already use Visual Studio .NET 2003, you do not need the Visual C++ Toolkit, unless you want to see the included samples. Everything else included in the Toolkit is included with Visual Studio .NET 2003.


Slight problem still...

I installed the VC++ toolkit without any conflicts. However it still doesn't work.

If I try to use the command 'scons MSTOOLKIT=yes' then I get an error that it can't find the platform SDK. This is due to the check in the mstoolkit.py file:
-------------------
# look for platform sdk
if os.environ.has_key('MSSdk'):
PlatformSDKDir = os.path.normpath(os.environ['MSSdk'])
else:
try:
PlatformSDKDir = SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\MicrosoftSDK\Directories\Install Dir')[0]
PlatformSDKDir = str(PlatformSDKDir)
except SCons.Util.RegError:
try:
PlatformSDKDir = SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3\Install Dir')[0]
PlatformSDKDir = str(PlatformSDKDir)
except SCons.Util.RegError:
raise SCons.Errors.InternalError, "The Platform SDK directory was not found in the registry or in the `MSSdk` environment variable."
------------------------

So I tried to fool the file by adding an environmental variable MSSdk that points to the C++ Toolkit installation, and I am back to the original errors.

Are you sure that this is due to the missing platform SDK? And if so, I guess the VC++ Toolkit isn't enough.


The VC Toolkit doesn't replace the Platform SDK, only VC 6. You still need the Platform SDK.


still won't work... same errors
So I went to another machine, installed Python, SCONS, and the 2003 platform SDK. I tried 'scons MSTOOLKIT=yes' and got an error saying it couldn't fine VC++ toolkit. So I installed that and tried again. Now it seems to pick up the toolkit, but I am back to the same errors I started with. Are you sure there isn't something missing from the source? One of the files even seems to have a syntax error according to the error messages... (see attached file)


I'm sure nothing is missing from the source. Those errors are caused because of outdated header files. The updated header files are in the Platform SDK. Do you have the MSSDK environment variable defined properly? Notice that it fails to find basic libraries like gdi32, user32, etc. It seems something with the Platform SDK isn't configured or detected properly. Can you attach config.log?


Thank you for all of your help Kichik. After I manually created a MSSdk environmental variable, it appears to compile correctly.

Sorry for all of the trouble... should have checked that myself after the install.


This will probably make things even more bad. I have windows millenium edition (tumble-weed passes by). I have visited the microsoft site and found out that the ms toolkit and the platform sdk require windows xp (more tumble-weed passes by). Looks like I will have to stick with the binary for forever and a day.


Or upgrade to a real OS ;)