Running setup files from Program file(X86) on client machine with .iss file to uninstall

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"

It’s difficult to tell from just a couple of lines, but bear in mind you need to disable WoW64 Redirection with a line similar to

action uses wow64 redirection false

Anywhere before the ‘wait’ command.

Aside from that, does the action download the uninstall1.iss file? Do these silent arguments work when you test them outside of BigFix?

Hi @JasonWalker,

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.

Where is it getting the GUID from? This is not a call for a parameter.

Thanks @D.Dean for the response.

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

FYI i am using the full given path.

That I understand but in the action failed message, the GUID is not present, it simple has the {GUID}.

Also, when dealing with action scripts that have curly brackets, you have to escape the beginning bracket.

{{GUIDID}

Ok, I will try and update here.

Hi @D.Dean,
I have tried escaping the literal but the action completed with exit code 1.

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?

Hi @JasonWalker,

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.

I don’t understand what you’re doing.

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.

Hi @JasonWalker

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)

Thank you.

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.

Try

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""