I have created action script which will uninstall the application through .iss file, but it keeps failing on this particular action script line. Tried different Solutions but not working. Can anyone provide any solution to this ?
parameter “baseFolder” = “__Download”
wait “{pathname of system folder}\cmd.exe” /C “C:\Program Files (x86)\InstallShield Installation Information{2018E638-9C1E-4627-9B6D-5E90CC648259}\setup.exe” /s /f1"{parameter “baseFolder”}uninstall1.iss"
Thanks for responding. Here is the partial script if it helps.
action uses wow64 redirection false
// Checking for the Uninstall GUIDs for Uninstallation of the Older version Drivers in x32 registry Completed parameter “UninstallGUID32” = “{concatenation “;” of (names of keys whose ((exists value “Publisher” of it AND (value “Publisher” of it as string contains “App NAme” or value “DisplayName” of it as string contains “App Name”))AND(exists value “DisplayVersion” of it AND (value “DisplayVersion” of it as string as version < “4.0.0.0”))) of keys “HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall” of (x32 registries))}” Completed if {not (parameter “UninstallGUID32” = “”)} Failed wait “{pathname of system folder}\cmd.exe” /C “C:\Program Files (x86)\InstallShield Installation Information{GUID}\setup.exe” /s /f1"{parameter “baseFolder”}uninstall1.iss" > “{parameter “logFolder”}\setup_uninstall.log” 2>&1
else
waithidden msiexec.exe /x {parameter “UninstallGUID32”} /quiet /norestart
endif
// Checking for the Uninstall GUIds for Uninstallation of the Older version Drivers in x64 registry
parameter “UninstallGUID64” = “{concatenation “;” of ((names of it) of keys whose ((exists value “Publisher” of it AND (value “Publisher” of it as string contains " App Name” or value “DisplayName” of it as string contains “App Name”))AND(exists value “DisplayVersion” of it AND (value “DisplayVersion” of it as string as version < “4.0.0.0”))) of keys “HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall” of (x64 Registries))}"
if {not (parameter “UninstallGUID64” = “”)}
waithidden msiexec.exe /x {parameter “UninstallGUID64”} /quiet /norestart
endif
Also, action downloads the.iss file from the root server into the __Download which is stored into the parameter" basefolder" & i tried some commands on cmd and they are running but not able to run it bigfix or fixlet debugger.
This is the path for the setup.exe which is created during the installation of the application.
Path :C:\Program Files (x86)\InstallShield Installation Information{2018E638-9C1E-4627-9B6D-5E90CC648259}\setup.exe
I believe the exit code is returned from the installer, not the BigFix action. If it completed, I would check to see what the exit code means in reference to the installer.
I’ve had issues before with how CMD handles the command line, when there are multiple quoted parameters. Try this - wrapping the whole command in extra doublequotes. It looks like it should not work, but it does, because of how CMD.EXE does some special argument handling.
wait "{pathname of system folder}\cmd.exe" /C ""C:\Program Files (x86)\InstallShield Installation Information{parameter "UninstallGUID32"}\setup.exe" /s /f1"{parameter "baseFolder"}uninstall1.iss" > "{parameter "logFolder"}\setup_uninstall.log" 2>&1"
If it still fails, at least it should create that setup_uninstall.log and give a clue as to why. I could see some potential issues if multiple GUIDs are matched.
Edit: just noticed the embedded curlybrackets, thanks D.Dean. I think in place of {GUID} in the command, you needed {parameter “UninstallGUID32”}, and that parameter itself should have the curly-brackets included, right?
UinstallGUID32 will not be there as the path where the setup is different. i have put the condition that if the 32bit registry is found then the setup.exe which will be already present on the user’s desktop on this Path :C:\Program Files (x86)\InstallShield Installation Information{2018E638-9C1E-4627-9B6D-5E90CC648259}\setup.exe will run and execute the uninstall1.iss file to uninstall the application.
Also, I have tried with the double quotes but the action failed.
If you are using a literal guid in the folder name, why are you looking for the guid in the registry?
Why is the literal guid only used IF the registry search found a guid?
Can you paste the command line that it is trying to execute, from the client log, since the client log shows what it is trying to do after all the relevance is evaluated.
here is the command line from the logs
Command succeeded (Exit Code=1) wait “C:\Windows\system32\cmd.exe” /C “C:\Program Files (x86)\InstallShield Installation Information{2018E638-9C1E-4627-9B6D-5E90CC648259}}\setup.exe” /s /f1"__Download/uninstall1.iss" (action:4994433)
The two things I’m observing is you still don’t have the whole command line wrapped in doublequotes, and the escaping is incorrect on the close-curlybracket - you need to escape the { as {{ to prevent a relevance substitution from beginning, but no need to escape } as }} since you will not be inside a substitution then.