Hi,
As i have to insert 2 ini pages, i used InstOpts.dll similar to multini4 on sunjammer's site.I used same macros and same functions.
My problem is i am getting error when i use
ReadINIStr $3 "iniA.ini" "Field 3" State
Please help me.
thanks in advance.
lvsram
need help regarding multini4 (instopts.dll)
14 posts
what error message did you get?
Now i found the problem that i haven't given the complete path of ini file.
But there is one thing i feel like knowing.
Is there any way to know what the error is?
Thank you very much for the response.
--lvsram
But there is one thing i feel like knowing.
Is there any way to know what the error is?
Thank you very much for the response.
--lvsram
No there isn't. NSIS doesn't return any error strings.
need help in testing values from fields / remain in same ini file
now i am inserting 3 ini files by using multini4 from sunjammer site.
i am able to get the values. Now my problem is
1 . i want to make sure the user entered some value in the first and then only i want user to go to second page. and same thing for second and third pages.
2. Exactly where in the methods onCustomPage, onPageEntry, onPageExit,
do i have to check(i think mostly in onPageExit) ? and when i check if i find the blank values, how can i force the current page to be shown without going next page, unless user enters some value in the fields.
please help me.
Thank you
now i am inserting 3 ini files by using multini4 from sunjammer site.
i am able to get the values. Now my problem is
1 . i want to make sure the user entered some value in the first and then only i want user to go to second page. and same thing for second and third pages.
2. Exactly where in the methods onCustomPage, onPageEntry, onPageExit,
do i have to check(i think mostly in onPageExit) ? and when i check if i find the blank values, how can i force the current page to be shown without going next page, unless user enters some value in the fields.
please help me.
Thank you
In the example (multini4.nsi) you have a function called onCustomPage. In it the DLL is called (CallInstDll "$TEMP\instopts.dll" dialog). All you need to do is condition the entire calling process (quoted below) with some StrCmp or IntCmp depending on the input from the last page.
Push "$TEMP\\ini$0.ini"
CallInstDll "$TEMP\\instopts.dll" dialog
Pop $0
StrCmp $0 "success" Done
SetErrors
StrCmp $0 "back" Done
; Something else - abort the installer.
Call CleanUpAll
Quit sorry i didn't get exactly your point.
Thank you very much
Function onCustomPage
MessageBox MB_OK "start of onCustomPage 2val is $2" ;first place
Exch $2
MessageBox MB_OK "onCustomPage 2val is $2" ;second place
; Show our custom InstOpts pages.
Push "$TEMP\ini$2.ini"
CallInstDll "$TEMP\InstOpts.dll" dialog
Pop $2
StrCmp $2 "success" Done
SetErrors
StrCmp $2 "back" Done
; Something else - abort the installer.
MessageBox MB_OK "onCustomPage 2val in between is $2" ;third place
Call Cleanup
Quit
Done:
MessageBox MB_OK "onCustomPage 2val is $2" ; fourth place
Pop $2
FunctionEnd you mean to say to put the checking lines after StrCmp $2 "back" DoneThank you very much
After you call Exch $2 the page number is in $2 as long as you don't override it with Pop $2 in your example. Just pop the result to somewhere other than $2 ($0 for example) and then you should have the page letter during the whole function untill Pop $2.
If for example you want to save in $R0 the result of the first IO page and then according to it show or not show the second page use:
If for example you want to save in $R0 the result of the first IO page and then according to it show or not show the second page use:
Function onCustomPage
Exch $0
Push $1
; Show our custom InstOpts pages.
StrCmp $0 "B" 0 +2 ; second page
; // if value of $R0 from last page is
; // "don't show" then don't show
StrCmp $R0 "don't show" Done
Push "$TEMP\\ini$0.ini"
CallInstDll "$TEMP\\instopts.dll" dialog
Pop $1
StrCmp $1 "success" ReadData
SetErrors
StrCmp $1 "back" ReadData
; Something else - abort the installer.
Call CleanUpAll
Quit
ReadData:
StrCmp $0 "A" 0 +2 ; first page
ReadINIStr $R0 "$TEMP\\ini$0.ini" "Field 5" State
; else delete $R0 contents
StrCpy $R0 ""
Done:
Pop $1
Pop $0
FunctionEnd Hi Kichik,
Thank you very much for fast replies.
Sorry to ask you the same question again and again.
As i am new and weak in push and pop knowledge, i feel so confused.
Please help me . I almost done my installation things 80% and when i complete this other 20% which is data validation, i will be done for now.
I used the above code and it is not stopping at the first page still it is going to second page. This is the change i made to your code.
One more thing exactly i don't know how to control the pages like
there is a text field in page1 and i want to check that when the user is going to next page, and when the user is going to third page , i want to check a field in second page.
Second thing is i want to fill one field in a page explicitly myself
using writeInistr, i feel good place is after calling CallInstDll .
Please tell me the correct place.
Please make changes to the below code in your reply.
Thank you very much.
Thank you very much for fast replies.
Sorry to ask you the same question again and again.
As i am new and weak in push and pop knowledge, i feel so confused.
Please help me . I almost done my installation things 80% and when i complete this other 20% which is data validation, i will be done for now.
I used the above code and it is not stopping at the first page still it is going to second page. This is the change i made to your code.
One more thing exactly i don't know how to control the pages like
there is a text field in page1 and i want to check that when the user is going to next page, and when the user is going to third page , i want to check a field in second page.
Second thing is i want to fill one field in a page explicitly myself
using writeInistr, i feel good place is after calling CallInstDll .
Please tell me the correct place.
Please make changes to the below code in your reply.
Thank you very much.
Function onCustomPage
MessageBox MB_OK "[0]start of onCustomPage before exch ,2val is $2" ;first place
Exch $2
MessageBox MB_OK "[0]onCustomPage after exch ,2val is $2"
; Show our custom InstOpts pages.
StrCmp $2 "B" 0 +2 ; second page
; // if value of $R9 from last page is
; // "don't show" then don't show
StrCmp $R9 "don't show" Done
Push "$TEMP\myini$0.ini"
CallInstDll "$TEMP\instopts.dll" dialog
Pop $2
StrCmp $2 "success" ReadData
SetErrors
StrCmp $2 "back" ReadData
; Something else - abort the installer.
Call Cleanup
Quit
ReadData:
StrCmp $2 "A" 0 +2 ; first page
ReadINIStr $3 "$TEMP\myini$2.ini" "Field 8" State
StrCmp $3 "" 0 +2
StrCpy $R9 "don't show"
; else delete $R9 contents
StrCpy $R9 ""
Done:
Pop $2
FunctionEnd please help me
Hi any body,
please help me.
Thank you.
Hi any body,
please help me.
Thank you.
Second thing is i want to fill one field in a page explicitly myself using writeInistr, i feel good place is after calling CallInstDll. Please tell me the correct place.If you want the change to be visible to the user you have to make the change before you call the DLL that will parse the INI file. If you do it after you call the DLL it will not show it.
I have attached a correct script, I will explain about it later if you want, just tell me what you don't understand.
small problem with attachment
Hi Kichik,
Thank you very much for help.
I have copied your coded and tried, but this has small problem.
Go to First ini
Click next button
checking validity of the field in first ini
if the user left the field in first ini blank then i don't want to proceed forward to any page but keep him in same page. this is similar to all 3 ini pages.
When i copied your code this is helping not to go to second ini page but going to third ini page.
If you want i can send you my nsi and ini files.
Thank you very much
the code you sent and i made a change at one line
StrCmp $3 "" DontShow Show
Hi Kichik,
Thank you very much for help.
I have copied your coded and tried, but this has small problem.
Go to First ini
Click next button
checking validity of the field in first ini
if the user left the field in first ini blank then i don't want to proceed forward to any page but keep him in same page. this is similar to all 3 ini pages.
When i copied your code this is helping not to go to second ini page but going to third ini page.
If you want i can send you my nsi and ini files.
Thank you very much
the code you sent and i made a change at one line
StrCmp $3 "" DontShow Show
;...
StrCmp $3 "" DontShow Show
;... no need to rewrite the whole script, only one line has changed... kichikUse IO's MinLen, MaxLen and ValidateText fields to do the trick. Read more about it in the InstallOptions readme.
Thank you. I did the above changes checking minlength.