powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / uninstall
10 сообщений из 10, страница 1 из 1
uninstall
    #33250316
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу сделать для своей проги uninstall, но есть одна проблема - ведь и сам файл uninstall.exe должен удаляться после сноса, т.е. uninstall.exe должен удалить сам себя. Не подскажите, а как это сделать? Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
uninstall
    #33250336
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce удаление файла пропиши
...
Рейтинг: 0 / 0
uninstall
    #33250858
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.rsdn.ru/article/install/wininstaller.xml
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
uninstall
    #33250881
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот к вопросу о модераторстве - скажите, как этот топик относится к С++ ?
...
Рейтинг: 0 / 0
uninstall
    #33253158
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВот к вопросу о модераторстве - скажите, как этот топик относится к С++ ?
Этот топик, как и другие помогает иметь "незашоренность" и не изобретать велосипед там где он не нужен.

Форум С++ это форум не для проверки синтаксиса языка а для решения проблем "околоязыковых" тоже.
Иначе этот форум следует переименовать в "низкоуровневое программирование" и станет ещё менее "живым".
IMHO
...
Рейтинг: 0 / 0
uninstall
    #33253426
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличный ответ, он очень в характере этого форума.
...
Рейтинг: 0 / 0
uninstall
    #33265184
Kagoric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно для установки лучше использовать Windows Installer, но
может кому пригодится.
MSDN VS 6.0 - period96.chm::/periodic/msj/F1/D2/SF9C.htm
Код: plaintext
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
/******************************************************************************
Module name: DelExeBF.c
Written by:  Jeffrey Richter
Note:        This function works on both Windows 95 and Windows NT.
******************************************************************************/
#define STRICT
#include <Windows.h>
#include <tchar.h>
///////////////////////////////////////////////////////////////////////////////
#include "DelExeBF.h"
///////////////////////////////////////////////////////////////////////////////
// The name of the temporary batch file
#define DELUNSETUPBAT     __TEXT("\\DelUS.bat")
///////////////////////////////////////////////////////////////////////////////
void WINAPI DeleteExecutableBF (void) {
   HANDLE hfile;
   STARTUPINFO si;
   PROCESS_INFORMATION pi;

   // Create a batch file that continuously attempts to delete our executable
   // file.  When the executable no longer exists, remove its containing
   // subdirectory, and then delete the batch file too.
   hfile = CreateFile(DELUNSETUPBAT, GENERIC_WRITE,  0 , NULL, CREATE_ALWAYS,                             FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
   if (hfile != INVALID_HANDLE_VALUE) {

      TCHAR szBatFile[ 1000 ];
      TCHAR szUnsetupPathname[_MAX_PATH];
      TCHAR szUnsetupPath[_MAX_PATH];
      DWORD dwNumberOfBytesWritten;

      // Get the full pathname of our executable file.
      GetModuleFileName(NULL, szUnsetupPathname, _MAX_PATH);

      // Get the path of the executable file (without the filename)
      lstrcpy(szUnsetupPath, szUnsetupPathname);
      *_tcsrchr(szUnsetupPath, __TEXT('\\')) =  0 ;     // Chop off the name

      // Construct the lines for the batch file.
      wsprintf(szBatFile,
         __TEXT(":Repeat\r\n")
         __TEXT("del \"%s\"\r\n")
         __TEXT("if exist \"%s\" goto Repeat\r\n")
         __TEXT("rmdir \"%s\"\r\n")
         __TEXT("del \"%s\"\r\n"), 
         szUnsetupPathname, szUnsetupPathname, szUnsetupPath, DELUNSETUPBAT);

      // Write the batch file and close it.
      WriteFile(hfile, szBatFile, lstrlen(szBatFile) * sizeof(TCHAR),
         &dwNumberOfBytesWritten, NULL);
      CloseHandle(hfile);

      // Get ready to spawn the batch file we just created.
      ZeroMemory(&si, sizeof(si));
      si.cb = sizeof(si);

      // We want its console window to be invisible to the user.
      si.dwFlags = STARTF_USESHOWWINDOW;
      si.wShowWindow = SW_HIDE;

      // Spawn the batch file with low-priority and suspended.
      if (CreateProcess(NULL, DELUNSETUPBAT, NULL, NULL, FALSE,
         CREATE_SUSPENDED | IDLE_PRIORITY_CLASS, NULL, __TEXT("\\"), &si, &pi)) {

         // Lower the batch file's priority even more.
         SetThreadPriority(pi.hThread, THREAD_PRIORITY_IDLE);

         // Raise our priority so that we terminate as quickly as possible.
         SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
         SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);

         // Allow the batch file to run and clean-up our handles.
         CloseHandle(pi.hProcess);
         ResumeThread(pi.hThread);
         // We want to terminate right away now so that we can be deleted
         CloseHandle(pi.hThread);
      }
   }
}
///////////////////////////////// End of File /////////////////////////////////
...
Рейтинг: 0 / 0
uninstall
    #33268410
siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пазвольти не согласицца с RunOnce...
Во-первых, и в-единственных, не помню, но кажется, это под 9х не работает...
А во-вторых, всё-таки, надо ждать сдедующей загрузки...

Я делал анынсталлер так:
Сначала всё удалял, потом собирал батничек, который крутился пока не удалял сам анынсталлер и себя и директорию, где сидим, и выходил из анынсталлера. Всё быстро и под любой виндой (и даже не виндой) работает :)


Во-ещё_одних_забыл_номер, в реестре есть веточка про анынсталлеры, если занести туда инфу, то можно удалятся из "удаление программ" и написать про себя инфу красивую.. типа там саппорт, справка, адрес и всё такое...
...
Рейтинг: 0 / 0
uninstall
    #33268415
sie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sie
Гость
О, соррри, не сразу посмотрел код, написанный, двумя постами выше %)
...
Рейтинг: 0 / 0
uninstall
    #33268678
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор это под 9х не работает
не всё, но работает. Хороший инсталлятор засовывает пакет обновления службы Win installer в свой дистрибутив.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / uninstall
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]