Кроссплатформенный минимум!

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Re: Кроссплатформенный минимум!

Сообщение alexey38 » 21.03.2012 05:20:05

Есть универсальный подход, пригодный в том числе и для программирования:
Прежде чем искать ответы на конкретные вопросы, закапываться в нюансах, попробуйте для самого себя сформулировать цели и задачи (в глобальном смысле), которые Вы решаете при разработке данной программы.
Из своего опыта скажу, что такой подход, когда прежде чем начинаешь кодить немного подумаешь об общем, приводит к тому, что 90% неожиданных идей, отсекается сразу, т.к. они либо никому не нужны, либо технически не реализуемы. Получаешь огромную экономию времени.

Конкретно на примере Виталия. Определите назначение Вашей программы. Например, если программа сугубо математическая, то в 99% случаев она без всякой доработки просто скомпилируется и заработает в других ОС. Но если Вы хотите написать универсальный инсталлятор или иную утилиту, пригодную для всех ОС, то это утопия. Вам придется написать 100 разных инсталяторов (утилит), которые в итоге соберете в один пакет. Но прежде чем это начинать возникнет вопрос: а зачем это вообще нужно делать? В чем цель?
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Кроссплатформенный минимум!

Сообщение SSerge » 21.03.2012 07:13:37

Хотелось бы напомнить о том, что на всяких там линуксах (tm) отнюдь не все требуемые системные библиотеки, необходимые для работы программ на lazarus могут на момент установки этих самых программ присутствовать в системе. Соответственно, их нужно добавить - а процедура эта разная; причем, даже при одинаковом методе установки в разных вариациях и версиях ОС могут отличаться имена дистрибутивных пакетов.

Для наглядности можно взять инсталлятор того же CodeTyphon. Он кроссплатформенный. Фактически же сводится к набору каталогов скриптов установки (разных!!!) под каждую операционную систему, для которой он подготовлен.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Кроссплатформенный минимум!

Сообщение daesher » 21.03.2012 07:24:29

vitaly_l писал(а):Windows... Я там использую: BitBlt (это копирует часть изображения) - Чем Кроссплатформенно заменить: BitBlt ???

Если Вам нужны некоторые функции WinApi (в т.ч. и BitBlt), то их можно эмулировать, заменив модуль Windows на LCLIntf, он кроссплатформенный. И не надо менять много кода, хотя это и не совсем верный путь.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Кроссплатформенный минимум!

Сообщение vitaly_l » 21.03.2012 09:30:26

daesher писал(а):LCLIntf, И не надо менять много кода

СПАСИБО. BitBlt - я уже заменил на canvas
SSerge писал(а):взять инсталлятор того же CodeTyphon

у меня всё немного проще чем в CodeTyphon... У меня даже нет библиотек, програмка крохотная и всё внутри...
alexey38 писал(а):если программа сугубо математическая, то в 99% случаев она без всякой доработки просто скомпилируется и заработает в других ОС.

Значит моя программа, всё таки - должна работать кроссплатформенно?????!!! (это вселяет надежду, я вчера установил ubuntu, теперь поставлю туда Лазарус и всё прояснится, тем более что, всё остальное там есть...)
alexey38 писал(а):В чем цель?

Изначально программа устанавливалась в свою директорию и прекрасно работала (с любым количеством пользователей, т.к. сама умеет их плодить...) Здесь на форуме, меня избили, потому что есть права админа и UAC и программа установленная в ProgramFiles(далее \PF) - без прав админа работать не будет... Я переделал под требования windows... Теперь программа, при инсталляции(инсталлятор), копирует все рабочие(несменяемые файлы) в \PF, а user-овские в директорию user/имя пользователя... Получилось вроде правильно, но кроссплатформенно это сделать не получается???, т.к. в других системах нет разделения на \PF и \user??? или я плохо объяснял требуемое... Цель правильно раскидать файлы, чтобы сохранить архитектуру... Технически программа прекрасно работает и в одной директории... Просто есть многопользовательский интерфейс... и вот он... заставляет делать установку с учётом многопользовательской системы пользователя... Все основные, некроссплатформенные компоненты я заменил (за исключением ярлыков к программе, я не знаю как их делать в linux, МАС итд)... Если верить Вам, то программа должна заработать... А как сделать ярлыки, я надеюсь найти будет не очень сложно...

