LaurentOngaro / UEVaultManager

Free and open-source replacement for the Epic Games Launcher application, mainly to manage the assets for Unreal Engine
https://laurentongaro.github.io/UEVaultManager/
GNU General Public License v3.0
4 stars 0 forks source link

[BUG] First time install not going well #30

Open isaaclepes opened 3 months ago

isaaclepes commented 3 months ago

Describe the bug (Mandatory)

Description

Multiple issues encountered on Windows 10 with Pyton 3.10.6

First, after install with pip, the UEVaultManager.exe did not have correct permissions to execute. After correcting that, the authentication popup would freeze and the program would become non-responsive. Attempting to run the application again resulted in an error stating the config file exists, continuing without a config file, followed by a traceback and crash.

If I delete the config file after each use, the application will run but then crashes with a traceback stating that datetime.now does not have a UTC property. If I change the code on core.py to use datetime.datetime.utcnow instead, it succeeds in authentication using the --disable-webview option.

If I attempt to do any other commands after successfully authenticating, I get the following error from nodriver:

UEVaultManager.exe list --disable-webview
INFO Login...
[Core] INFO: Logging in...
INFO Getting asset list... (this may take a while)
[Core] INFO: Logging in...
ERROR: File mode is used but no filename has been provided
INFO: Loading 1 files from S:\Development\Environments\Python\Python310\Lib\site-packages\scraping\assets\marketplace
INFO: It took 0.001 seconds to load the data from 0 files
Traceback (most recent call last):
  File "S:\Development\Environments\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "S:\Development\Environments\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "S:\Development\Environments\Python\Python310\Scripts\UEVaultManager.exe\__main__.py", line 7, in <module>
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\cli.py", line 1755, in main
    cli.list_assets(args)
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\cli.py", line 373, in list_assets
    assets_json_data = self.scrap_assets(args, use_database=False, file_name=args.output, save_to_format=file_format)
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\cli.py", line 960, in scrap_assets
    if scraper.save(owned_assets_only=False, save_to_format=save_to_format):
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\models\UEAssetScraperClass.py", line 1139, in save
    result_count = self.gather_all_assets_urls()  # return -1 if interrupted or error
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\models\UEAssetScraperClass.py", line 832, in gather_all_assets_urls
    egs_available_assets_count = self.core.egs.get_available_assets_count()
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\api\egs.py", line 290, in get_available_assets_count
    r = self.get_url_with_uc(url, timeout=self.timeout, force_bypass_captcha=True)
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\api\egs.py", line 635, in get_url_with_uc
    uc.loop().run_until_complete(self.uc_get_content(url))
  File "S:\Development\Environments\Python\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
    return future.result()
  File "S:\Development\Environments\Python\Python310\lib\site-packages\UEVaultManager\api\egs.py", line 722, in uc_get_content
    self._uc_browser = await uc.start(**self._uc_request.params)
  File "S:\Development\Environments\Python\Python310\lib\site-packages\nodriver\core\util.py", line 88, in start
    return await Browser.create(config)
  File "S:\Development\Environments\Python\Python310\lib\site-packages\nodriver\core\browser.py", line 91, in create
    await instance.start()
  File "S:\Development\Environments\Python\Python310\lib\site-packages\nodriver\core\browser.py", line 290, in start
    raise FileNotFoundError(
FileNotFoundError:
                    ---------------------
                    Could not determine browser executable.
                    ---------------------
                    Make sure your browser is installed in the default location (path).
                    If you are sure about the browser executable, you can specify it using
                    the `browser_executable_path='c:/path/to/your/browser.exe` parameter.

I tried running pip install chromedriver, but the behavior is the same.

To Reproduce

Steps to reproduce the behavior:

  1. Go to 'https://uevaultmanager.readthedocs.io/en/latest/quickstart.html'
  2. Follow steps exactly as detailed

Expected behavior

I expected the application to run and display it's GUI

Additional informations (Optional)

Screenshots

If applicable, add screenshots to help explain your problem.

Context

Solution (Optional)

Possible Causes

What you thing that causes this issue

Work Around

A possible work around to prevent or avoid or solve the issue

Failed fixes or Tests Done

Already detailed above

Possible fixes

What you thing that fix this issue

isaaclepes commented 3 months ago

I forgot to mention that the tkgui\modules folder was missing after initial install. I downloaded the repository and copied the modules folder into place manually.

isaaclepes commented 3 months ago

modifications to core.py to stop UTC error on lines 324 and 340 image

LaurentOngaro commented 2 months ago

Sorry for the delay, I was very busy. I'll look at as soon as possible.

The error is due to the usage of a "special"version of chromium that can bypass the (very annoying) captcha in the Epic store.

You need to install chromium or chrome and set the path of the executable in the code.

For a quick fix, set the correct path in the line #677 of the file UEVaultManager/api/egs.py

browser_path = r'C:\Program Files\Chromium\Application\chrome.exe'  # TODO: add the default browser_path to the settings

You can also install chromium for windows in its default location and it should run as it is