Добрый день!
Хочу написать программу, но пока встала одна проблема — как программе удалять саму себя?
Приложение кросс-платформенное, нужна поддержка Linux, OS X и Linux.
Первое, что пришло в голову, использовать местные шеллы (bash для Linux, cmd для Windows, Terminal для OS X), но не очень хочется связываться платформозависимыми средствами.
Есть ли какие-то другие пути, более универсальные? Используемый фреймворк — Qt
- Вопрос задан более трёх лет назад
- 3232 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 4
Для распространения своей утилиты под различными операционными системами вы можете воспользоваться кросс-платформенным установщиком Qt Installer Framework 1.5.0. Если мне не изменяет память — возможность удаления программы там присутствует. А вообще лучше всего сделать так:
Для Windows — установщик, который создает в меню «Пуск» ярлык на «unist.exe», удаляющий программу.
Для Linux — deb-пакет/tar.gz-пакет. Функция удаления линуксоидам не нужна, эту задачу решит пакетный менеджер, против которого ставить софт не рекомендуется.
Как удалить ПРОГРАММУ если она НЕ УДАЛЯЕТСЯ или открыта в другой программе?
Насчет Mac OS/OS X не знаю, но думаю там есть возможность удаления установленного приложения из каталога установленных программ.
Делать внутри программы функцию удаления этой программы — весьма плохой тон.
Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
создать программу «удалялку» которая удаляет программу, а потом создает одноразовую задачу cron на удаление «удалялки»
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Напиши программу как можно г*внокоднее — юзер сам её удалит.
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Best idea ever, как я сам-то не догадался 😀
для OS X не нужно, т.к. программа туда просто копируется и удаляется простым удалением файлов.
для линухи тоже самое или пакетный менеджер все сделает, для винды, как вам уже говорили, пишется деинсталлер, который убирает из реестра ключи вашей проги + удаляет ярлыки и файлы программы — ничего сложного.
Ответ написан более трёх лет назад
Ну не совсем. Юзайте appcleaner и увидите сколько следов программа еще оставляет.
смотря как писать..
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Программирование
- +3 ещё
Как конвертировать множество сообщений чата в популярные вопросы и ответы?
- 2 подписчика
- 3 часа назад
- 35 просмотров
Источник: qna.habr.com
Как сделать, чтобы программа могла сама себя удалить и папку где находится?
Мне нужно, чтобы по параметру -uninstall программа удалялась через cmd. Параметр программа видит. Но вот удаление не происходит. Я написал сначала Directory.Delete(«Местоположение папки»).Она удалила все xml файлы, но оставила .dll и .exe файлы. Может кто подсказать как сделать, чтобы программа могла удалить сама себя?
Как найти и удалить скрытый вирус майнер на вашем компьютере с Windows 10, 8 или 7 в 2019
Отслеживать
13.6k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
задан 12 дек 2022 в 12:32
65 5 5 бронзовых знаков
запустить коммандный файл из C#, и выйти из программы С#. А в коммандном файле уже удалять всё
12 дек 2022 в 13:00
не понял, если честно.
Можете объяснить?
12 дек 2022 в 13:08
C# программа не может себя удалить. А вот bat файл, например, может (если я не ошибаюсь). Потому если вы из C# программы запустите bat файл, а саму программу закроете, то батник в теории может все удалить и закрыться. Но это я предполагаю, сам не пробовал.
13 дек 2022 в 1:57
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
попробуйте что-нибудь в этом роде:
static void Main(string[] args) < if (args.Contains(«-uninstall»)) < AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; return; >Console.WriteLine(«Other job done! Press any button to exit. «); Console.ReadKey(); > private static void CurrentDomain_ProcessExit(object sender, EventArgs e) => DeleteYourself(); static void DeleteYourself() < // Тут получим текущую папку в которой лежит наш .exe файл. Возможны разные сценарии, // возможно вам нужно будет удалять и каталоги выше по иерархии. var currentDirectory = Environment.CurrentDirectory; // Создадим экземпляр процесса, который в cmd выполнит команду удаления этой папки System.Diagnostics.Process process = new System.Diagnostics.Process() < StartInfo = new System.Diagnostics.ProcessStartInfo() < WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden, FileName = «cmd.exe», WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System), // Зададим рабочий каталог, потому что если этого не сделать, сама папка с нашим .exe останется заблокированной и мы не сможем ее удалить. Arguments = $»/C timeout 1 » /s /q» // /C — говорит cmd.exe что мы передаем в нее стркоу с командой, а не просто запускаем (как у вас передается -uninstall) // timeout 1 — ждет 1 секунд перед выполнением следующей операции, за это время наше приложение должно завершиться и не блокировать .exe (возможно может понадобиться больше времени) // >; // И запускаем его process.Start(); >
Отслеживать
ответ дан 15 дек 2022 в 22:24
Vyacheslav Nizhegorodtsev Vyacheslav Nizhegorodtsev
84 5 5 бронзовых знаков
- c#
- windows
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Может ли программа сама изчезнуть с компьютера?
У меня пропал Фотошоп. Вчера работала, сегодня включила компьтер, а его нет.
в избранное
DimDi mich [80]
8 лет назад
Доброго вечера! У меня была один раз такая история. Был Касперский на один месяц пробный и один очень хороший файлик, крэк, так называемый, который этого Касперского каждый раз продлевал еще на один месяц. Пользовался таким образом Каспером около полутора лет, пока в один прекрасный момент не обнаружил отсутствие этого файлика на компьютере. Каспер остался, а файлика нет.
Что самое интересное — все было продублировано на флешке. Так вот — на флешке та же самая картина. Прямо — таки фантастика какая-то.
автор вопроса выбрал этот ответ лучшим
Источник: www.bolshoyvopros.ru