В ответ на http://begemotov.net/creator/shareware/evolyutsiya-portabelnosti/comment-page-1/#comment-40048
Можно найти много различных методов «мобилизации» своего ПО.
Можно переименовывать основной файл программы, создавать батник или файл метки… все это можно… (вы же разработчик, кто ж вам запретит)
НО:
1. Переименование файла – а кто сказал, что я как пользователь данного продукта не переименую его иначе? Ну не нравится мне родное его имя и тем более эта приписка portable. Имя у меня не по фэншую получается… не 8 символов. И все, и вдруг программа перестала работать… лезем на сайт производителя… пишем… спрашиваем…
Ответ мы, конечно, получим, НО тех.поддержке это быстро надоест (и как я читал многим уже такие вопросы надоели)
2. Батник – Сценарий похож. Удалили файл - потеряли портативность, а как восстановить??? Правильно – лезем и читаем мануалы, ридми и прочие faq.
3. Файл-метка – хорошо, но что делать , если его тоже удалят? А вот тут я и подошел к самому главному…
Давайте определим основные положения (как их вижу я):
а. речь здесь идет только о тех программах, которым необходимо хранить свои настройки (программу, которая не сохраняет настроек по умолчанию можно считать portable)
б. создавать инсталлятор для portable-версии программы крайне нелогично. «Распаковал и работает» - таков наш девиз.
в. отдельная portable сборка – глупо, если в ней меняется только флаг переключающий ее в таковую.
ИТОГ: у нас нет инсталлятора, и есть одна программа, способная работать в двух режимах, и у нас есть одна проблема : как узнать portable мы или нет …
Мое предложение – спросить у пользователя. Это разумно, ведь именно он решает, где именно он хочет хранить свои настройки. Но спрашивать его об этом каждый раз не то что глупо, а полный идиотизм.
По моему мнению, алгоритм работы должен быть такой:
После запуска программа должна найти файл-метку (или файл настроек) и из него узнать в каком режиме она (программа) работает. Если она этого файла не найдет, то это первый запуск программы и необходимо спросить у пользователя о том, где же мы будем хранить свои настройки. Таким нехитрым способом мы определили первый запуск.
В окне настроек программы следует обязательно предоставить возможность изменить место хранения настроек (реестр или ini-файл). При этом всю ответственность за перенос существующих настроек из файла в реестр или наоборот программа должна взять на себя. При этом необходимо скрыть от пользователя ВСЕ настройки влияющие на «портативность» программы.
ИТАК: у нас есть корректно работающая «переключалка» на portable-версию и обратно, а также пользователь, которому предоставлен выбор в каком именно его любимая программа будет работать сегодня.
ЛОЖКА ДЕГТЯ: а что если удалить файл метку или файл настроек… Да действительно это проблема, но она тоже решаема. Программа должна проверить, не было ли ранее сохранены ее настройки в реестре, и если таковые она там найдет, то разумно пользователю задать следующий вопрос: «В реестре были найдены настройки от предыдущей версии программы, оставить их или применить настройки по умолчанию?» и действовать в зависимости от ответа.