Winamp & Shoutcast Forums

Winamp & Shoutcast Forums (http://forums.winamp.com/index.php)
-   NSIS Discussion (http://forums.winamp.com/forumdisplay.php?f=65)
-   -   trouble with StrCmp and labels (http://forums.winamp.com/showthread.php?t=252656)

cjones 4th August 2006 19:03

trouble with StrCmp and labels
 
I'm trying to detect if Windows Media Encoder is installed and if not I want to kick it off.

Here's the code I put together and the error I'm getting. I'm at a loss why it doesn't work, then again, I've only playing with this for a few hours.

StrCmp "$0" "1" equal=installWME, nonequal=
Invalid command: :installWME

Section "WME"
Call IsWMEInstalled
Pop $0
StrCmp $0 1 installWME

:installWME
ExecWait '"$INSTDIR\WMEncoder.exe"'

SectionEnd

Function IsWMEInstalled
Push $0
Push $1

ReadRegStr $1 HKLM SOFTWARE\Classes\CLSID\{632B606B-BBC6-11D2-A329-006097C4E476} ""
Push $1
Exch $1
Pop $1
IfFileExists $1 0 noWME
StrCpy $0 0

noWME:
StrCpy $0 0
Goto done

done:
Pop $1
Exch $0

FunctionEnd

kichik 4th August 2006 19:07

It's the other way around. It's `installWME:`, not `:installWME:`. Use the LogicLib instead, it's much simpler.

cjones 6th August 2006 18:01

Thanks, that fixed it. Here's the next problem. I'm using the standard .NET detection script that is in the help file. When I call it in the following section it runs both found.NETFramework: and no.NETFramework. Any idea what I'm doing wrong?

I'm also checking to see if Windows Media Encoder is installed and it doesn't matter if it's installed or not, it fires off the label to start the install.

Section "DotNet"
Call IsDotNETInstalled
Pop $0
StrCmp $0 1 found.NETFramework no.NETFramework

found.NETFramework:
MessageBox MB_OK ".NET is already installed"
Pop $0

no.NETFramework:
MessageBox MB_OK "Microsoft .NET 1.1 is required. Taking you there to download it."
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=262D25E3-F589-4842-8157-034D1E7CF3A3"

SectionEnd

Afrow UK 6th August 2006 18:03

Follow the code through... What happens when you reach the label "no.NETFramework"... it shows the MessageBox, Pop's $0 (why?) and then what? Continues to run the code after the label "no.NETFramework". You need to jump over the code with a Goto instruction.

Or, like kichik has already said, use LogicLib. It really is much easier.

-Stu

cjones 7th August 2006 20:22

Gotcha, that fixed it.
The thing that is really killing me is this Push, Pop thing. I'm use to setting variables and then pulling the values.

Now I'm getting an error when I run the installer that says Installer corrupted, invalid opcode.

Afrow UK 8th August 2006 10:57

That happens if you try and Pop or Shift when there's nothing on the stack. The code you've posted above will cause that error if there's only one stack item because you've got two Pop's. You don't even need the second one. Why is it there?
Have you removed it?

-Stu

kichik 8th August 2006 15:35

Pop doesn't do that. Only a bad Exch or an invalid Reboot opcode trigger that message.

Afrow UK 8th August 2006 15:55

Not sure why I said them. Getting confused with my array plugin :S

-Stu


All times are GMT. The time now is 04:46.

Copyright © 1999 - 2010 Nullsoft. All Rights Reserved.