Install4j: can installation executable be removed after install? - install4j

My Install4j configuration has no problem updating my executable and replacing the old instance.
However, my windows user profile is building up with each instance of the downloaded executable file:
install_1.0.0.exe
install_1.0.1.exe
install_1.0.2.exe
If I update to version 1.0.3, then I will see install_exe_1.0.3.exe stored here as well.
Is it possible for Install4j to delete this file upon update completion?
FWIW, this also occurs with Install4j updates. I have the following files in my user profile:
install4j_windows_5_1_10_with_jre.exe
install4j_windows_5_1_11_with_jre.exe
install4j_windows_5_1_12_with_jre.exe
install4j_windows_5_1_13_with_jre.exe

As of install4j 5.x, there is no clean-up mechanism for downloaded update installers, but you could build one yourself.
The place to add logic for deleting old installers would be in the updater. Each time a new installer is downloaded, you would have to save the download path to a persistent storage, such as the Java preferences store. When the updater is started, you could then load those saved paths and delete them.

Related

Delete updater media file after update

We plan to use the "Update downloader with silent version check". In this aspect we would like to delete the downloaded mediafile which contains the update after the update has been successful.
The "Download File" action has a checkbox for "Delete downloaded file on exit". However, we assume that this is deleted when the User interrupts the updation. After a successful install, the .exe file is not deleted.
Is there any built in provision with install4j that supports this (or) writing an own Delete files action would be the way to go forward?
You cannot delete the installer in the update downloader, because the update downloader will start the new installer and then exit. At the time when the update downloader exits, the installer is running and its executable cannot be deleted.
In the installer itself, you cannot delete the installer executable either. At the earliest, you can delete the installer executable in your own launcher when it is started the first time. You would have to program this kind of cleanup yourself.

install4j launcher issue on Mac OSX app store application

We’re using install4j to create installers for our Java application, PDF Studio.
We’re currently trying to submit our application to the Apple store and for this, need a pkg file. We’ve created a pkg file from the Application folder that is created after running the dmg installer created by install4j and are working on removing one by one all the warnings and errors reported by the Apple store.
One issue we are having is that symlinks are not allowed by the Apple store and the JRE contains a symlink for a file called libjli.dylib.
When we try to remove the symlink or replace it with the actual file, the i4j launcher for our application is broken.
When we remove the file from the install folder:
rm /Applications/PDF\ Studio\ 2018.app/Contents/PlugIns/jre.bundle/Contents/MacOS/libjli.dylib
We get an error message on launch saying "Java SE 8" couldn't be loaded because it's executable couldn't be located."
If we try to copy the file to the symlink location:
cp /Applications/PDF\ Studio\ 2018.app/Contents/PlugIns/jre.bundle/Contents/Home/jre/lib/jli/libjli.dylib /Applications/PDF\ Studio\ 2018.app/Contents/PlugIns/jre.bundle/Contents/MacOS
Then the launcher fails with no error message dialog.
If we run with install4j log enabled:
INSTALL4J_LOG=yes /Applications/PDF\ Studio\ 2018.app/Contents/MacOS/JavaApplicationStub
Then it will print "Error: could not find libjava.dylib."
Has anyone tried to do this and made it work?
It seems like the launcher is looking under /MacOS/libjli.dylib. We think it is the JavaApplicationStub executable file that decides where to look which is created by install4j.
Is there is a way to set where the launcher looks for the jre.bundle executable libjli.dylib?
You can extract the DMG and edit the Info.plist file so that it contains
<key>CFBundleExecutable</key>
<string>../Home/jre/lib/jli/libjli.dylib</string>
We will check if we can do this in general.

Visual Studio Code (VSCode) - how to update the standalone (.zip) version?

There is no "check for updates" when using the standalone/no install version.
What is best way to update a standalone version without losing settings etc.?
According to my experience (VSCode in a standalone .zip file uncompressed in D:\ using Win7 OS) you just need to download and uncompress the archive containing the new version (v 1.41.1).
When you run Code.exe in the new folder, your settings file is used and everithing is OK. (then, when you are really really sure that it is everithing OK, you could delete the old version).
If you changed the default settings file location, take a look at https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations
From the official doc it says when downloaded through zip file, one has download the release manually for each update and place the unzip version inside the Program files (Windows).
According to the special portable page all the settings, plugins, etc. of the standalone version
are stored in the data-folder. So assuming you called your vscode-folder vscode:
download the new version
unpack to vscode2 folder adjacent to current vscode
move data folder from vscode to vscode2
delete old vscode-folder
rename vscode2 to vscode
done
P.S.: Current portable versions notify about new version, but clicking on it leads to download, so above list still applies.
Edit 2020/08/04: To make a "normal" install portable one just needs to create the data folder inside the installation/unpack directory of VSC.
To download the old archive, replace user|system with archive in the URL.
Before:
https://update.code.visualstudio.com/1.69.2/win32-x64-user/stable
After:
https://update.code.visualstudio.com/1.69.2/win32-x64-archive/stable

How to remove a folder created by old version of application with files during upgrade in advanced installer

Many thanks in advance, I am using advanced installer 12.1, the scenario is we have already installed application with some custom location feature and is extends the default application location, this installation creates some folders to store temporary files like "Temporary" folder, this folder is used by the application on every minute basis and hence there are some files in this folder, now issue is when i run a new build or try to install the new version of the application, i again select the another custom location, before finishing the installation the installer deleting all the folders installed with older version but not deleting the folders which contains files created by the application e.g the temporary directory above is deleted if it is empty but when it is non-empty it is not removed.
Solution i tried:
1) I used file Removal tool to remove the file, but i think it point the current location and not pointing the older application path.
2) A custom VB script, but again the same issue as #1
3) I tried uninstall cleanup wizard, result #1
Please guide me how i can delete that folder, any help would be appreciated.
Thanks

install4j uninstall previous installation

I am creating an update for an application built in install4j and I want to overwrite the files in the installation directory but keeping the configutation files. I manually edited some of them to never be overwriten but I cannot keep the files created by user input when installing it for the first time.
Is it possible to set a condition in the "Uninstall previous installation" so that it keeps the user's input? The user's input does not exist in the distribution tree. This means that I cannot manually edit it so that it is never uninstalled.
Why would you want to move the file? The response file you either load if it is an update or leave install4j to delete it.
The file is usually loaded on updates to use some variable the user set in the initial install, like a username, so you won't have to ask him again.