unitycoder / UnityLauncherPro

Unity Hub Alternative Project Launcher with time saving features!
MIT License
469 stars 55 forks source link

It crashes if it detects a certain version of Unity #159

Open ImanCol opened 1 month ago

ImanCol commented 1 month ago

It's been a while since I ran this utility, but I just saw that there was an update and it ran without problems, but when I was adding the folder where the Unity editors are saved, it closed and did not open again. I was moving some versions that I had installed (C:\Program Files\Unity\Hub\Editor: [5.2.3p2, 6000.0.11f1, Unity (if I'm not mistaken, it's 5.3.3f1)] the Unity folder (version 5.3.3f1) when I removed it, it opened again without problems-

2024-07-26-17-44-57 image

ImanCol commented 1 month ago

The version 5.3.3f1 that appears in UnityLauncherPro is in another folder (C:\Program Files\Unity\Editor), this one is detected

ImanCol commented 1 month ago

Even though I have the same version 5.3.3f1 in different folders, the version inside "C:\Program Files\Unity\Hub\Editor" is still causing UnityLauncherPro to crash or not start

unitycoder commented 1 month ago

tried installing 5.3.3f1 and tested duplicating that folder in another path, didn't manage to get crash or hangs, but having same Unity version twice is not really supported, so it might cause unknown issues..

if you are able to download unitylauncher source code and run it in VisualStudio, you might see where the crash is happening?

ImanCol commented 1 month ago

tried installing 5.3.3f1 and tested duplicating that folder in another path, didn't manage to get crash or hangs, but having same Unity version twice is not really supported, so it might cause unknown issues..

if you are able to download unitylauncher source code and run it in VisualStudio, you might see where the crash is happening?

sorry, my VS is in spanish. image System.NullReferenceException: 'Object reference not set to an instance of an object.'

System.Diagnostics.FileVersionInfo.ProductName.get returned null.

System.NullReferenceException HResult=0x80004003 Mensaje = Referencia a objeto no establecida como instancia de un objeto. Origen = UnityLauncherPro Seguimiento de la pila: at UnityLauncherPro.Tools.GetFileVersionData(String path) in C:\Users\marlo\Downloads\Compressed\Github\UnityLauncherPro\UnityLauncherPro\Tools.cs:line 175

ImanCol commented 1 month ago

I have added a line to print path Console.WriteLine("path: " + path);

path: C:\Program Files\Unity\Editor\Uninstall.exe path: C:\Program Files\Unity\Hub\Editor\5.2.3p2\Editor\Uninstall.exe path: C:\Program Files\Unity\Hub\Editor\5.3.3f1\Editor\Uninstall.exe System.Diagnostics.FileVersionInfo.ProductName.get devolvió null.

I didn't know it was looking for the version in the uninstall file

ImanCol commented 1 month ago

path: C:\Program Files\Unity\Editor\Uninstall.exeFile: C:\Program Files\Unity\Editor\Uninstall.exe InternalName:
OriginalFilename: FileVersion: 5.3.3.0 FileDescription: Unity 5.3.3f1 Installer Product: Unity 5.3.3f1 (64-bit) ProductVersion:
Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: Independiente del idioma

El subproceso 0x15d68 terminó con código 0 (0x0). El subproceso 0x15d70 terminó con código 0 (0x0). El subproceso 0x15e88 terminó con código 0 (0x0). El subproceso 0x15e8c terminó con código 0 (0x0). El subproceso 0x15e54 terminó con código 0 (0x0). El subproceso 0x15e5c terminó con código 0 (0x0). El subproceso 0x15e60 terminó con código 0 (0x0). path: C:\Program Files\Unity\Editor\Uninstall.exeFile: C:\Program Files\Unity\Editor\Uninstall.exe InternalName:
OriginalFilename: FileVersion: 5.3.3.0 FileDescription: Unity 5.3.3f1 Installer Product: Unity 5.3.3f1 (64-bit) ProductVersion:
Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: Independiente del idioma

path: C:\Program Files\Unity\Hub\Editor\5.2.3p2\Editor\Uninstall.exeFile: C:\Program Files\Unity\Hub\Editor\5.2.3p2\Editor\Uninstall.exe InternalName:
OriginalFilename: FileVersion: 5.2.3.0 FileDescription: Unity 5.2.3p2 Installer Product: Unity 5.2.3p2 (64-bit) ProductVersion:
Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: Independiente del idioma

path: C:\Program Files\Unity\Hub\Editor\5.3.3f1\Editor\Uninstall.exeFile: C:\Program Files\Unity\Hub\Editor\5.3.3f1\Editor\Uninstall.exe InternalName:
OriginalFilename: FileVersion:
FileDescription:
Product:
ProductVersion:
Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language:

System.Diagnostics.FileVersionInfo.ProductName.get devolvió null.

unitycoder commented 1 month ago

interesting, on my pc, it has productname, can you check properties from that uninstall.exe in Explorer? image

it uses uninstall.exe because Unity.exe doesnt contain proper version number..

ImanCol commented 1 month ago

I found that it is empty, I can't explain why... Captura de pantalla 2024-08-02 011450.png

Captura de pantalla 2024-08-02 011715.png

Captura de pantalla 2024-08-02 011545.png

Would there be a way to add an exception so that the program runs at least, showing something like version "unknown"

unitycoder commented 1 month ago

Yes, i'll add some null check, so at least it wont crash. (and could check for "product" field, since in your debug print, it showed " Product: Unity 5.3.3f1 (64-bit)".

Some other users mentioning missing exe details, he had "ground exe" virus (that modifies exe files) https://answers.microsoft.com/en-us/windows/forum/all/most-of-my-exe-files-details-file-version/cea8d658-c993-4a5f-b828-c1e8bbf6984b

ImanCol commented 1 month ago

I agree that upgrading to Windows 11 has been a bad experience.

Well, I will try to copy the uninstall file of the Unity 5 version that I have in another folder.

You can close this if you get to commit a commit, with this exception resolved. Thank you very much for solving my doubts.

unitycoder commented 1 month ago

Thanks! i'll close this after i add the null check.

unitycoder commented 1 month ago

this one is bit of a mystery,

Product: Unity 5.3.3f1 (64-bit) ProductVersion:

where is "Product" field coming from, its not in FileVersionInfo https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.fileversioninfo?view=netframework-4.8

image