Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизКак создавать портабельные программы? Найти похожие ветки
← →
Ya (2007-11-03 17:09) [0]Здравствуйте.
Наверняка, кто-то задумывался над этой темой? Я знаю по-меньшей мере один (!) способ создавать такие приложения: при запуске проверять наличие определенной папки в директории программы.
А какие способы знаете вы?
← →
Magic Knight Rayareh (2007-11-03 17:14) [1]Гениально.
← →
boriskb © (2007-11-03 17:26) [2]Мы в восхищении.
Королева в восхищении.
← →
FeiFei (2007-11-03 17:30) [3]Ya
Что ты делаешь сегодня вечером?
← →
Ya (2007-11-03 17:45) [4]ок, для юмористов, программистов и тех, кто в восхищении переформулирую вопрос.
Вы пишете простое приложение. По умолчанию приложение читает все настройки из папки в Application Data. Ваша задача - сделать так, чтобы это приложение можно было таскать на флешке, запускать с нее и при этом не сорить на чужих компьютерах. Ваши действия? Какие признаки можно использовать, чтобы вводить приложение в режим чтения настроек из собственной папки?
← →
Kolan © (2007-11-03 17:53) [5]> Какие признаки можно использовать, чтобы вводить приложение
> в режим чтения настроек из собственной папки?
Рабочая папка ярлыка?
Реестр?
← →
Ya (2007-11-03 17:57) [6]
> Рабочая папка ярлыка?Реестр?
Возможно, не уловил мысль. Как реестр машины, в которую вставят флешку может быть признаком?
С ярлыком не хотелось бы связываться. Понятно, что можно запускать с параметром, а в программе его обрабатывать, но хотелось бы обойтись одним исполняемым файлом.
← →
Zeqfreed © (2007-11-03 17:57) [7]Элементарно. Нужно смонтировать любую папку в ту папку из которой она читает свои настройки перед использованием. После вернуть как было.
← →
Jukadze (2007-11-03 17:58) [8]Про GetModuleName слышала?
← →
Zeqfreed © (2007-11-03 18:00) [9]А проблему понял. Проблема надуманна. Единственно правильный выход это именно параметр запуска, как мне кажется.
← →
Ya (2007-11-03 18:02) [10]
> Элементарно. Нужно смонтировать любую папку в ту папку из
> которой она читает свои настройки перед использованием.
> После вернуть как было.
Да, об этом я сказал в теме. Мне этот способ нравится, но, возможно, есть более элегантный.
> Про GetModuleName слышала?
getmodulename
Get the file name of the currently running application.
Безусловно, это поможет. Осталось подумать, чем.
← →
Ya (2007-11-03 18:04) [11]
> А проблему понял. Проблема надуманна. Единственно правильный
> выход это именно параметр запуска, как мне кажется.
ок, а чем, по твоему мнению, параметр запуска более правилен, относительно проверки на наличие определенной папки?
← →
Плохиш © (2007-11-03 18:08) [12]Каких только извращений не придумывают от незнания как определить папку из которой запущена программа :-))
← →
Zeqfreed © (2007-11-03 18:08) [13]> Ya (03.11.07 18:04) [11]
Параметры предназначены для передачи программе дополнительных опций, а папки предназначены для хранения файлов.
← →
Ya (2007-11-03 18:22) [14]Товарищи, вы совсем разучились думать Тем не менее, я не буду повторять других, говоря, что делфимастер де уже не тот.
> Каких только извращений не придумывают от незнания как определить
> папку из которой запущена программа :-))
Пожалуйста, если тебе что-то не понятно, уточни. Но не надо намекать на то, что я не знаю про функцию ExtractFilePath и то, каким образом поставить между двух скобок ParamStr(0).
> Параметры предназначены для передачи программе дополнительных
> опций, а папки предназначены для хранения файлов.
Настройки программы хранятся в файлах. Файлы хранятся в папке. Выбрать, в какой из папок хранить файлы в данный момент можно ориентируясь на определенный признак. Если признак - параметр запуска /p, к примеру, то файлы можно хранить рядом с программой, если такой параметр запуска не был передан, файлы хранятся в Application Data. Это был вариант, который, как я понял, предлагаешь ты.
Вариант, который рассматривал я: в программе есть определенная функция, которая возвращает путь к папке, в которой лежат файлы настроек. Сейчас она просто возвращает путь до Application Data + подпапка имени программы.
Можно модифицировать эту функцию таким образом, чтобы в зависимости от того, есть ли определенная папка в директории программы, она возвращала путь до этой папки, иначе - Application Data + подпапка имени программы.
1 вариант предусматривает наличие на флешке ярлыка для запуска программы с определенным параметром, 2 вариант предусматривает только наличие папки, что, согласись проще для пользователя. Отсюда и вопрос - чем ярлык лучше, быть может, я о чем то не догадываюсь?
← →
DVM © (2007-11-03 18:28) [15]Проблема высосана из пальца.
← →
Ya (2007-11-03 18:30) [16]
> DVM © (03.11.07 18:28) [15]
> Проблема высосана из пальца.
Это НЕ проблема. Я пытаюсь понять, какие варианты есть еще.
← →
Плохиш © (2007-11-03 18:31) [17]
> DVM © (03.11.07 18:28) [15]
> Проблема высосана из пальца.
Сильно сомневаюсь в этом ;-)
← →
Jukadze (2007-11-03 18:31) [18]Почему нельзя всегда брать данные из папки, которая лежит рядом с запускаемой программой?
← →
Ya (2007-11-03 18:34) [19]
> Почему нельзя всегда брать данные из папки, которая лежит
> рядом с запускаемой программой?
Почитай гайдлайны Microsoft, конкретно для Vista.
← →
DVM © (2007-11-03 18:35) [20]
> Я пытаюсь понять, какие варианты есть еще.
Чего тут думать то. Инсталлятор программы делает в реестре при инсталляции отметку, что мол программа проинсталлирована в такую то папку. При старте программа проверяет значение записи в реестре. Если папка там совпадает с той, откуда запускают программу, то программу запускают не как портейбл приложение. Иначе, или если ключа нет совсем, программа решает, что она портейбл. В программе есть функция, которая в зависимости от портейбл или не портейбл возвращает путь к файлу настроек.
← →
Jukadze (2007-11-03 18:35) [21]Ya (03.11.07 18:34) [19]
Приведи цитату.
← →
Kostafey © (2007-11-03 18:35) [22]> [14] Ya (03.11.07 18:22)
Вообще проблемы не вижу.
параметры читаются из 3-х мест последовательно.
1 При запуске приложения они инициализирутся значениями, заданными в коде.
2 Читаем конфиги приложения, лежашие в одной из поддиректорий прпиложения.
3 Читаем конфиги из прочих мест Application Data + реестр.
← →
Ya (2007-11-03 18:36) [23]
> Чего тут думать то. Инсталлятор программы делает в реестре
> при инсталляции отметку, что мол программа проинсталлирована
> в такую то папку. При старте программа проверяет значение
> записи в реестре. Если папка там совпадает с той, откуда
> запускают программу, то программу запускают не как портейбл
> приложение. Иначе, или если ключа нет совсем, программа
> решает, что она портейбл. В программе есть функция, которая
> в зависимости от портейбл или не портейбл возвращает путь
> к файлу настроек.
Вот. Вполне себе вариант. Спасибо.
← →
Ya (2007-11-03 18:39) [24]
> 2 Читаем конфиги приложения, лежашие в одной из поддиректорий
> прпиложения.3 Читаем конфиги из прочих мест Application
> Data + реестр.
А это не вариант, извините.
← →
atruhin © (2007-11-03 18:56) [25]> А это не вариант, извините.
Почему? Например Total Commander так работает, никто не жалуется.
← →
DVM © (2007-11-03 19:01) [26]
> Почему? Например Total Commander так работает, никто не
> жалуется.
Я думаю, что этот вариант неудобен тем, что одновременно на одном компьютере может быть портейбл и не портейбл версии одного и того же приложения. Портейбл версия таким образом может случайно считать данные не портейбл версии.
← →
atruhin © (2007-11-03 20:23) [27]> [26] DVM © (03.11.07 19:01)
Ну да, он так работает по умолчанию, естественно позволяет указазать директорию
в параметрах запуска. По моему удобно.
← →
Сергей Суровцев © (2007-11-03 20:25) [28]Сделай в программе настройку для пути папки с данными и иди себе с миром.
← →
Piter © (2007-11-03 21:10) [29]Ну вы развели болтологию...
Да, согласно современным правилам - программа должна хранить данные в профиле пользователя - или в спец. папке в DaS, или в реестре, в ветке этого пользователя.
Но некоторым нравится, когда все в папке с программой.
Вывод только один - дать пользователю выбрать вариант работы.
← →
Kolan © (2007-11-03 21:15) [30]А если запустили с CD диска?
← →
Юрий Зотов © (2007-11-04 00:39) [31]Блеск. Ташшуся...
← →
turbouser © (2007-11-04 00:43) [32]
> Юрий Зотов © (04.11.07 00:39) [31]
+1
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.043 c