Sign in to follow this  
Followers 0
DreamVB

Self Delete Your Script.

6 posts in this topic

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.

Share this post


Link to post
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

1 person likes this

Share this post


Link to post
Share on other sites

Thanks for the tips Wayfarer they are very us full I add them to the next update.


On Error Resume Pulling Hair Out.

Share this post


Link to post
Share on other sites

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

1 person likes this

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

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

 

Thanks that looks some interesting code think it will give me some good ideas.


On Error Resume Pulling Hair Out.

Share this post


Link to post
Share on other sites

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
Sign in to follow this  
Followers 0