Как делают uninstaller'ы?
1. Хочу удалить запущенный exe-шник, из самого этого exe-шника.
2. Хочу гарантированно удалить dll, зарегистрированную как COM сервер, который кто-то может юзать (с оч. большой вероятностью — т.к. shell extention, т.е. Explorer, скорее всего держит.)
Все это, чтобы сделать Uninstaller.
Здравствуйте Рома Мик, Вы писали:
РМ>Как делают uninstaller'ы? РМ>1. Хочу удалить запущенный exe-шник, из самого этого exe-шника. РМ>2. Хочу гарантированно удалить dll, зарегистрированную как COM сервер, который кто-то может юзать (с оч. большой вероятностью — т.к. shell extention, т.е. Explorer, скорее всего держит.) РМ>Все это, чтобы сделать Uninstaller.
В реестре есть специальное место для стирания/переименования залоченых файлов. Все это дело происходит во время следующей перезагрузки, до загрузки в память большинства компонент, могущих поюзать требуемые файлы. Аналогичным образом например инсталлируются сервиспаки — ведь файлы которые они подменяют — точно заняты — и друого пути просто нет.
Какой конкретно ключ я к сожалению не помню, если к тому времени как найду это будет все еще актуально, напишу.
[skipped] S>В реестре есть специальное место для стирания/переименования залоченых файлов. Все это дело происходит во время следующей перезагрузки, до загрузки в память большинства компонент, могущих поюзать требуемые файлы. Аналогичным образом например инсталлируются сервиспаки — ведь файлы которые они подменяют — точно заняты — и друого пути просто нет.
S>Какой конкретно ключ я к сожалению не помню, если к тому времени как найду это будет все еще актуально, напишу.
[skipped]
Скорее всего это ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce и параметр — тип string, а значение — что-то вроде "del full_path_to_file".
S>В реестре есть специальное место для стирания/переименования залоченых файлов. Все это дело происходит во время следующей перезагрузки, до загрузки в память большинства компонент, могущих поюзать требуемые файлы. Аналогичным образом например инсталлируются сервиспаки — ведь файлы которые они подменяют — точно заняты — и друого пути просто нет.
Неправильно это как-то...
надо наверное через АПИ:
MSDN: ID: Q140570
HOWTO: Move Files That Are Currently in Use
Sometimes Win32 applications need to delete, rename, or move files that are currently being used by the system. One common example is that setup programs need to remove themselves from the user's hard disk when they are finished setting up a software package... тра-ля-ля
правда, с вин95 надо по-другому ну да там написано, что делать