gcue Posted November 13, 2013 Share Posted November 13, 2013 hello world. I am trying to do a self updating script. I see several examples which use a batch file and taskkill to end the current script and copy the new one. however, with windows 7 the batch file has to run with elevated rights to taskkill the process successfully and the user running the script may not necessarily have those rights. has anyone found another way to get around this? thanks => Link to comment Share on other sites More sharing options...
water Posted November 13, 2013 Share Posted November 13, 2013 Is it necessary to update the running script? You should separate data and code. Data should be changeable by the user, code changes should only be made and tested by a coder/scripter/programmer. Can you describe your problem in more detail? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 there really isnt data.. so the script changes reflect bug fixes or enhancements to the functionality. i think i may have thought of a way. expandcollapse popupFunc Check_Updates() $remote_version = FileGetVersion($tools_dir & "\" & @ScriptName) $local_version = FileGetVersion(@ScriptFullPath) $compare_versions = _VersionCompare($local_version, $remote_version) If Not @error Then If $compare_versions = -1 Then Get_Update() EndIf EndIf EndFunc ;==>Check_Updates Func Get_Update() $remote_file = $tools_dir & "\" & @ScriptName $script_name = StringReplace(@ScriptName, ".exe", "") $script_name = StringStripWS($script_name, 8) $batch_file = @TempDir & "\update_" & $script_name & ".cmd" If FileExists($batch_file) Then FileDelete($batch_file) EndIf $command = '@echo off' & @CRLF $command &= '' & @CRLF $command &= 'ping localhost -n 5 > nul' & @CRLF $command &= 'del /f /q "' & @ScriptFullPath & '"' & @CRLF $command &= 'copy /y "' & $remote_file & '" "'& @ScriptFullPath & '"' & @CRLF $command &= @ScriptFullPath & @CRLF $command &= 'del %0' FileWrite($batch_file, $command) Run($batch_file, @ScriptDir, @SW_HIDE) _Exit() EndFunc ;==>Get_Update Link to comment Share on other sites More sharing options...
BrewManNH Posted November 13, 2013 Share Posted November 13, 2013 Better idea would be to have a separate script that downloads the updates and then copies the files to the installation location. Run the update script, and exit the current script right after you do that. Then you don't need to force close the main script as it's already closed. water 1 If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 where would the seperate script reside? copy it to the pc using fileinstall and just leave it there? thats an idea too.. Link to comment Share on other sites More sharing options...
water Posted November 13, 2013 Share Posted November 13, 2013 That would be a simple and reliable way to solve your problem. If needed you could delete the update script if no update is needed. So no traces are left on the users PC. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 self delete? thats through batch file tho right? need the elevated rights to taskkill it first? or delete through parent script. and only delete it if theres no updates - otherwise let it linger on their pc ;-) Link to comment Share on other sites More sharing options...
water Posted November 13, 2013 Share Posted November 13, 2013 The idea is: Check if an update is available If yes: Fileinstall the Update script start the update script exit the main script Now the update is being done by the update script call >_SelfDelete to delete the update script My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 good process except that selfdelete uses taskkill - need elevated rights for that =) Link to comment Share on other sites More sharing options...
guinness Posted November 13, 2013 Share Posted November 13, 2013 There is a _SelfUpdate() in my signature. 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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
water Posted November 13, 2013 Share Posted November 13, 2013 There are other SelfDelete solutions available that simple write a BAT file to disk, call this bat file and exit. Shouldn't need elevated permissions. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted November 13, 2013 Share Posted November 13, 2013 There is a _SelfUpdate() in my signature. Your _SelfUpdate uses TaskKill which needs elevated permissions which isn't possible for gcue according to his OP. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 There are other SelfDelete solutions available that simple write a BAT file to disk, call this bat file and exit. Shouldn't need elevated permissions. good point =) thank you gentlemen Link to comment Share on other sites More sharing options...
kaotkbliss Posted November 13, 2013 Share Posted November 13, 2013 Here's what I do if it helps at all I have an installer, packed in the installer is the main script. The main script (when installed) can search for updates by downloading a txt file in my dropbox and comparing the current version with the last version listed in my text file. If there is a newer version in the text file, the main program prompts a download. The new download is the main program packed in an installer. The installer (when run) ProcessCloses any instances of the main program running and extracts the new files. Then it starts the (new) main program and exits itself. Update done. 010101000110100001101001011100110010000001101001011100110010000 001101101011110010010000001110011011010010110011100100001 My Android cat and mouse gamehttps://play.google.com/store/apps/details?id=com.KaosVisions.WhiskersNSqueek We're gonna need another Timmy! Link to comment Share on other sites More sharing options...
guinness Posted November 13, 2013 Share Posted November 13, 2013 Your _SelfUpdate uses TaskKill which needs elevated permissions which isn't possible for gcue according to his OP.They can delete that line if they so wish. 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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
ZacUSNYR Posted November 13, 2013 Share Posted November 13, 2013 I do a version updating script here for our users for launching our in house web based accounting system and our legacy term window system. I have two files, the launcher and an update script. I tossed a file (ini file which includes the versions of both on the network, just for information. If this file exists I allow the script to version check both). This allows me to remove this file to stop any updating if it goes bonkers. On startup I check the local update.exe version against the server - this is just a filecopy. I also check the launcher file against the server version, if the server one is new I copy it over to a temp name, launch the update.exe with a parameter (just so you can't run it by itself) and close out of the launcher. When update.exe starts, it looks for the process that you pass to it, when that terms, It replaces the launcher file with the temp file it downloaded. I cache the version in an ini file local as well so I can version compare to find out if it's first run, that way I can do first run versioning stuff (sometimes they download a new icon or I change an ODBC connection). Works really well, i've done over a dozen version changes with no oddball behavior. Link to comment Share on other sites More sharing options...
corgano Posted November 13, 2013 Share Posted November 13, 2013 (edited) The idea is: Check if an update is available If yes: Fileinstall the Update script start the update script exit the main script Now the update is being done by the update script call >_SelfDelete to delete the update script Why not Parent fileinstall update script parent close update script updates update starts parent update script closes as parent sleeps for an amount of time (~200ms) parent deletes update script Or you could have the update script launch the parent script with a command line peram that tells the parent to delete it and then close, otherwise parent runs normally Edited November 13, 2013 by corgano 0x616e2069646561206973206c696b652061206d616e20776974686f7574206120626f64792c20746f206669676874206f6e6520697320746f206e657665722077696e2e2e2e2e Link to comment Share on other sites More sharing options...
water Posted November 13, 2013 Share Posted November 13, 2013 Great. That seems to be the simplest solution to the OPs "problem" My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 (edited) hmm i am getting "update failed to download" (from updater script) approximately 1 out of 10 attempts. in addition to the error, the parent script dissapears and the updater script remains. works fine the other 9 times - problem with logic? parent script Func Check_Updates() $remote_version = FileGetVersion($tools_dir & "\" & @ScriptName) $local_version = FileGetVersion(@ScriptFullPath) $compare_versions = _VersionCompare($local_version, $remote_version) If Not @error Then If $compare_versions = -1 Then FileInstall("C:\updater.exe", @TempDir & "\updater.exe", 1) Get_Update() EndIf EndIf EndFunc ;==>Check_Updates Func Get_Update() If FileExists(@TempDir & "\updater.exe") Then $remote_file = $tools_dir & "\" & @ScriptName Run(@TempDir & '\updater.exe -remote_file "' & $remote_file & '" -local_file "' & @ScriptFullPath & '" -process_exe "' & @ScriptName & '"') _Exit() EndIf EndFunc ;==>Get_Update updater script expandcollapse popup#region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=updater.ico #AutoIt3Wrapper_Outfile=updater.exe #AutoIt3Wrapper_Run_Tidy=y #endregion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <WindowsConstants.au3> Global $msg_error = 262160 Opt("TrayOnEventMode", 1) Opt("TrayMenuMode", 1 + 2) TrayCreateItem("Exit") TrayItemSetOnEvent(-1, "_Exit") TraySetToolTip(StringReplace(@ScriptName, ".exe", "")) TraySetState(1) If $CmdLine[0] > 0 Then For $i = 1 To $CmdLine[0] Select Case $CmdLine[$i] = "-remote_file" $remote_file = $CmdLine[$i + 1] Case $CmdLine[$i] = "-local_file" $local_file = $CmdLine[$i + 1] Case $CmdLine[$i] = "-process_exe" $process_exe = $CmdLine[$i + 1] UpdateScript($local_file, $remote_file, $process_exe) EndSelect Next EndIf Func UpdateScript($local_file, $remote_file, $process_exe) $process_name = StringReplace($process_exe, ".exe", "") $progress = GUICreate("Please Wait", 200, 70, -1, -1, $WS_EX_MDICHILD, $WS_EX_TOPMOST) GUISetFont(10, 600) GUICtrlCreateLabel("Updating...", 10, 10) GUISetState() $log = @TempDir & "\log.txt" $close = Kill_Process($process_exe) If $close = 1 Then $copy = FileCopy($remote_file, $local_file, 1) If $copy = 0 Then $copy = FileCopy($remote_file, $local_file, 1) If $copy = 0 Then FileWrite($log, $close & @CRLF & $copy & @CRLF & $remote_file & @CRLF & $local_file) MsgBox($msg_error, $process_name, "Update failed to download.") _Exit() EndIf EndIf ShellExecute($local_file) Else MsgBox($msg_error, $process_name, "Unable to exit " & $process_name & "." & @CRLF & _ "" & @CRLF & _ "Update canceled.") EndIf Self_Delete() _Exit() EndFunc ;==>UpdateScript Func Kill_Process($process_exe) For $x = 1 To 10 If ProcessExists($process_exe) Then ProcessClose($process_exe) Else ExitLoop EndIf Next $close = 1 If ProcessExists($process_exe) Then $close = ProcessWaitClose($process_exe, 3) EndIf Return $close EndFunc ;==>Kill_Process Func Self_Delete() $batch_file = @TempDir & "\delete_updater.cmd" If FileExists($batch_file) Then FileDelete($batch_file) EndIf $command = '@echo off' & @CRLF $command &= '' & @CRLF $command &= 'ping localhost -n 3 > nul' & @CRLF $command &= 'del /f /q "' & @ScriptFullPath & '"' & @CRLF $command &= 'del %0' FileWrite($batch_file, $command) Run($batch_file, @ScriptDir, @SW_HIDE) EndFunc ;==>Self_Delete Func _Exit() Exit EndFunc ;==>_Exit Edited November 13, 2013 by gcue Link to comment Share on other sites More sharing options...
gcue Posted November 13, 2013 Author Share Posted November 13, 2013 the log shows the right paths as expected. so based off the return values, the parent process is terminated successfully and the copy command fails twice. makes sense that the updater file remains because it never goes through the self_delete function but dont understand why the parent script disappears. if the copy fails when replacing a file, does it delete the original one anyway? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now