You'll need to understand how the application is actually launched. A tool like Process Explorer can help identify the required properties. You can set the path property of the adapter dynamically in an automation before starting the application, however it sounds like you have an app that actually launches another application. You should first enable HookChildProcesses on the adapter. If the second app is a child of the first, then it will be recognized. If it is not a child, then you will likely need to use StartAndWait or perhaps MonitorAll.
I have used StartAndWait and Hook child is also "True".
The issue is this application keeps creating new folder in AppData and since the paths has been defined already in properties it tends to miss the latest version sometimes (when available with new version).
When using MonitorAll or StartAndWait, the actual TargetPath (or Path for MonitorAll) is irrelevant. Only the exe at the end is used. You would use the static method System.Diagnostics.Process.Start to launch the application when using MonitorAll as starting the adapter will only cause the adapter to start (effectively listening for the exe to appear).