Jump to content

Self Delete Your Script.


DreamVB
 Share

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)
    FileClose($fp)

    ;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
        SelfDelete()
    EndIf

    Exit
EndFunc   ;==>Main

;Main program function.
Main()
 

.

On Error Resume Pulling Hair Out.

Link to comment
Share on other sites

I define the batch file in this way:

$sCmdFile = 'ping 127.0.0.1 -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 127.0.0.1 -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.

 

Regards

Link to comment
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 comment
Share on other sites

  • 4 years later...
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...