I have a Java program (Eclipse RCP in case that matters) that is installed and uninstalled with install4j. This works fine, except that the uninstaller will happily uninstall (most of) my program while it is running, leading to an incomplete uninstall and a program crash (with potential data loss).
I would like the uninstaller to check whether the program is running before deleting any files, and prompt the user to exit the program if necessary.
I could not find any options to supports this in the install4j documentation or forums.
On stackoverflow I found answers for NSIS and Inno, but not for install4j.
Can this be done with install4j, or do I need custom code? Do I have to make my program react to requests/messages to make it detectable?
You can add a "Check for running processes" action before the "Uninstall files" action.
Getting
java.io.IOException: Cannot run program "C:\Program Files\NetBeans
8.2\bin\netbeans.exe" (in directory "C:\Program Files\NetBeans 8.2"):
CreateProcess error=2, The system cannot find the file specifiedat
java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
I tried downloading and installing netbeans and the JDK bundle and still getting this. Might be netbeans independent but my system that's causing it.
Note the location of the installer.
Open a Command Prompt running as administrator:
2.1. Go to Start button > All Programs > Accessories
2.2. Right click Command Prompt
2.3. Select Run as administrator
In the Command Prompt use the cd command to change to the directory containing the installer.
Execute the following command to extract the contents of the installer: [Note: You might need to change the name of the installer to match the one you have.]
netbeans-8.2-ml-java-windows.exe --extract
Execute the following command to manually execute the installer:
java -jar bundle.jar
You will see rapid scrolling output in the Command Prompt window for a few moments, then the installer window will appear to begin the installation process.
Once Netbeans is installed on Windows 7, you may also need to run Netbeans as an Administrator--especially for database, web application and web services development, which each require server resources.
Source
I'm running Eclipse under a Windows 7, 64-bit installation on which I have administrator privileges.
Since I first installed Eclipse many months ago, I've been able to keep it up to date with the Help > Check for Updates function—but starting a couple of weeks ago, it gave the message
Insufficient access privileges to apply this update.
Even when I ran Eclipse as an administrator, I continued to get this message. How can I fix it?
For anyone using Linux: I had this problem in Ubuntu because I had installed Eclipse in /opt, which was owned by root.
To get the updates, simply run Eclipse as root and then select the Help -> Check for Updates again. In general running applications as root is not a good idea, but if it's just to do an update... well that's what the root account is for :)
cd /opt/eclipse
sudo ./eclipse
Another (simpler?) approach which worked for me is to simply give the group "Users" write permission on C:\Program Files (x86)\eclipse.
Now, this is a security consideration, but you're NOT granting access to the whole of C:\Program Files (x86), just the eclipse installation.
I found a workaround for this stupid bug in Eclipse. Selecting updates one-by-one is disabled, but if you click Select all and then deselect the ones you do not need, you can proceed.
In Windows another option is to set the "Run as administrator" property on the Eclipse shortcut that you're using to start Eclipse. Right click on the shortcut and choose "Properties" from the dropdown menu. Click on the "Shortcut" tab in the Properties dialog and then click on the "Advanced..." button. In the Advanced Properties dialog set the "Run as administrator" option.
Hit same problem on Macos sierra 10.12.3 after clean install of Eclipse JEE Neon R. A clue was that my mac showed a dialog when I launched the app that asked:
“Eclipse.app” is an application downloaded from the Internet. Are you sure you want to open it?
When the updater dialog box showed "Insufficient access privileges to apply this update" I checked the Eclipse.app directory (I had downloaded & unpacked the .tar.gz file, if that matters) and saw this:
drwxrwxr-x# 3 chris staff 102 Jun 13 2016 Eclipse.app
I examined the extended attribute and saw this:
$ xattr Eclipse.app
com.apple.quarantine
That quarantine attribute seems to block the Eclipse updater! I removed that extended attribute like this:
xattr -d -r Eclipse.app
After that Eclipse updated itself very happily. HTH
For Linux Distros, most personal apps for all users are installed in the /opt/ folder. This folder is owned by root. My solution which has been tested to work is simply to open the opt folder in terminal call 'ls' to make sure you see the 'eclipse' folder in your current directory. It may be inside another folder.
Then simply use this command replacing 'user' with your username.
sudo chown -R user:user eclipse/
and that's it. Of course only you will be able to run updates on eclipse but I imagine you are the primary user of the computer.
Solving the problem was a multi-step process for me:
In a thread on another forum I found the advice that Eclipse should not be installed in C:\Program Files (x86). I had indeed installed (unzipped) it into that folder, so I moved it as advised to C:\Users\....
When I loaded Eclipse in its new location, I got a different message when I attempted to scan for updates: "There are no update sites to search".
I temporarily re-established my installation in C:\Program Files (x86), loaded it, and used Window > Preferences > Install/Update > Available Software Sites > [select all] > Export... to create an .xml file with my software sites.
Back in the C:\Users\... installation, I used the the same menu command (except Import instead of Export) to pull in the contents of that .xml file.
Now Help > Check for Updates is again functioning as it used to.
I fixed this problem (windows) by re-opening eclipse by right-clicking the eclipse.exe and selecting "Run as administrator".
Not sure why this step was needed all of the sudden but it worked. After my upgrade (I upgraded from eclipse sdk 4.3 -> 4.4) it still lets me make updates without running as administrator.
From Powershell, I set permissions on the folder like so:
& icacls "C:\ProgramData\chocolatey\lib\eclipse-java-neon\eclipse" "/grant" "domain\user:(OI)(CI)F" "/T"
Note: I had a different install location, as I used chocolatey to install eclipse
It is Possible with install4j to do an uninstall Force a Reboot And Continue with the Installation with Admin rights if they were granted with the Invocation for the uninstaller.
Any hints are welcome. Thanks
You can force a reboot by calling
context.triggerReboot(false);
in a "Run script" action. However, there is no feature that lets you call the installer again after the reboot and continue at the next screen.
What I would suggest in this case is to add a custom installer application for the post-processing on Installer->Screens & Actions and add a "Add a startup executable on Windows and OS X" action for this custom application to the installer.
After successful completion of the post-processing, you would have to delete the auto-start link. The link is in the directory
new File(FolderInfo.getSpecialFolder(FolderInfo.FOLDER_STARTUP, false)
has the name of the executable and a ".lnk" extension. If you use a "Delete files and directories" action, set its "Action elevation type" property to "Do not elevate".
How can I get my install4j installer to always suggest the default installation and not try to use the previous installation directory.
I added my directory to the media and checked Suggest Application directory on the Installation Location screen but I'm still getting undesirable behavior.
Wanted behavior:
user installed C:\Program Files\My App 1.0.0\
use runs installer for 2.0 and it prompts with C:\Program Files\My App 2.0.0\
Current behavior:
user installed C:\Program Files\My App 1.0.0\
use runs installer for 2.0 and it prompts with C:\Program Files\My App 1.0.0\
Thanks for the help
Peter
On Installer->Update Options, deselect the check box "Detect previous installation directory".