Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа как результат работы моего приложения 
:(
    Опции темы
gambit
Дата 11.1.2011, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



привет. Интересует такой вопрос. Например WinRAR создает самораспоковывающийся архив, фактически это программа. Вот как он его создает, он компилирует на ходу, или из ресурсов берет шаблон exe файла или как? И как подобное реализовать самому. Что бы например я ввожу в textbox, слово "ыврапывра", нажимаю сохранить, сохранялся exe, при запуске которого открывалась форма, и на ней было в label написано - "ыврапывра"
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 11.1.2011, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(gambit @  11.1.2011,  01:42 Найти цитируемый пост)
Что бы например я ввожу в textbox, слово "ыврапывра", нажимаю сохранить, сохранялся exe, при запуске которого открывалась форма, и на ней было в label написано - "ыврапывра"

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

Цитата(gambit @  11.1.2011,  01:42 Найти цитируемый пост)
Например WinRAR создает самораспоковывающийся архив, фактически это программа

он сжимает данные и помещает их в простой инсталлятор (возможно свой, возможно нет)
PM MAIL   Вверх
jonie
Дата 11.1.2011, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(mrbrooks @  11.1.2011,  11:38 Найти цитируемый пост)

он сжимает данные и помещает их в простой инсталлятор (возможно свой, возможно нет) 

все проще. У него в инсталяционной папке лежат эти самые распаковщики. вин рар тупо делает архив, и приклеивает его оверлеем к exe-шке (т.е. тупо записывает в конец).
Exe при запуске вычисляет свой размер по PE заголовку и распоковывает архив.

вот как получить свой размер:
Код

DWORD CScriptInstaller::getSelfSize()
{
    DWORD result = 0;
    char* pself = reinterpret_cast<char*>(hInst);
    pself += PIMAGE_DOS_HEADER(pself)->e_lfanew + sizeof(DWORD);
    int numSections = PIMAGE_FILE_HEADER(pself)->NumberOfSections;
    pself += sizeof(IMAGE_FILE_HEADER) + sizeof(IMAGE_OPTIONAL_HEADER);

    for(int i=0;i<numSections;++i)
    {
        PIMAGE_SECTION_HEADER ps = reinterpret_cast<PIMAGE_SECTION_HEADER>(pself);
        if(ps->PointerToRawData + ps->SizeOfRawData > result)
        {
            result = ps->PointerToRawData + ps->SizeOfRawData;
        }

        pself += sizeof(IMAGE_SECTION_HEADER);
    }

    return result;
}


Это сообщение отредактировал(а) jonie - 11.1.2011, 13:53


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.