uninstaller doesn't delete all installed files - install4j

We have a strange problem during our uninstall process.
After the uninstaller finishes, the user custom sources and some parts of the jre are still present on the system. In the uninstaller.log it states the postponed deletion of some of these files, but not all of them.
Has someone an idea why the deletion is postponed and why they are not deleted at all?
Additionally that doesnt happen on all systems, but is reproducable per system. For example on my developer machine everything works fine, but on a fresh vm the problem occurs.
[INFO] com.install4j.runtime.beans.actions.UninstallFilesAction [ID 29]: Execute action
executing auto uninstall
postponing deletion of C:\Program Files (x86)\mytool\jre\lib\rt.jar
postponing deletion of C:\Program Files (x86)\mytool\.install4j\user.jar
postponing deletion of C:\Program Files (x86)\mytool\.install4j\i4jruntime.jar
postponing deletion of C:\Program Files (x86)\mytool\jre\lib\resources.jar
postponing deletion of C:\Program Files (x86)\mytool\jre\lib\jsse.jar
postponing deletion of C:\Program Files (x86)\mytool\jre\lib\charsets.jar
postponing deletion of C:\Program Files (x86)\mytool\jre\lib\jce.jar
postponing deletion of C:\Program Files (x86)\mytool\jre\lib\jfr.jar
postponing deletion of C:\Program Files (x86)\mytool\.install4j\user\myaction.jar
Execute action successful after 717 ms
my first guess was that it has something to do with the user action. but this is part of the automatic updater which is not executed at all.
edit:
after adding an action "Check for running processes" it is still the same behaviour.
[INFO] com.install4j.runtime.beans.actions.misc.CheckRunningProcessesAction [ID 738]: Execute action
Property additionalExecutables: null
Property closeStrategy: Allow soft close
Property message: install4j hat entdeckt, dass mytool zur Zeit ausgeführt wird.
Bitte schließen Sie jetzt die folgenden Instanzen, und klicken Sie auf "Wiederholen", um fortzufahren, oder auf "Abbrechen", um zu beenden.
Property timeOut: 5000
Property allowIgnore: false
Property includeLaunchers: true
Property rollbackSupported: true
Execute action successful after 0 ms
My assumption from this log message is, there were no running processes, as the action is completed after 0 seconds?

This means that a launcher that is using the bundled JRE is still running. Some files in the JRE are locked in that case and they cannot be deleted.
Use a "Check for running processes" action in the uninstaller to shut down all launchers before the "Uninstall files" action is executed.

Related

Remove files under AppData that my app has downloaded in Install4J

I have an Install4J project where the application installed downloads content to:
${installer:sys.userHome}\MyApplication
The installer does not copy any files to this location, so it is not part of any file sets etc.
I have tried to add an action in the uninstaller using "Delete files and directories", and copied "${installer:sys.userHome}\MyApplication" to "Files and directories"
However, it doesn't seem to delete the folder.
Any pointers on what I am missing?
Edit:
Here is the uninstall log regarding the delete action:
I found this in the uninstall log regarding the delete action:
[INFO] com.install4j.runtime.beans.screens.StartupScreen [ID 23]: command: move 1 screens, executing actions, checking condition
[INFO] com.install4j.runtime.beans.screens.UninstallWelcomeScreen [ID 24]: Show screen
[INFO] com.install4j.runtime.beans.screens.UninstallWelcomeScreen [ID 24]: command: move 1 screens, executing actions, checking condition
[INFO] com.install4j.runtime.beans.screens.UninstallationScreen [ID 27]: Show screen
[INFO] com.install4j.runtime.beans.actions.files.DeleteFileAction [ID 869]: Execute action
Property directoryFilter: null
Property fileFilter: null
Property files: [C:\Users\nim99\AppData\Local\Atlas]
Property filesRoot: null
Property backupForRollback: true
Property recursive: false
Property rollbackSupported: true
Property showFileNames: true
Property showProgress: false
Execute action successful after 0 ms
[INFO] com.install4j.runtime.beans.screens.UninstallationScreen [ID 27]: command: move 1 screens, executing actions, checking condition
[INFO] com.install4j.runtime.beans.screens.UninstallSuccessScreen [ID 30]: Show screen
[INFO] com.install4j.runtime.beans.screens.UninstallSuccessScreen [ID 30]: command: finish
cleaning up
Finished at 2022-10-04 16:20:25
The "Property files: " seem to be ok. This is where my application downloads content to. It does download to sub-folders though:
I looked at the Delete Action and i have the "Recursive" checkbox checked. But the log seems to indicate that recursive is set to false.
Property recursive: false
Edit 2:
I changed the order of the uninstallation actions and now it seems to work!
I had the Uninstall files action first and the Delete files action after that.
With the Delete files action first, it seems to have fixed the problem.

Problem upon Installing PostgreSQL 12.1 Win8.1: “the database cluster initialisation failed”

