crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Как получить путь в "Program files" etc, кроссплатформенно
DIMEDROLL
  опции профиля:
сообщение 26.2.2010, 23:24
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


что то под вечер немогу смекнуть.. хочу получить фолдер, куда установленны и устанавливаются по дефолту программы, например на виндоуз:
"C:/Program Files/"
"C:/Program Files(x86)/"
на маке(насколько помню)
":my_hd/Applications"
ну и на линухе....
как его правильнее и кросплатформеннее написать?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 26.2.2010, 23:52
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Возможно QString QDir::rootPath() поможет... Ну а дальше в зависимости от ОС (либо "Program Files", либо... хм, под маком не работал, не знаю... ) Ну а на линухе имхо итак все ясно.. root есть root. В смысе "/". Ну rootPath() и возвращает "/". А дальше наверное лучше ставить куда традиционно пользовательские программы ставятся... /usr/bin, /usr/local/bin, /usr/lib, /usr/local/lib

Во, есть еще QDir::searchPaths(). Надо посмотреть, если она возвращает $PATH, то это вроде то что нужно

Сообщение отредактировал Rocky - 26.2.2010, 23:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 27.2.2010, 0:34
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Я вижу только одну причину знать путь куда ставятся программы - собственный installer программ. Qt больше ориентирована на пользователей ОС без прав администратора. Поэтому $HOMEDIR и сохраняй файлы и настройки, которые нужны программе. А право ставить программы для всех пользователей компьютера оставь сисадмину.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.2.2010, 4:31
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Rocky @ 27.2.2010, 2:52) *
Ну а на линухе имхо итак все ясно.
Да вот как раз на линухе минимум ясности.
В Линухе, в отличие от BSD/UNIX, стандарт рекомендует ставить программы в /opt, а /user - рудимент оставшийся от BSD/UNIX.
Однако многие по прежнему ставят свои программы в стиле BSD/UNIX, т.е.:
/usr/bin/MyApp - двоичные файлы программы
/usr/share/doc/MyApp - документация программы
/var/MyApp - изменяющиеся данные программы.

А насчёт Program Files на виндовозе не очень понятно, зачем к нему путь? В инсталяторе пользователь сам может выбрать куда ставить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 27.2.2010, 11:55
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(Litkevich Yuriy @ 27.2.2010, 4:31) *
Да вот как раз на линухе минимум ясности.

смотря какой дистрибутив
в gentoo к примеру всё ясно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 27.2.2010, 12:22
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


уже не удивляюсь, когда на форумах на вопрос:
"как сделать "это"?"
отвечают:
"а зачем? делай вот так и так и не парься!"
а если хватит ума еще и ответ дать "зачем тебе это нужно", то флейма на 20 страниц не избежать, где каждый посчитает нужным указать тебе на то, что ты все делаешь не правильно :)

я нашел обходной путь, но вопрос остается открытым
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 27.2.2010, 12:35
Сообщение #7


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


Use WinAPI.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.2.2010, 19:05
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(DIMEDROLL @ 27.2.2010, 15:22) *
но вопрос остается открытым
Да тут только дефайнами всё оборачивать, т.е. под каждую платформу нужно своё писать.

Цитата(kwisp @ 27.2.2010, 14:55) *
смотря какой дистрибутив
в gentoo к примеру всё ясно.
собственно я об этом. Говоря "Линукс" понимай, как "Несчитанное множество *nix-подобных ОСек".

Для виндовоза, можешь воспользоватся переменной окружения
ProgramFiles
Например, следующий код:
    QString str = "ProgramFiles";
    QStringList list = QProcess::systemEnvironment();
    qDebug() << "ProgramFiles:\n" << list.filter(str);
Напечатает в консоль:
ProgramFiles =:
("CommonProgramFiles=E:\Program Files\Common Files", "ProgramFiles=E:\Program Files")
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 27.2.2010, 19:09
Сообщение #9


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Как сложно :)
    qDebug() << "ProgramFiles:\n" << getenv("ProgramFiles");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 28.2.2010, 16:13
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Kagami @ 27.2.2010, 19:09) *
Как сложно :)
    qDebug() << "ProgramFiles:\n" << getenv("ProgramFiles");


Так нельзя делать, хотя бы по этой причине:

Цитата
Еще одной проблемой является способ работы Windows 7 с 32-битными приложениями. Windows 7 [в 64-разрядной редакции] сохраняет 32-разрядные приложения по другому пути - в папку Program Files (x86), а 64-разрядные сохраняются в привычную Program Files. Это приводит к возникновению определенных проблем при поиске некоторых приложений, пишет Убри.

"Приложения, в которые жестко зашита папка 'Program Files', не могут корректно работать, будучи установленными в папку Program Files (x86)" - объяснил он.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.6.2022, 12:03