Jump to content

Self Delete Your Script.

Recommended Posts

hi this an example on how to allow your scripts to self delete after program exit. This may be us full for uninstallers.

Well hope you may find it us full.

Comments welcome

;Self delete demo usfull for uninstallers

Func SelfDelete()
    Local $fp
    Local $Buffer
    Local $lzBatchFile

    ;Batch file.
    $lzBatchFile = "delme.bat"

    $Buffer = ":Repeat" & @CRLF
    $Buffer &= "attrib " & @ScriptName & " -r -s" & @CRLF
    $Buffer &= "del " & @ScriptName & @CRLF
    $Buffer &= "if exist " & @ScriptName & " goto Repeat" & @CRLF
    $Buffer &= "del " & $lzBatchFile & @CRLF
    $Buffer &= "exit" & @CRLF

    ;Write contents of batch to file.
    $fp = FileOpen($lzBatchFile, 2)
    FileWrite($fp, $Buffer)

    ;Clear up
    $Buffer = ""
    ;Run the script.
    Run($lzBatchFile, @ScriptDir, 0)

EndFunc   ;==>SelfDelete

Func Main()
    Local $MsgRet

    $MsgRet = MsgBox(36, "Self-Delete-Demo", "Are you sure you want to delete me.")

    If ($MsgRet = 6) Then

EndFunc   ;==>Main

;Main program function.


On Error Resume Pulling Hair Out.

Link to post
Share on other sites

I define the batch file in this way:

$sCmdFile = 'ping -n 2 > NUL' & @CRLF _
                 & ':loop' & @CRLF _
                 & 'del "' & @ScriptFullPath & @CRLF _
                 & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
                 & 'start c:\dt\gol\gol.exe' & @CRLF _
                 & 'del %0'

Three tips I have learned:

  • most important: with ping ping -n 2 > NUL you have the batch file "wait", otherwise the batch will use the 100% of one core/cpu.
  • @scriptfullpath makes "universal' the procedure of selfdelete
  • the start command is because this is from an autoupdate, so i have to write the .exe name
  • del %0 is a trick that autodelete the batch file.



Link to post
Share on other sites

Look at _SelfDelete() in my signature as well for ideas.

UDF List:

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to post
Share on other sites
  • 4 years later...
Link to post
Share on other sites
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...