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

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

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

kosteel

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

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

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 4419
  • Репутация: 2530
  • Пол: Мужской
    • Награды
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 [?]

  • Администратор
  • *
  • Сообщений: 6972
  • Репутация: 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 [?]

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

Оффлайн Yashied [?]

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

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

Помечен как лучший ответ пользователем Отправлен Сегодня в 08:52:12

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 6972
  • Репутация: 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
    • Глобальный модератор
    • *
    • Сообщений: 4419
    • Репутация: 2530
    • Пол: Мужской
      • Награды
    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
    • Глобальный модератор
    • *
    • Сообщений: 4419
    • Репутация: 2530
    • Пол: Мужской
      • Награды
    Re: Удаление самого себя
    « Ответ #11, Отправлен: Октябрь 27, 2009, 21:57:41 »
    А это не пойдёт?

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

    Оффлайн Kaster [?]

    • Бритва, Бритва Оккама
    • Глобальный модератор
    • *
    • Сообщений: 3921
    • Репутация: 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
    • Глобальный модератор
    • *
    • Сообщений: 4419
    • Репутация: 2530
    • Пол: Мужской
      • Награды
    Re: Удаление самого себя
    « Ответ #13, Отправлен: Октябрь 28, 2009, 12:10:11 »
    Да, это работает, но это не есть "The best".

    Оффлайн SyDr [?]

    • Модератор
    • *
    • Сообщений: 637
    • Репутация: 157
    • Пол: Мужской
    • Сидра
      • Награды
    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 Ответов
    2365 Просмотров
    Последний ответ Май 03, 2010, 17:47:29
    от madmasles
    7 Ответов
    4505 Просмотров
    Последний ответ Май 21, 2010, 15:14:14
    от CreatoR
    2 Ответов
    1595 Просмотров
    Последний ответ Сентябрь 30, 2011, 02:23:59
    от La2Angel
    13 Ответов
    2853 Просмотров
    Последний ответ Март 25, 2012, 20:53:34
    от Matisse
    3 Ответов
    1212 Просмотров
    Последний ответ Декабрь 03, 2012, 21:58:19
    от HolyWay
    4 Ответов
    1421 Просмотров
    Последний ответ Сентябрь 26, 2013, 22:22:14
    от Yashied
    5 Ответов
    1306 Просмотров
    Последний ответ Октябрь 27, 2013, 23:10:59
    от Garrett
    1 Ответов
    470 Просмотров
    Последний ответ Декабрь 23, 2013, 08:03:09
    от madmasles
    6 Ответов
    2464 Просмотров
    Последний ответ Январь 31, 2014, 16:56:03
    от ---Zak---
    2 Ответов
    283 Просмотров
    Последний ответ Июль 16, 2014, 16:20:19
    от Serje