Hi all, I just discovered that wonderfull NSIS!!
Powerful, but complicated 🙂
So, I am trying to look if a software is installed, and if it is, to read its path in the registery.
I know I can find this in the registery
HKEY_LOCAL_MACHINE\SOFTWARE\ActiveState\ActiveTcl\8.4.8.0 --> (default) REG_SZ C:\thepath
But I didn't manage to find it and then read it ...
Im pretty unfamiliar with registery function of NSIS and even with the registery by itself...
This
seems interesting (if I succeed to install it 😁 ), but I don't know exactly what to put in args to find my key and then read it.
Thx for your help!!
How to check if a soft is installed?
8 posts
After some tests,
IfKeyExists "HKLM" "SOFTWARE" "ActiveState"
Seems to be working, but I still can't test deeper to check the subdirectories.
(IfKeyExists "HKLM" "SOFTWARE" "ActiveState\ActiveTcl\8.4.8.0") doesn't works.
And I still can't access that RG_SZ with the path :'(
IfKeyExists "HKLM" "SOFTWARE" "ActiveState"
Seems to be working, but I still can't test deeper to check the subdirectories.
(IfKeyExists "HKLM" "SOFTWARE" "ActiveState\ActiveTcl\8.4.8.0") doesn't works.
And I still can't access that RG_SZ with the path :'(
I've not tested it, but just looking at the macro code at http://nsis.sourceforge.net/archive/...nces=0,11,770, it appears that you should be calling the macro this way:
$R0 should then contain 1 if the reg key exists.
!insertmacro IfKeyExists "HKLM" "SOFTWARE\ActiveState\ActiveTcl" "8.4.8.0"
pop $R0
IfKeyExists?? never heard of that one and i can't find it in the docs. anyway, that question was asked so often (and is surely listed in the faq) that you should find the when answer searching this forum.
!insertmacro IfKeyExists "HKLM" "SOFTWARE\ActiveState\ActiveTcl" "8.4.8.0"
pop $R0
Doesn't work : it don't find the key any more 🙁
How can I do ?
I have another little problem : how to code a if {} else {} section?
I don't find explanations in the documentation and my try isn't working :
StrCmp $R0 "1" Iftest NIftest
NIftest:
MessageBox MB_OK "Didn't find it $R0"
Iftest:
MessageBox MB_OK '"Finded!! Pas besoin installer $R0"'
When it don't find it, it also execute the "Finded" code :'(
pop $R0
Doesn't work : it don't find the key any more 🙁
How can I do ?
I have another little problem : how to code a if {} else {} section?
I don't find explanations in the documentation and my try isn't working :
StrCmp $R0 "1" Iftest NIftest
NIftest:
MessageBox MB_OK "Didn't find it $R0"
Iftest:
MessageBox MB_OK '"Finded!! Pas besoin installer $R0"'
When it don't find it, it also execute the "Finded" code :'(
Do you have permissions to that part of the registry?
You've got me curious now, too, so when I get some free time later tonight, I can try to setup a quick test.
The If-then code should be included in the LogicLib header. (There's an example of its usage in the examples folder included with NSIS setup.)
You've got me curious now, too, so when I get some free time later tonight, I can try to setup a quick test.
The If-then code should be included in the LogicLib header. (There's an example of its usage in the examples folder included with NSIS setup.)
OK, it seems to work for me.
Since I didn't have the software, I manually edited my registry to create the proper keys. Then, I built a very simply install using the exact same code from Vytautas at the archive site listed above. It worked exactly like I expected it to.
I zipped the REG file I used along with the same script (attached). Feel free to look it over.
Since I didn't have the software, I manually edited my registry to create the proper keys. Then, I built a very simply install using the exact same code from Vytautas at the archive site listed above. It worked exactly like I expected it to.
I zipped the REG file I used along with the same script (attached). Feel free to look it over.
Oops! Forgot the attachment. I'll try that again...