I'm getting an error at the end of installing PostgreSQL 12.1 which is "the database cluster initialisation failed"
I have been searching all the day, so here what I tried:
1- Run the installation file as Administrator: didn't work.
2- Change the directory of "Data" to different place other than C:: didn't work.
3- Changed the whole installation directory to C:\Postgre or F:.... : didn't work
4- Turned off the KasperSky antivires: didn't work
5- Checked if there is an old Postgre user: not found
I checked the log file and I found the following :
Script output:
WScript.Shell Initialized...
Scripting.FileSystemObject initialized...
Called CreateDirectory(F:\PostgersSql\data)...
Called CreateDirectory(F:\PostgersSql)...
Called ClearAcl (F:\PostgersSql\data)...
Executing batch file 'rad712E9.bat'...
Called Die(Failed to reset the ACL (F:\PostgersSql\data))...
Failed to reset the ACL (F:\PostgersSql\data)
Any one can tell me what is causing this error?

VSTS Agent cannot overwrite nor remove the DLL when used by IIS

VSTS agent for AZure devOPS is not able to remove or overwrite the file when a URL has been invoked . However when the IIS worker process is killed and the Release is redeployed it is working fine .
I have enabled both overwrite and clean option . But it is still unable to deploy.
2018-11-17T13:05:23.2176452Z ##[section]Starting: Copy Files to: D:\IIS Hosting\CICD
2018-11-17T13:05:23.2179160Z ==============================================================================
2018-11-17T13:05:23.2179236Z Task : Copy Files
2018-11-17T13:05:23.2179314Z Description : Copy files from source folder to target folder using match patterns (The match patterns will only match file paths, not folder paths)
2018-11-17T13:05:23.2179373Z Version : 2.117.2
2018-11-17T13:05:23.2179438Z Author : Microsoft Corporation
2018-11-17T13:05:23.2179495Z Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=708389)
2018-11-17T13:05:23.2179554Z ==============================================================================
2018-11-17T13:05:23.4602460Z found 7 files
2018-11-17T13:05:23.4602904Z Cleaning target folder: D:\IIS Hosting\CICD
2018-11-17T13:05:23.4650798Z ##[error]Unhandled: Failed rmRF: EPERM: operation not permitted, unlink 'D:\IIS Hosting\CICD\AZSync.Web.dll'
2018-11-17T13:05:23.4659907Z ##[section]Finishing: Copy Files to: D:\IIS Hosting\CICD
Gives an error -
The solution was to have a task to copy app_offline.htm to the IIS hosting directory which would stop dotnet core from running . Copy/ overwrite all files and then remove app_offline.htmusing a delete file task.

Add-SBHost : The system cannot find the file specified

I am attempting to add a Host to a newly created Windows Service Bus 1.1 farm but regardless of what I do I eternally get the following error:
VERBOSE: [11/16/2018 2:54:06 PM]: Validating input and configuration parameters.
VERBOSE: [11/16/2018 2:54:06 PM]: Installing auto-generated certificate.
VERBOSE: [11/16/2018 2:54:16 PM]: Granting 'Log on as Service' privilege to the run as account.
VERBOSE: [11/16/2018 2:54:16 PM]: Windows Fabric configuration started.
VERBOSE: [11/16/2018 2:54:28 PM]: Windows Fabric cluster manifest generated.
VERBOSE: [11/16/2018 2:54:28 PM]: Running Windows Fabric deployment.
Add-SBHost : The system cannot find the file specified
At line:1 char:1
+ Add-SBHost -SBFarmDBConnectionString "Data Source=MYHOST;Initial C ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-SBHost], Win32Exception
+ FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.ServiceBus.Commands.AddSBHost
I had been struggling with configuring the initial deployment of the farm because my organization uses Azure AD. I was following this very helpful Blog post to get through the installation and deployment but the issue I am seeing now isn't covered.
A Google of the issue leads me to this page where they talk about inspecting a DLL. I tried inspecting the Microsoft.ServiceBus.Commands.dll from within the Service Bus installation folder but, I'll be honest, I didn't understand enough to know what I was looking for.
Has anyone else run into this issue before? All suggestions of where I can look to find this are very much appreciated!
Based on my research of what is actually happening in Add-SBHost command, this error may occur when:
Code is trying create new temp file in %userprofile%\AppData\Local\Temp directory for something called "ClusterManifest".
Code is trying to execute FabricDeployer.exe (with created "ClusterManifest" file path as parameter) in directory which is defined in registry path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Service Bus\1.1 for variable WinFabric in folder bin\Fabric\Fabric.Code.1.0. In my case, executable was placed in C:\Program Files\Windows Fabric\bin\Fabric\Fabric.Code.1.0\FabricDeployer.exe
Code is trying to remove temp file (created in 1 point) from %userprofile%\AppData\Local\Temp
After that steps and getting message VERBOSE: [09.08.2019 13:32:26]: Windows Fabric starting. no more file operations should be performed.
What to do?
First of all check if temp file is created in %userprofile%\AppData\Local\Temp directory (sort files by modification date in explorer, run script and wait) - probably file cannot be created because of lack of permissions.
If file is creating properly and has XML inside, then check if Service Fabric is installed and FabricDeployer.exe is present in directory. In my case it wasn't there so i had to remove Windows Fabric and Service Bus. After next installation i made sure that all files were in place.
After these steps script run was successful.
I hope it will help you :)

