Prevent additional uninstaller uninstall everything - inno-setup

I have an innosetup installer which installs a plugin into the root directory of an application which is also installed with innosetup. After installing my plugin into this dir there are multiple uninst* files:
app/
unins000.exe (the apps uninstaller)
unins000.dat
unins001.exe (another plugin's uninstaller)
unins001.dat
unins002.exe (my plugin's uninstaller)
unins002.dat
Problem is running unins002.exe uninstalls all files in this folder, I need only the files created by my plugin to be uninstalled.
How can I achieve this?

In the [setup] section you need to provide a different (or non-default) AppId value.
When the installer runs and the same the AppId exists for an existing uninstall manifest then Inno will merge them.

Fixed. It was due to a misconfigured UninstallDelete section.

Related

NSIS installer remembering previous install directory

I've got a problem where the NSIS installer is remembering the previous install location of the product I want to install after the previous version of the product is installed.
I want to prevent this behavior ... so that the installer uses the default directory I specify in the script.
Found the solution ... needed to remove InstallDirRegKey from my script.
http://nsis.sourceforge.net/InstallDir_doesn%27t_work

Installshield - The files for installation requirement could not be found. The installation will now stop

I am using InstallShield to build an installer to install some custom prerequisites on my client computers. But everytime I try to run the installer, I get:
The files for installation requirement Crystal Runtime x86 could not be found. The installation will now stop. This is probably due to a failed, or canceled download.
I have told the prereq where the File sits on my local development machine, and it seems like InstallSheild takes this file, and copies it to the ISSetupPrerequisites folder in the same directory as the .exe file it generates. I can confirm my file exists in the ISSetupPrerequisites folder.
Is there something else I need to do to tell the installer where my .msi installer is for my prerequisite?
My guess is that you've copied the installer (setup.exe or something similar) to the PC that you're installing on but not the ISSetupPrerequisites folder. You need to do this because you haven't changed the setting that puts the prerequisites (Crystal Runtime x86 in your case) inside the installer itself.
To enable this, go to your release's "Setup.exe" tab and change the value of the property called "InstallShield Prerequisites Location" from "Copy From Source Media" to "Extract From Setup.exe".
You should verify the checksum and filesize attributes in the redistributable's pre-requisite file. If these don't match the local/downloaded file you'll see that error
(Example files node for MSFT VS 2010 Tools for Office Runtime)
<files>
<file LocalFile="<ISProductFolder>\SetupPrerequisites\VSTOR\vstor_redist.exe" URL="http://download.microsoft.com/download/B/5/1/B51D2F9E-1432-4B76-8248-F47316BB8EE0/vstor_redist.exe" CheckSum="a1b5c8fb246a9d0d66f12d3b6f5e471d" FileSize=" 0,40051808"></file>
</files>
Make sure the CheckSum value inside the .prq file is exactly the same as the MD5 checksum of the package copies on the web url and under < ISProductFolder >\SetupPrerequisites
You can calculate MD5 on windows using the command
certutil.exe -hashfile myPackage.exe MD5

RCP P2 updates in multi-user environment from read-only installation

I have created an Ubuntu package to install my RCP app. The installed files are owned by root. Is it possible for a user to subsequently install updates through P2? Documentation about Eclipse multi-user installs suggests that it is possible, along with the answer to this question.
However, when I start up the application, it does not automatically check for updates as usual, and the Update Site that I had specified in p2.inf is not listed in the "Install New Software..." dialog.
Using the -configuration or -data runtime options did not help.
I can make it work with a hack by running sudo chown -R <my_username> /opt/<my_app_installation>. When I subsequently launch the application, it does properly check for updates on startup, and my update site is properly listed in the "Install New Software..." dialog. Certainly I would prefer that whatever data it is writing to that installation directory be instead written to the user's home directory.
Supplementary info:
Here is a list of files and folders that showed up in my installation directory only after the directory was given ownership by <my_username> and the program was run.
/opt/<my_app_installation>/configuration/org.eclipse.core.runtime
/opt/<my_app_installation>/configuration/org.eclipse.equinox.app
/opt/<my_app_installation>/configuration/org.eclipse.osgi
/opt/<my_app_installation>/p2/org.eclipse.equinox.p2.engine/profileRegistry/profile.profile/1339896994308.profile.gz
/opt/<my_app_installation>/p2/org.eclipse.equinox.p2.engine/profileRegistry/profile.profile/.data/.settings/org.eclipse.equinox.p2.ui.sdk.prefs
/opt/<my_app_installation>/p2/org.eclipse.equinox.p2.engine/profileRegistry/profile.profile/.data/.settings/org.eclipse.equinox.p2.ui.sdk.scheduler.prefs
/opt/<my_app_installation>/p2/org.eclipse.equinox.p2.repository
More experimental results:
Even with a writable (chown'd) installation directory, no files are placed there when the
-configuration $HOME/.my_app_files runtime option is supplied.
There are lots of limitation of p2 itself for share install. AFAIK there is no significant improvement in latest release Juno as well.
But a guy from Redhat is working on p2 install with RPM package, you can read his progress in his blog post. The work and idea could be shared with Debian package.

unattended cygwin setup without setup.ini

I´m doin a unattended cygwin installation and I was wondering if there will occure any problems without a setup.ini.
Following: my "install-folder" includes a setup.exe and a subfolder release (within all the packages packed).
I´m starting the setup silent (with Nsis) and install the packages. In NSIS I define the Root, the location of the packages etc.
I think it works so far (I´m not sure because i´ve got a curious error in cmake). There are many instructions how to modify the whole setup for an offline installation. But I don´t get the point why I have to modify it at all.
I hope anyone has got experience with this issue!
#Daniel Le cygwin installs the packages without the .ini (all of them). And there has nothing to be downloaded because the packages are on the local machine.
I believe the setup.ini is essential to the setup process, as it indicates which packages to be downloaded and installed.
The Ini file is so far only a description for file locations and paths to be set as default. It is not necessary to have the ini file if you wanna install some packages!
That´s my conclusion.

Uninstalling files not originally installed by INNO setup

I use Inno Setup for my product's installer/uninstaller. My software has auto-update capabilities during which time it may not only change existing binaries but may also add new ones. These are additional product files that are placed into the product's installation directory - not data files.
The Inno Setup uninstaller only knows to uninstall files by name that it originally put there at install time. Since an automatic update doesn't change either the unins000.exe or unins000.dat files that make up the uninstaller, what would be the appropriate way to delete these new product files at uninstall time?
The easiest way I see is to have a batch file in your program dir that deletes all files that were added after the installation and is executed on uninstall:
[UninstallRun]
Filename: cleanup.cmd; WorkingDir: {app}; Flags: shellexec runminimized
UninstallRun commands are executed as the first step of the uninstallation, so this should work fine. If you are bothered by the idea of running a batch script, you can easily create your own cleanup.exe that deletes the files.
When you perform the auto update, you must also update the cleanup file, so that it includes all files that were added with the current update.

Resources