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

Форум С++ это форум не для проверки синтаксиса языка а для решения проблем "околоязыковых" тоже.
Иначе этот форум следует переименовать в "низкоуровневое программирование" и станет ещё менее "живым".
IMHO
...
Рейтинг: 0 / 0
06.09.2005, 11:56
    #33253426
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
uninstall
Отличный ответ, он очень в характере этого форума.
...
Рейтинг: 0 / 0
12.09.2005, 23:00
    #33265184
Kagoric
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
uninstall
Конечно для установки лучше использовать 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
14.09.2005, 11:54
    #33268410
siebentearbeit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
uninstall
Пазвольти не согласицца с RunOnce...
Во-первых, и в-единственных, не помню, но кажется, это под 9х не работает...
А во-вторых, всё-таки, надо ждать сдедующей загрузки...

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


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


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