В любом случае всем Громадное СПАСИБО, т.к. по ходу я исправил другие неточности и некорректности(о которых даже не подозревал)...

.
Последний раз редактировалось vitaly_l 21.03.2012 09:45:19, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформенный минимум!

Сообщение Alexx2000 » 21.03.2012 09:45:00

vitaly_l писал(а):т.к. в других системах нет разделения на \PF и \user???

Есть, вот почитайте о структуре каталогов в Linux
vitaly_l писал(а):за исключением ярлыков к программе, я не знаю как их делать в linux

Desktop Entry Specification (создаете файл описанной структуры, размещаете где надо), но вообще в Linux не принято, чтобы программа собственноручно создавала ярлыки, этим обычно занимаются пакетные менеджеры
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Кроссплатформенный минимум!

Сообщение alexey38 » 21.03.2012 14:01:43

Виталий, Вы одновременно говорите, что у Вас программа математическая, но далее говорите, что она еще в себе содержит и инсталятор, создающий ярлыки и прочее.
Если у Вас самоинсталирующаяся математическая программа, то разбейте ее на две части. Отдельно инсталятор, а отдельно сама программа.
В каждой ОС есть общепринятый порядок инсталляции. Например, классика под виндой - это MSI. Под линухом есть понятие пакеты, репозитории и т.п.
Есть нестандартные способы, но они специфичны. Если общая структура каталогов для программ, для настроек, для документов везде более-менее похожа, то ярлыки в каждой ОС будут по разному. В линухе есть КДЕ, есть ГНОМ и есть еще некоторые вариации, это все разные оболочки. Часто файл скачанный с интернета в линухе не имеет прав на запуск, т.е. без редактирования прав файла пользователь даже не запустит Ваш инсталятор.

Если у Вас, например, в винде есть exe-файл с программой, то инсталятор для него Вы можете написать в bat-файле (что есть вариант скрипта). Аналогично в линухе, например, bash. Сделать вариации скриптов под ОС обычно проще, чем сделать вариации исполняемых файлов инсталятора для всех видов ОС.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Кроссплатформенный минимум!

Сообщение vitaly_l » 21.03.2012 15:13:41

alexey38 писал(а):то разбейте ее на две части

Во-первых какая разница??? Во-вторых, если я сделаю отдельно инсталлятор, то всё равно буду задавать именно - эти же вопросы.....
Программа - не математическая, но имеет функцию типа upgrade, в смысле: Пользователь может доустановить требуемое, поэтому мне нужно знать где она(программа) лежит на диске у пользователя и именно для этого нужен инсталлятор...

alexey38 писал(а):Сделать вариации скриптов под ОС обычно проще, чем сделать вариации исполняемых файлов инсталлятора для всех видов ОС.
Вариации скриптов??? Безусловно, если иных вариантов нет, то можно вшить в программу "скрипты" и запускать их отдельно... Если система иначе запрещает установку...

alexey38 писал(а):без редактирования прав файла пользователь даже не запустит Ваш инсталлятор

А вот это уже очень очень очень ВАЖНО!!!, не только про линукс, но и про МАС...
Что нужно впечатать в программу, чтобы она запросила такие права????
Вот нахрена в Лазарусе оставили НЕкроссплатформенные компоненты итд???
Вот кому - это нужно???

Мне нужно написать программу и она должна работать на всех системах.
И запинка произошла.... ВНИМАНИЕ!!!: в установке ЯРЛЫКОВ!!!!!
Это планета Земля из Солнечной системы... Я её узнаю...
В других системах - этих геморроев давно уже нет....

Неужели нет общего правила установки программ???
Чем программисты занимались последние 25 лет???
Тоже мне кроссплатформенная среда...

Если я правильно понял, то /usr/bin/ - это можно использовать, как аналог ProgramFiles. Так ли это???
Если да, то какая функция возвращает расположение /usr/bin/ в линуксе???
Если есть программисты под МАС и других системах, то вопрос: какая функция возвращает аналог ProgramFiles в МАС и других системах???

