user564548
user564548

Reputation:

InnoSetup: Pascal script for cancelling setup when file/folder exists

In my InnoSetup I use several file actions in the InstallRun section. If those are executed correctly without problems then a certain temp folder should have been deleted.

If something has gone wrong then the temp folder is still there. In that case I want the setup to be canceled with a messagebox displaying an error message of my choice.

As I have no experience (yet) with Pascal script I kindly ask you to provide me with an example script yo do this.

Thanks in advance!

Addition: I'll now explain the reason I need this. The scenario is updating an existing version, which is a Windows Service application. Before updating those files I have to uninstall the services first. For this I use my own commandline that's in the installation package. The other new files will be temporary unpacked to a temp folder (subfolder of app folder). After the Windows services are uninstalled the new files are moved from the temp folder to the app folder. If something goes wrong here I want to cancel the setup and show an error message to the user. I can best tell if something has gone wrong by checking if the temp folder is still there.

Upvotes: 0

Views: 881

Answers (1)

Miral
Miral

Reputation: 13095

Assuming that you mean the [Run] section, it is not possible to cancel the installation that late in the process.

Instead, you should look at using PrepareToInstall. In this, all you need to do is to stop and deregister the old service, either directly via API or by invoking a command on the old service EXE as you choose. (Don't forget to handle the case when the service doesn't exist yet, for new installs.)

After this [Files] will replace the files as normal and you can then [Run] or use code (via AfterInstall or CurStepChanged(ssPostInstall), depending on the time you want it to happen) to re-register and start the service.

No need to muck around with temporary folders -- which is good, because that would have caused problems for uninstall as well.

Upvotes: 2

Related Questions