Closed fnaumenko closed 4 years ago
@davideby could you take a look at this?
@fnaumenko The Windows installer includes a bundled JDK, how are you installing this?
I'm sorry to say "this is not so". JDK is built into some browsers, but is missing from the Windows installation. However, that is not an issue. The issue is that the command set VARIABLE=%%\~dps in win command shell collapses long path with space into short one (like "C:\Program Files" into "C:\PROGRA\~1") only for system disk C. For other drives, even if we wrap the value in quotation (like _set JAVAHOME="%BatchPath%\jdk-11" etc.), java machine cannot launch with parameters containing names with spaces. It seems the only way to solve the issue is to allow installing IGV only on drive C. By the way, if you are supplying your installer with local JDK, isn’t it easier and more reliable to launch a program on it in an unconditional order?
@fnaumenko So do you have a suggested solution? Please post it here if you do, it would be appreciated. We on the development team do not use Windows nor have ready access to Windows computers. The installed IGV bundle should include jdk-11, I was not referring to the web browser.
Well, If you want so, the simplest solution is to to explicitly prescribe installing win desktop IGV on drive C. It is enough. My question about the need for if-else construction in igv.bat can be ignored.
@fnaumenko @jrobinso I'll take a look at this and see what we can do. We'll probably simplify the launcher to get rid of the conditional (but keep our old script for any users running batch jobs). Forcing installation to C: only is also an option, if necessary.
It looks like a good idea. Finally, the main thing is to save users from unnecessary troubles, isn't it?
@fnaumenko Yes, that's the goal of the installers. We'll see what's possible.
Whatever solution we find, would you be willing to test? I only have a Windows 7 machine (yeah, I know...) and the existing script works fine there, so this bug seems to be Windows 10 only.
Well, yes, I'll try. I myself just migrated to Windows 10 in connection with the replacement of the drive by SSD. But the old Windows 7 drive is saved, so it's possible to check on both. I like IGV :) In contrast to IGB, it's fast and has a simple and friendly UI. I know biologists prefer online USCU because of the rich background, but for me IGV is almost that.
@fnaumenko There's a fix in the works. @jrobinso is going to test it when he has the chance, and we'll post a link to the snapshot here in a bit. I won't be monitoring this thread for a few hours but will try to check back later to see where things stand.
And thanks for the kind words :)
Alright then. Please keep in mind that I cannot usually do the job immediately.
@fnaumenko Sorry for the delay, I got sidetracked by the weekend...
I'm not sure if @jrobinso has had a chance to look at the new snapshot build on Windows, but it's available here if you have the time to give it a try. It will get overwritten whenever we do a new build but should be good for a little while.
Thanks for taking the time!
Congrats! The snapshot works. At least viewer is launched. I checked igv.bat - the same result as before. But it doesn't matter anymore. At the same time checked the uninstallation on drive C - the version on D remains correct. Did not check on Windows 7, as you wrote everything is ok there. Well done, thank you :)
OK, thanks @fnaumenko ! Yes, we left igv.bat as-is in case there are command-line users expecting that behavior. There's a new igv-launcher.bat script expressly for this purpose.
I'll leave this thread open for now until @jrobinso is ready for this to go out. I assume it will go into the next IGV release, though I don't know when that will be.
Thanks again!
In the third line of igv.bat "%\~dpsx" expands "x" to drive letter and short path. On C drive it collapses to "C:\PROGRA\~1\IGV_28~1.0\" (without space), on D - to "D:\Program Files\IGV_2.8.0\" (with space). In the second case the command "if exist %BatchPath%\jdk-11" (line 6) is interrupted by a space, and both conditions runs unconditionally, including "set JAVA_CMD=java". Oracle offers a stable version of Java 8 (not 11), so it is most likely installed by default. IGV does not start without any notification.