Issue in starting Apache DS

Hi I am facing an issue in starting the Apache DS. My environment is as follows.
Windows 7
64 Bit
I have 2 JVM's running (32 and 64bit) I have given the 32 bit JVM for the Apache DS.
When I start the service it says "windows couldnt start ApacheDS - default service on Local computer Error 1067 The process Terminated Unexpectedly"
When I check the logs in the instances folder shows the following log
STATUS | wrapper | 2013/07/15 15:27:55 | --> Wrapper Started as Service
STATUS | wrapper | 2013/07/15 15:27:55 | Launching a JVM...
INFO | jvm 1 | 2013/07/15 15:27:55 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2013/07/15 15:27:55 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2013/07/15 15:27:55 |
STATUS | wrapper | 2013/07/15 15:28:01 | <-- Wrapper Stopped
Can Someone please help me to start the Apache DS Service
Go to the
Program Files\ApacheDS\instances\default\conf
and modify the log4j.properties Change all FATAL log level to the DEBUG and restart the service. You can find what is the main reason of problem in new log files that are produced in the
Program Files\ApacheDS\instances\default\log
For example I have this problem after change the log level, I found the main error is
ERR_250_ENTRY_ALREADY_EXISTS ou=system already exists!
And this is an open issue in the ApacheDS
https://issues.apache.org/jira/browse/DIRSERVER-1954
Hope this help you!
Open Installation path and go to below path or where ever you have installed your Apache DS,
open C:\Program Files (x86)\ApacheDS\conf\wrapper.conf xml file in text mode
find below path,
Path to java executable
wrapper.java.command
you need to update "wrapper.java.command=" with you the java installation path example as below,
wrapper.java.command=C:\Program Files\Java\jre1.8.0_221\bin\java.exe
follow above path or find the java directory and update,
you are fine to fire your ApacheDS service, go to services(or C:\Program Files (x86)\ApacheDS\Manage ApacheDS --> Double Click) find ApacheDS and start.
This isn't my solution - but I think this answer the temp directory problem with also explaining why it occurs - Please find the link and the answer below:
https://issues.apache.org/jira/browse/DIRSERVER-2007
I tested this change (since it made it into the lastest version of ApaceDS server) and it is still not working on Windows 2008 when running as a service, but the problem is not the length of the path but the ability to write the temp directory. On my system the TEMP & TMP environment variables are set to:
%SystemRoot%\TEMP for System and for User is it %USERPROFILE%\AppData\Local\Temp.
Since the ApacheDS service is running as "Local System account" I would assume it would be trying to write to %SystemRoot%\TEMP. For whatever reason (and I can think of a few) ApacheDS can't create a temp file in that folder.
I fixed by creating a tmp folder in the instance directory and added the following line to wrapper.conf:
wrapper.java.additional.6=-Djava.io.tmpdir="%INSTANCE_DIRECTORY%/tmp"
That fixed the problem. I think it would be better if ApacheDS explicitly set it's temp folder to someplace it controlled and knew it could write to. A sys admin that wanted the files somewhere else could make a symlink or change the wrapper.conf. Those temp files contain ldap data so it would be better from a security standpoint to keep them with the rest of the instance data. If the instance is going to have its own log folder it might as well have its own temp directory.
Might it be, that you have selected javas /bin folder during installation as Java root directory?
If so, set it one level higher, as /bin is not the root directory.
If you have the below error all you gotta do is create a 'Temp' Directory in 'C:\Windows\system32\config\systemprofile\AppData\Local' and that's it.
C:\Windows\system32\config\systemprofile\AppData\Local\Temp\tempks1231340801626329934ks
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.Files.createFile(Unknown Source)
at java.nio.file.TempFileHelper.create(Unknown Source)
at java.nio.file.TempFileHelper.createTempFile(Unknown Source)
at java.nio.file.Files.createTempFile(Unknown Source)
at org.apache.directory.server.core.security.CertificateUtil.createTempKeyStore(CertificateUtil.java:318)
at org.apache.directory.server.ApacheDsService.start(ApacheDsService.java:219)
at org.apache.directory.server.ApacheDsService.start(ApacheDsService.java:152)
at org.apache.directory.server.wrapper.ApacheDsTanukiWrapper.start(ApacheDsTanukiWrapper.java:175)
at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManager.java:2788)*
I got the same issue. I managed to solve that, and I succeeded. The solution is as follow:
Open Java settings in Control panel (Control Panel>Programs>Java on,
my case, windows 7)
The setting screen shows up. Then click on Java tab. Click View...
button
At the User tab, click on Find button
After that, you choose the folder that contains the x86 JRE.
Finally, click Finish to add that x86 Run-time Environment to be used by programs that need the x86 version to run.
That's all. Try it.
delete file C:\Program Files (x86)\ApacheDS\instances\default\conf\config.ldif