.
Последний раз редактировалось vitaly_l 21.03.2012 16:49:12, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформенный минимум!

Сообщение Alexx2000 » 21.03.2012 16:24:15

vitaly_l писал(а):Если я правильно понял, то /usr/bin/ - это можно использовать, как аналог ProgramFiles. Так ли это???

Не совсем так, в /usr/bin/ лежит только exe-файл, ресурсы приложения обычно лежат в /usr/share/имя_программы.
Если да, то какая функция возвращает расположение /usr/bin/ в линуксе???

Зачем функция? Это жестко заданный путь, всегда /usr/bin.
vitaly_l писал(а):Если есть программисты под МАС и других системах, то вопрос: какая функция возвращает аналог ProgramFiles в МАС и других системах???

Под Mac это /Applications
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Кроссплатформенный минимум!

Сообщение Mr.Smart » 21.03.2012 16:25:05

vitaly_l писал(а):Неужели нет общего правила установки программ??? Чем программисты занимались последние 25 лет???Тоже мне кроссплатформенная среда...

Это к кому претензии?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Кроссплатформенный минимум!

Сообщение vitaly_l » 21.03.2012 16:44:42

Alexx2000 писал(а):Это жестко заданный путь..... в /usr/bin/ лежит только exe-файл, ресурсы приложения обычно лежат в /usr/share/имя_программы.

Alexx2000 писал(а):Под Mac это /Applications

АГА!!! вот оно искомое!!! (спасибо)
Поймите правильно я никогда не видел как устроена система Линукса или МАС...
/usr/bin/MyProgram/MyExe.exe <=== верно ли это??? или я должен сразу указать /usr/bin/MyExe.exe ???
/usr/share/MyProgram/MyFileForMyProgram.SomeExt <=== верно ли это??? или я должен указать /usr/share/MyExe.exe/MyFileForMyProgram.SomeExt ???

А в МАС я должен указать
/Applications/MyProgram/MyExe.exe <=== верно ли это???
/Applications/MyProgram/MyFiles/MyFileForMyProgram.SomeExt <=== верно ли это???

Добавлено спустя 7 минут 19 секунд:
Mr.Smart писал(а):Это к кому претензии?

Это не претензии - это юмор...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформенный минимум!

Сообщение ronin » 21.03.2012 16:59:36

вместо того чтобы попытаться хоть что то почитать про линукс вы пытаетесь вытянуть эту инфу из участников форума, такой подход обречён на неудачу, результата вы не получите пока сами не начнёте разбираться, наскоком у вас не получится написать кроссплатформенную программу, без знания специфики системы под которую пишете, ЭТО ДАЖЕ НЕ ОБСУЖДАЕТСЯ, примите это как факт, даже если вам это не нравится :) и даже лазарус тут не попмощник, не существует кнопочки "собрать под..." а на выходе готовая программа

/usr/bin/MyProgram/MyExe.exe <=== верно ли это??? или я должен сразу указать /usr/bin/MyExe.exe ???


вот честно, даже после непродолжительного использования линукса у меня такие фразы вызывают смех, извините если обидел...

мне просто не очень понятно, вы пытаетесь наскоком написать программу? вы реально думаете что у вас это получится? и вы будете потом раздавать пользователям со спокойной душой установочные файлы? я думаю вам всё таки стоит подтянуть мат. часть в этих вопросах, иначе никак
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: Кроссплатформенный минимум!

Сообщение vitaly_l » 21.03.2012 17:37:02

ronin писал(а):и вы будете потом раздавать пользователям со спокойной душой установочные файлы?

Здесь Вы правы - это бесспорно.

ronin писал(а):после непродолжительного использования линукса

А касаемо знаний Линукса, Вы тоже правы, но заблуждаетесь,
т.к. есть ещё система МАС и если Линукс я или Вы можем проверить, то МАС - нет, а есть ещё другие системы.

Потом, я всего лишь ищу (приемлемое для моих знаний) решение,
лично мне достаточно работоспособности в windows, но хочется чтобы было кроссплатформенно...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформенный минимум!

Сообщение dunin » 21.03.2012 17:57:45

