Программа которая будет менять "саму себя"
Есть такой вопрос
Как сделать программу которая будет менять "саму себя" на ходу
Как я понял ресурсы менять на ходу нельзя
Вот я нашел типа решение и хотел бы узнать на сколько оно правильно
Так как мне надо типа кучу данных(включая настройки) держать внутри самого exe которые будут меняться каждый раз при закрытии программы
вот я решил что можно добавлять все эти данные в конец exe файла
и я хотел бы узнать можно ли так и не вызовет ли это каких либо проблем
при работе программы(хотя все работает ПОКА...) и есть ли какие либо другие варианты
Заранее всем большое спасибо
Как я понял ресурсы менять на ходу нельзя
Уверен в этом? Через UpdateResource, к примеру.
Даже если и нельзя менять работающую программу менять, то всегда можно её скопировать, изменить ресурс, запустить её и выйти из проги, которая ресурс изменила. Ну, а запущенная прога (изменённая) переписывает себя на место старой.
Только зачем тебе нужно настройки хранить в самом образе? Для этого же есть реестр или ini.
Даже если и нельзя менять работающую программу менять, то всегда можно её скопировать, изменить ресурс, запустить её и выйти из проги, которая ресурс изменила. Ну, а запущенная прога (изменённая) переписывает себя на место старой.
Да я уже о вспомогательной программы уже поразмышлял просто не хочется разжирять программку а то он у меня на диете :)
А еще то что я написал насчет конца файла это потом при работе программы не выявит проблем хотя вообще это неправильно но я все таки решил а вдруг...:)
Чем ты её утяжелишь? Добавь проверку командной строки ("--after-update"), десять строчек кода, чтобы переписать себя на место предыдущего ехе, и всё - никаких дополнительных ресурсов тебе не нужно.
Ты лучше "всё-таки реши" попробовать UpdateResource опытным путём, а вдруг?
Большое спасибо за ответы
а идея с переписыванием своего исполняемого файла мне очень не нравится. в чем смысл поподробнее расскажите. это portable-версия программы?
Отлично мне как раз это и надо было узнать :)
а идея с переписыванием своего исполняемого файла мне очень не нравится. в чем смысл поподробнее расскажите. это portable-версия программы?
Нужно сделать переносимую программу все настройки и все должно быть в самом исполняемом файле. короче да это portable-версия программы.
А в исполняемого файла будет пихаться разные данные может быть >100 КБ ну в зависимости от требовании пользователя, это точно не повлияет на работоспособность программы
Вы-таки не забывайте,что особо одарённые могут запустить вашу программу с компакт-диска.Ну вы поняли
Вы-таки не забывайте,что особо одарённые могут запустить вашу программу с компакт-диска.Ну вы поняли
Да уж точно я об этом как то не подумал, придется в название программы добавить "НЕ ЗАПУСКАТЬ С ДИСКОВ!!!"
к сожалению реестр не получится нужно чтобы настройки тоже были переносными
А вот если я все таки воспользуюсь ресурсами мне ведь все равно придется и воспользоваться дополнительную программу для обновлении ресурсов так вот на это Антивирус может отреагировать на такие действия или нет?
кстати как вам удалось записаться в конец файла, когда он запущен и без перемещения и других трюков?
Мне просто очень хочется таскать один файл а не два:)
Ладно буду искать решение дальше.
кстати как вам удалось записаться в конец файла, когда он запущен и без перемещения и других трюков?
Я над этим работаю :D
Как только найду решение обязательно напишу.
Поэтому проще устанавливать настройки программно - а после первого запуска сохранять их общепринятым способом для конкретного пользователя.
Это вполне нормальное поведение для портабл-программ - в конце концов
1) реализуйте несколько наиболее удобных профилей для работы, и в случае если не можете найти настроек на компьютере, предлагайте пользователю их. Зачем пытаться прыгать выше головы? Не нужно ничего хранить и таскать.
2) создать возможность гибкого управления запуском, что бы все необходимые настройки можно было бы передать через командную строку. В том числе и указать какой профиль хотел бы пользователь использовать. Вполне удобно, если мне полюбилась какая либо конфигурация - я найду силы и создам ярлык либо батник для запуска.
3) пытаться реализовать оверлеи и прочиие извращения - выбор стандартного Windows-way - через зопу к собственным велосипедам.
Третий вариант плох еще тем, что так либо иначе, до вас дойдет информация о существовании exe-упаковщиков. :) И может существенно усложнить жизнь вам - потому как решение вполне очевидное - и позволяет существенно снизить размер программы, что для портабл-программ не маловажно. Будет весьма приятно обнаружить, что после сжатия программа работает совсем не так как ожидалось.
Да и вообще - относительная сложность данного решения имхо несопоставима с полученными преимуществами - ведь все это еще отнюдь не подрозумевает идеального исполнения.
Ну хотя решать конечно вам.
Поэтому проще устанавливать настройки программно - а после первого запуска сохранять их общепринятым способом для конкретного пользователя.
Это вполне нормальное поведение для портабл-программ - в конце концов
1) реализуйте несколько наиболее удобных профилей для работы, и в случае если не можете найти настроек на компьютере, предлагайте пользователю их. Зачем пытаться прыгать выше головы? Не нужно ничего хранить и таскать.
2) создать возможность гибкого управления запуском, что бы все необходимые настройки можно было бы передать через командную строку. В том числе и указать какой профиль хотел бы пользователь использовать. Вполне удобно, если мне полюбилась какая либо конфигурация - я найду силы и создам ярлык либо батник для запуска.
3) пытаться реализовать оверлеи и прочиие извращения - выбор стандартного Windows-way - через зопу к собственным велосипедам.
Третий вариант плох еще тем, что так либо иначе, до вас дойдет информация о существовании exe-упаковщиков. :) И может существенно усложнить жизнь вам - потому как решение вполне очевидное - и позволяет существенно снизить размер программы, что для портабл-программ не маловажно. Будет весьма приятно обнаружить, что после сжатия программа работает совсем не так как ожидалось.
Да и вообще - относительная сложность данного решения имхо несопоставима с полученными преимуществами - ведь все это еще отнюдь не подрозумевает идеального исполнения.
Ну хотя решать конечно вам.
Ну что ж попробуем.
А насчет упаковщиков я полагал что можно сделать скомпилировать программы потом упаковать и лишь потом запустить и она прои первом запуске начнет возится с оверлеем так ка программа должна сама автоматически находить конец и все такое или типа того...\
Ну вобшем не важно
Большое ВСЕМ спасибо
С уважением mmtechslv
как только найду окончательное решение напишу
Ну вобшем не важно
По-моему вы сами не знаете, чего хотите добиться. _kot по-моему хорошо описал что к чему.
[COLOR="Gray"]Главное, чтобы всё было типа того :D[/COLOR]