hitman249/wine-launcher

первый старт

GutsyHeart opened this issue · 17 comments

При запуске папки prefix, data, bin создаются в $HOME

Как сделать, чтобы они создовались там же где и start ?

Стандартная последовательность разворачивания

  1. Создать пустую папку
  2. Скачать в него файл start
  3. Запустить, дождаться инициализации
  4. Все папки по умолчанию должны создаваться рядом с файлом start
  5. Закрыть, переместить файл start в появившуюся папку bin

1 +
2 +
3 +
4 папки в $HOME

Я запускаю из фм (qtfm)
Если перейти в диристорию в терминале и запустить, то они создаются где надо.

Какой дистрибутив?
Проверяли под другими файловыми менеджерами?

Artix Linux
Проблема в qtfm. Проверил в pcmanfm - всё норм.

Спасибо за помощь.

Дистрибутив pop os 20.10, запускаю из терминала команду ./start в директории ~/games/, все папки создаются в ~/

Дистрибутив pop os 20.10, запускаю из терминала команду ./start в директории ~/games/, все папки создаются в ~/

Файловый менеджер nautilus, двойной клик по start делает то же самое что и запуск из терминала - все папки создаются в ~/.

Если руками переместить папки в нужную директорию, то при повторном запуске start, папки опять пересоздадутся в ~/

@PaulKovalov скачал LiveCD pop os 20.10 баг не повторился, все директории создаются рядом с файлом start

@hitman249 да, действительно. Тоже скачал, проверил на свежей системе, работает как надо.
Я попробовал сам собрать приложение в дебаг режиме, добавив выводы в консоль из метода getRootDir(). Как я понял, этот метод возвращает корневую директорию в которую будут созданы необходимые папки.

При запуске из директории
a/b/c,
метод возвращает директорию a, спускается на две директории вниз. Ну это и в коде собственно так и написано, только непонятно зачем: если скрипт лежит в папке a/b/c, то все директории должны создатся в a/b/c, а по коду выходит что rootDir станет a/b, а binDir и вовсе a/bin.

Да, и почему-то скрипт так и не смог создать в дебаг режиме ни одной директории, запускал из папки проекта в дебаг режиме. Падает с ошибкой stack overflow.

Непонятно только, как это работает на свежем образе. Возможно, window.process.env.APPIMAGE не undefined у свежего образа, потому что у меня undefined.

@PaulKovalov

  1. для дебаг режима не обязательно пересобирать, нужно просто запустить приложение так
    env debug=1 ./start

  2. потом в консоли инспектора
    app.getPrefix().getRootDir() - это должен быть путь к папке в которой лежит файл start, если там домашняя папка, значит определить папку не удалось

  3. переменная window.process.env.APPIMAGE указывает на полный путь к файлу start

  4. т.к. у вас эта переменная пуста посмотрите и перечислите все переменные которые указывают на папку в которой лежит файл start в window.process.env

  5. убедитесь что у вас не установлены приложения "вредители", например appimagelauncherfs
    ПС: если установлены, то после удаления нужно ещё перезагрузиться, они интегрируются прям в ядро системы..

Оказалось, что проблема в том, что у меня в '~/' была папка bin. Дело все в этом коде...

if (this.fs.exists(binDir)) {
            this.rootDir = path.resolve(this.rootDir, '..');
}

Ну такое, я ж имею право создать папку bin в $HOME, а лаунчер получается не дает. Это сделано чтобы можно было start перемещать в папку bin?

Я думаю, надо хотя бы ворнинг какой-то кидать, что папка bin мешает...

насчет window.process.env.APPIMAGE беру свои слова назад, эта переменная действительно указывает на start.

В принципе, можно проверять наличие всех 3 директорий, которые генерирует скрипт, уменьшить вероятность такого случая что директории будут существовать в корневой папке, и скрипт не создаст свои папки там где он был запущен

получается у вас такая структура?

~/bin
~/wl/start

да, такая

сделал ПР #17 который должен пофиксить это

@PaulKovalov
слил, но поправил, папка prefix не обязательна для первого запуска, а значит её может не быть
также добавил документацию по отладке