Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35

Свой инсталятор

03.03.2010, 19:21. Показов 1545. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я создаю "инсталятор" программы...
иным словом просто должен скопировать файл Exe по указаному пути. Создать Ярлык и создать 2 текстовых файла в моих документах.
Как текстовые файлы создать я знаю.
Раскажыте как можно скопировать Exe файл и создать ярлык на рабочем столе
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2010, 19:21
Ответы с готовыми решениями:

Инсталятор
Как написать инсталшилд? Сам новичек, заставили сделать на С++Builder, даже в книгах ничего не нашел, а в интернете готовые проги без...

Инсталятор msi средствами Embarcadero RAD Studio XE8
Доброго времени суток форумчане, возник вопрос, для инсталляции небольших приложений всегда использовал архиваторы для создания sfx...

Инсталятор
Скажите, что нужно сделать, чтоб написанную мной программу (консольное приложение) можно было бы запустить на другом компьютере, где нет...

15
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
03.03.2010, 20:05
Скопировать файл можно вот так (я только такой знаю):
RenameFile(oldfile,newfile);
C++
1
RenameFile("prog.exe","C:\\Program Files\\myprog\\prog.exe");
По сути мы просто переименовываем файл. Как именно копировать я незнаю.
А создание ярлыка описанно в местном FAQ'e.
1
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35
03.03.2010, 20:16  [ТС]
Попробовал не работает(
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
03.03.2010, 20:35
Копировать можно так:
C++
1
2
3
TMemoryStream * T = new TMemoryStream;
T->LoadFromFile("Путь к копируемой программе");
T->SaveToFile("Путь, куда копируем");
0
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35
03.03.2010, 20:36  [ТС]
Пробовал но также не работает... да я и не пойму что за
TMemoryStream * T = new TMemoryStream;
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
03.03.2010, 20:46
А куда вы копируете? У меня этот код копирует даже в системные папки.
TMemoryStream * T = new TMemoryStream;- кажется выделение ячейки памяти, не помню уже точно.
0
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35
03.03.2010, 20:48  [ТС]
C++
1
2
3
TMemoryStream * T = new TMemoryStream;
        T->LoadFromFile("\\History\\Results.txt");
        T->SaveToFile("\\ProgramFiles\\Results.txt");
сюда.... к примеру
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
03.03.2010, 20:52
Да, кстати, этот код копирует в уже созданную папку.

Добавлено через 1 минуту
А почему вы букву диска не указали, надо например так: "C:\\ProgramFiles\\Results.txt"

Добавлено через 1 минуту
А папка History должна быть там, откуда вы запускаете программу, иначе к ней тоже надо путь прописать.
0
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35
03.03.2010, 21:10  [ТС]
Цитата Сообщение от BARS1991 Посмотреть сообщение
пка History должна быть там, откуда вы запускаете программу, иначе к ней тоже надо путь прописат
я просто хочу чтобы сначала в етой папке где програма создавалась новая ProgramFiles
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
03.03.2010, 21:17
Тогда сначала нужно написать так:
C++
1
CreateDirectory(".\\ProgramFiles",NULL);//создаём паку ProgramFiles
А потом уже так:
C++
1
2
3
TMemoryStream * T = new TMemoryStream;
        T->LoadFromFile("\\History\\Results.txt");
        T->SaveToFile("\\History\\ProgramFiles\\Results.txt");
А если ваша прога уже находится в папке History , копировать надо так:
C++
1
2
3
TMemoryStream * T = new TMemoryStream;
        T->LoadFromFile("\\Results.txt");
        T->SaveToFile("\\ProgramFiles\\Results.txt");
1
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
03.03.2010, 21:32
вот пример того, как программа копирует сама себя в нужную директорию
C++
1
2
Char dir[256]="C:\\NewName.exe";
CopyFile("Project1.exe",dir,FALSE);
1
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35
03.03.2010, 21:53  [ТС]
Никак(

Добавлено через 15 минут
аа с последним получилось) спасиБ)

Добавлено через 4 минуты
Только как найти рабочий стол и на него вывести
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
03.03.2010, 23:03
Я немного неправильно дал код, надо писать так:
C++
1
2
3
4
CreateDirectory(".\\ProgramFiles",NULL);//создаём паку ProgramFiles
TMemoryStream * T = new TMemoryStream;
        T->LoadFromFile(".\\Results.txt");
        T->SaveToFile(".\\ProgramFiles\\Results.txt");
Добавлено через 1 час 7 минут
Для того, чтобы узнать путь к вашему рабочему столу, можно скинуть туда какой-нибудь файл, затем посмотреть его свойства, там должен быть путь.
1
 Аватар для BeLiX
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 35
03.03.2010, 23:04  [ТС]
так же вроде есть специальная команда
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
04.03.2010, 10:43
Про создание ярлыка можно посмотеть тут: https://www.forum.codenet.ru/s... hp?t=22681
Путь к рабочему столу можно найти в реестре.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
04.03.2010, 11:32
Вот готовая процедура, которая создает ярлык на рабочем столе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//---------------------------------------------------------------------------
void __fastcall TDBInstallForm::MakeShortcut(const AnsiString& pName, const AnsiString& pTitle)
{
  if (FileExists(pName))
  {
    HRESULT hr;
    IShellLink* pShLink;
    IPersistFile* ppf;
 
    // создаем ShellLink и получаем указатель на IShellLink
    hr = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink,
            reinterpret_cast<void**>(&pShLink));
 
    if (SUCCEEDED(hr))
    {
      try
      {
        pShLink->SetPath(pName.c_str());
        pShLink->SetIconLocation(pName.c_str(), 0);
        pShLink->SetWorkingDirectory(ExtractFileDir(pName).c_str());
        pShLink->SetShowCmd(SW_SHOW);
 
        hr = pShLink->QueryInterface(IID_IPersistFile, reinterpret_cast<void**>(&ppf));
        if (SUCCEEDED(hr))
        {
          char lDesktop[MAX_PATH*4];
          wchar_t lBuffer[MAX_PATH*4];
          hr = ::SHGetFolderPath(Handle, CSIDL_DESKTOP, NULL, 0, lDesktop);
          if (SUCCEEDED(hr))
          {
            AnsiString lLocation = IncludeTrailingPathDelimiter(lDesktop) +
                    pTitle + ".lnk";
            ppf->Save(lLocation.WideChar(lBuffer, sizeof(lBuffer)), FALSE);
          }
          ppf->Release();
        }
      }
      __finally
      {
        pShLink->Release();
      }
    }
  }
}
Добавлено через 3 минуты
Забыл написать, для ее использования нужно проинициализировать COM :
C++
1
  ::CoInitialize(NULL);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2010, 11:32
Помогаю со студенческими работами здесь

Профессиональный инсталятор
Народ подскажите инсталятор. Зпаранее спасибо.

Простой инсталятор для БД, кроме InstallShield и INI
Здравствуйте. Нужно создать инстал к базе данних. (таблици, алиас, проект...). Подскажите, пожалуйста, простой подходящий инсталятор кроме...

Затеял свой инсталятор
Главная его задача: Создать один файл EXE который одновременно будет и исполняемым файлом программы и распаковщиком дополнительных...

Инсталятор
Всем привет решил сделать для сайта инсталятор Вот создал форму куда вводить данные от базы данных &lt;p&gt;&lt;form...

Инсталятор
У меня во время запуска setuo.msi вылетает ошибка &quot;Не удалось открыть пакет установки. Свяжитесь с поставщиком и убедитесь, что это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru