Автор Тема: Удаление самого себя  (Прочитано 7744 раз)

0 Пользователей и 1 Гость просматривают эту тему.

kosteel

  • Гость
Удаление самого себя
« Создано: Октябрь 02, 2009, 19:27:07 »
Как-то видел в хелпе автоита функцию которая удаляет скрипт по завершению выпонения (то есть сам себя скрипт удаляет), и как всегда, когда не надо попадалсь на глаза, а теперь в упор найти не могу, весь хелп излазил, помогите.

Нужна для деинсталятора.

Онлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 4465
  • Репутация: 2538
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Удаление самого себя
« Ответ #1, Отправлен: Октябрь 02, 2009, 19:56:23 »
  • Лучший ответ
  • Код: AutoIt [Выделить]
    ShellExecute('cmd.exe', '/k del "' & @ScriptFullPath & '"', '', '', @SW_HIDE)
     



    Думай, прежде чем говорить.

    kosteel

    • Гость
    Re: Удаление самого себя
    « Ответ #2, Отправлен: Октябрь 02, 2009, 20:00:22 »
  • Лучший ответ
  • Спасибо, только там просто функция была, то ли параметр в "opt" то ли макрос, ну да ладно, этот сценарий работает и замечательно.

    Онлайн CreatoR [?]

    • Администратор
    • *
    • Сообщений: 6983
    • Репутация: 2178
    • Пол: Мужской
    • AutoIt is simple, subtle, elegant
      • CreatoR's Lab
      • Награды
    • Версия AutoIt: 3.3.10.2
    Re: Удаление самого себя
    « Ответ #3, Отправлен: Октябрь 02, 2009, 20:09:53 »
  • Лучший ответ
  • kosteel [?]
    Цитировать
    только там просто функция была, то ли параметр в "opt" то ли макрос
    Небыло такого.

    P.S
    Для предотвращения конфликтов при удалении, нужно установить паузу:

    Код: AutoIt [Выделить]
    ShellExecute('cmd.exe', '/k ping -n 2 localhost < nul & del /F /Q "' & @ScriptFullPath & '"', '', '', @SW_HIDE)

    Правила, Поиск, Супер тема


    AutoIt is simple, subtle, elegant.


    «Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
    «Законы Мэрфи неоспоримы!»


    Мои работы

    kosteel

    • Гость
    Re: Удаление самого себя
    « Ответ #4, Отправлен: Октябрь 02, 2009, 20:16:28 »
  • Лучший ответ
  • Ложная память )))

    На счет паузы спасибо, у меня машинка шустрая, все прошло без запинок, а вот на других могло и запнуться.

    Оффлайн SECTOR [?]

    • Продвинутый
    • ***
    • Сообщений: 379
    • Репутация: 54
    • Пол: Мужской
      • Награды
    Re: Удаление самого себя
    « Ответ #5, Отправлен: Октябрь 02, 2009, 20:16:59 »
  • Лучший ответ
  • А что просто:
    Код: AutoIt [Выделить]
    не пойдёт? :blink:

    Оффлайн Medic84 [?]

    • Администратор
    • *
    • Сообщений: 1272
    • Репутация: 285
    • Пол: Мужской
      • Medic Laboratory
      • Награды
    • Версия AutoIt: 3.3.9.4
    Re: Удаление самого себя
    « Ответ #6, Отправлен: Октябрь 02, 2009, 20:51:45 »
  • Лучший ответ
  • А что просто:
    Код: AutoIt [Выделить]
    не пойдёт? :blink:
    Нет. Т.к. скрипт еще будет работать, из-за чего может выдадть ошибку удаления.
       
    На форуме принято отмечать полезные сообщения пальцем вверх =)
    Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.
    Моя лаборатория - программы, статьи и ответы на вопросы.

    Онлайн Yashied [?]

    • AutoIt MVP
    • Глобальный модератор
    • *
    • Сообщений: 4465
    • Репутация: 2538
    • Пол: Мужской
      • Награды
    • Версия AutoIt: 3.3.x.x
    Re: Удаление самого себя
    « Ответ #7, Отправлен: Октябрь 02, 2009, 21:44:01 »
  • Лучший ответ
  • Для предотвращения конфликтов при удалении, нужно установить паузу

    Это необязательно, если следующей строкой будет стоять Exit.

    Онлайн CreatoR [?]

    • Администратор
    • *
    • Сообщений: 6983
    • Репутация: 2178
    • Пол: Мужской
    • AutoIt is simple, subtle, elegant
      • CreatoR's Lab
      • Награды
    • Версия AutoIt: 3.3.10.2
    Re: Удаление самого себя
    « Ответ #8, Отправлен: Октябрь 02, 2009, 22:01:08 »
  • Лучший ответ
  • Yashied [?]
    Цитировать
    Это необязательно, если следующей строкой будет стоять Exit.
    Как показывает практика, будет надёжнее с паузой. Скомпилированы скрипт не всегда будет удалён.

    Medic84 [?]
    Цитировать
    скрипт еще будет работать, из-за чего может выдадть ошибку удаления.
    Ошибку наврядли (в моём примере), но то что скомпилированы скрипт не удалится это точно.

    Онлайн Yashied [?]

    • AutoIt MVP
    • Глобальный модератор
    • *
    • Сообщений: 4465
    • Репутация: 2538
    • Пол: Мужской
      • Награды
    • Версия AutoIt: 3.3.x.x
    Re: Удаление самого себя
    « Ответ #9, Отправлен: Октябрь 02, 2009, 22:30:35 »
  • Лучший ответ
  • kosteel, вот тебе функция. Надежная как скала. :wall_brake:

    Код: AutoIt [Выделить]
    #Include <File.au3>

    Func _ScriptDestroy()
        $sTemp = _TempFile(@TempDir, '~', '.bat')
        $sPath = FileGetShortName(@ScriptFullPath)
        $hFile = FileOpen($sTemp, 2)
        FileWriteLine($hFile, '@echo off')
        FileWriteLine($hFile, ':loop')
        FileWriteLine($hFile, 'del ' & $sPath)
        FileWriteLine($hFile, 'if exist ' & $sPath & ' goto loop')
        FileWriteLine($hFile, 'del ' & $sTemp)
        FileClose($hFile)
        Run($sTemp, '', @SW_HIDE)
    EndFunc   ;==>_ScriptDestroy

    _ScriptDestroy()
    MsgBox(0, '', 'Wait...')


    VitAl2013

    • Гость
    Re: Удаление самого себя
    « Ответ #10, Отправлен: Октябрь 27, 2009, 15:53:19 »
  • Лучший ответ
  • А это не пойдёт? Пока не пробовал, просто первая мысль
    Код: AutoIt [Выделить]
    OffTopicДа и к стати это стандартная функция в хэлпе выделена синим, как слово Func - раскрашиватель поправить надо.

    Онлайн Yashied [?]

    • AutoIt MVP
    • Глобальный модератор
    • *
    • Сообщений: 4465
    • Репутация: 2538
    • Пол: Мужской
      • Награды
    • Версия AutoIt: 3.3.x.x
    Re: Удаление самого себя
    « Ответ #11, Отправлен: Октябрь 27, 2009, 21:57:41 »
  • Лучший ответ
  • А это не пойдёт?

    Ты невнимательно читал эту тему.

    Оффлайн Kaster [?]

    • Бритва, Бритва Оккама
    • Глобальный модератор
    • *
    • Сообщений: 3929
    • Репутация: 616
    • Пол: Мужской
    • Мой Аватар, он лучший самый
      • Награды
    Re: Удаление самого себя
    « Ответ #12, Отправлен: Октябрь 28, 2009, 12:08:12 »
  • Лучший ответ
  • Ты невнимательно читал эту тему.
    удивительно, но простой скрипт сам себя удалил, таким образом  ;D
    Код: AutoIt [Выделить]
    HotKeySet('^{DEL}', '_Exit'); Ctrl+Del for exit
    While 1
        Sleep(100)
    WEnd

    Func _Exit()
        Exit
    EndFunc

    Func OnAutoItExit()
        FileDelete(@ScriptFullPath)
    EndFunc
     

    Конференция посвященная AutoIt на jabber.ru - autoit@conference.jabber.ru
    Как попасть на конференцию читаем тут
    Продолжать дискуссию в теме отмеченной как "Решенная" - моветон.

    Онлайн Yashied [?]

    • AutoIt MVP
    • Глобальный модератор
    • *
    • Сообщений: 4465
    • Репутация: 2538
    • Пол: Мужской
      • Награды
    • Версия AutoIt: 3.3.x.x
    Re: Удаление самого себя
    « Ответ #13, Отправлен: Октябрь 28, 2009, 12:10:11 »
  • Лучший ответ
  • Да, это работает, но это не есть "The best".

    Оффлайн SyDr [?]

    • Модератор
    • *
    • Сообщений: 649
    • Репутация: 157
    • Пол: Мужской
    • Сидра
      • Награды
    • Версия AutoIt: 3.3.12.0
    Re: Удаление самого себя
    « Ответ #14, Отправлен: Ноябрь 08, 2009, 14:43:24 »
  • Лучший ответ
  • Есть два скомпилированных скрипта. Скажем Exe1.exe и Exe2.exe
    Запускаю Exe1.exe
    В нём есть строчка:
    Код: AutoIt [Выделить]
    Exit Run('Exe2.exe /AutoIt3ExecuteLine "FileDelete(''Exe1.exe'')"')


    Работает как надо. Вопрос, насколько это надёжно? Может мне просто везёт? Вариант, что Exe1.exe заблокирован каким-либо другим приложением рассматривать не надо.

    Русское сообщество AutoIt

    Re: Удаление самого себя
    « Ответ #14 Отправлен: Ноябрь 08, 2009, 14:43:24 »


     

    Похожие темы

      Тема / Автор Ответов Последний ответ
    2 Ответов
    2434 Просмотров
    Последний ответ Май 03, 2010, 17:47:29
    от madmasles
    7 Ответов
    4582 Просмотров
    Последний ответ Май 21, 2010, 15:14:14
    от CreatoR
    2 Ответов
    1718 Просмотров
    Последний ответ Сентябрь 30, 2011, 02:23:59
    от La2Angel
    13 Ответов
    2960 Просмотров
    Последний ответ Март 25, 2012, 20:53:34
    от Matisse
    3 Ответов
    1253 Просмотров
    Последний ответ Декабрь 03, 2012, 21:58:19
    от HolyWay
    4 Ответов
    1539 Просмотров
    Последний ответ Сентябрь 26, 2013, 22:22:14
    от Yashied
    5 Ответов
    1359 Просмотров
    Последний ответ Октябрь 27, 2013, 23:10:59
    от Garrett
    1 Ответов
    493 Просмотров
    Последний ответ Декабрь 23, 2013, 08:03:09
    от madmasles
    6 Ответов
    2538 Просмотров
    Последний ответ Январь 31, 2014, 16:56:03
    от ---Zak---
    2 Ответов
    351 Просмотров
    Последний ответ Июль 16, 2014, 16:20:19
    от Serje