ronin писал(а):...
вот честно, даже после непродолжительного использования линукса у меня такие фразы вызывают смех, извините если обидел...

vitaly_l, Ваше желание изначально все правильно спланировать, дабы потом не выполнять лишнюю работу, конечно похвально. Но, право дело... дабы людей не смешить...

Я бы посоветовал по такому алгоритму действовать:
- написать и отладить программу под Виндуса. Убедиться, что все работает;
- пересилить себя и изучить InnoSetup. В будущем пригодится;
- создать инсталляционный пакет своей рабочей программы;
- проверить на других компьютерах и убедиться, что все работает;
- перекомпилировать рабочую программу под Линукс на машине, где стоит Линукс (увы... попутно придется много читать);
- убедиться, что все работает. Убедиться, что все работает без root прав (опять читаем). Убедиться, что при переносе на другую машину все работает (снова читаем);
- и вот только теперь начинаем думать про создание так называемого "инсталлятора под линукс"... :roll:

Поверьте на слово: это если не лучший, то в данном случае (как вы описали задачу), один из наиболее оптимальных путей ее решения.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Кроссплатформенный минимум!

Сообщение daesher » 21.03.2012 18:18:19

vitaly_l писал(а):лично мне достаточно работоспособности в windows, но хочется чтобы было кроссплатформенно...

Не знаю, насколько это целесообразно - создавать кросс-платформенную программу для платформ, которых сам не знаешь... Да, желательно не привязывать код к платформенным решениям - это всегда может создать проблему. Но полноценное портирование желательно доверить тому, кто
1. Знаком с платформой, как минимум, очень хорошо.
2. Сам код для него представляет интерес.
Думаю, в последнюю очередь надо создавать "инсталлятор" под linux - дистрибутивов linux масса. Я даже не уверен, что всем будет полезен бинарник, но т.к. речь идёт о Lazarus, то найдётся множество людей, имеющих linux, но не желающих устанавливать lazarus - он сильно выбивается из общей структуры пакетов. Если всё-таки решитесь,рекомендую не мучаться, а устанавливать портируемую программу под linux непосредственно в подкаталог в домашнем каталоге (идеал - программные файлы в каталог /usr/share/Название_Программы/, сойдёт и /opt/Название_Программы/, а данные пользователя - в $HOME/.Название_Программы/). Потом кому надо, всё раскидает (только постарайтесь жёстко не привязываться). /usr/bin/ или /usr/local/bin оставьте для символьной ссылки на бинарник (или скрипта для его запуска), на первых порах даже не заморачивайтесь с ним - надо будет - сделают и без Вас.
Набрав файлы, скиньте их в архив и не заморачивайтесь. Единственный нюанс - права на запуск бинарника. Если будете собирать в linux, права сами появятся, НО надо их не потерять (пакуйте в .tar.gz под linux и НИ В КОЕМ СЛУЧАЕ не перепаковывайте под Windows!)
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Кроссплатформенный минимум!

Сообщение vitaly_l » 21.03.2012 18:25:18

Инсталлятор, всего лишь - копирует файлы в определённую директорию или несколько директорий.
В windows - инсталлятор прекрасно работает и всё устанавливает и программа после установки - прекрасно работает.
Всё что мне нужно - это адаптировать, распределение файлов под архитектуру: Линукс, МАС итд...
Линукс, МАС итд... я не знаю, но по идее всё в системах идентично, за исключением названий директорий и архитектуры их расположения...
Копирование файлов - достаточно простая функция... для этого не нужен InnoSetup или иное...

Такой вопрос: Есть кроссплатформенная функция, которая возвращает директорию пользователя,
если инсталлятор будет устанавливать программу и все файлы для программы в эту директорию, это очень некорректно, в смысле: на меня очень будут ругаться???

Добавлено спустя 7 минут 53 секунды:
vitaly_l писал(а):Набрав файлы, скиньте их в архив и не заморачивайтесь.

У меня нет файлов - всё упаковано в одном exe

vitaly_l писал(а):Единственный нюанс - права на запуск бинарника.

Что это за права??? А в exe эти права бывают??? А в МАС - системе что???
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru