Archive: What am I doing wrong here? I want to use NSIS but MSI works...


What am I doing wrong here? I want to use NSIS but MSI works...
Well, basically we have this Visual Basic app named Bottler (www.memelog.com/bottler), and it has worked great with a MSI installer in the past. Recently (september) we have used a NSIS script to install our file, however the installed executable doesn't work well or at all on os's other than english.

More complaining by users can our solutions can be found at (http://www.memelog.com/bottler/forum...?p=13843#13843)..

Basically I would like it if you had any solutions other than providing english dll's with our distro. We aim at getting every version of 2000 and XP to be compatable with our software under NSIS.

You can find source for our program and the NSIS installer here: http://www.memelog.com/bottler/Bottl...116_Source.zip


I see no reason whatsoever to blame NSIS on this. It's your program that gives the error, your program must have changed too since September and NSIS doesn't even "know" what VB is. Please provide some more details on what made you jump to this conclusion.


I know it's our fault, not NSIS...

I guess what I want to know is how should I handle installing international versions of DLL's. Is there a way to detect the language of the OS or a place to get international DLL's?

In MSI it does this for us, so we are just wondering how to have the same effect in NSIS. We have lots of french, german, and portugese users that don't work because the NSIS script is broken.


Ah, ok, sorry...

I really doubt MSI contains the versions of those DLLs you need to install for every possible language Microsoft supports. That would be huge. I think the problem is here:

SetOutPath $SYSDIR
File "C:\WINDOWS\system32\scrrun.dll"
File "C:\WINDOWS\system32\mswinsck.OCX"
File "C:\WINDOWS\system32\mscomctl.OCX"
File "C:\WINDOWS\system32\comct332.OCX"
File "C:\WINDOWS\system32\tabctl32.OCX"
File "C:\WINDOWS\system32\msflxgrd.OCX"
File "C:\WINDOWS\system32\richtx32.OCX"
It overrides the DLLs without checking if the version you're installing is newer. It also doesn't check if they're in use and copies them after reboot if they are. You should use UpgradeDLL (find it in the Archive or in NSIS 2 documentation) to upgrade system DLLs.

You can also find useful information about installing VB6 runtimes in the documentation.