Sign in to follow this  
Followers 0
nadigo

update process will not run

5 posts in this topic

Hi,

I wrote a small script that is run in the tray and preform update functions every 6 and 24 hours.

The aim was to reduce cpu/memory so I only check the update status every 3 hours.

For some reason, the attached script works well for short times (few mins) but will NOT work for the 6-24 hours I need.

Since my computer is set to hibernate every 2 hours, the actual testing I made was to run the complied exe, wait that my computer will get into hibernation, wake it up few ours later, and wait for the update to run , nothing happed.

What am I missing ?

Thanks for the Help,

Nadigo

#Include <GDIPlus.au3>
#Include <Date.au3>
#Include <Constants.au3>
#include <IE.au3>
#NoTrayIcon
Opt("TrayMenuMode", 1)




Func UpdateStr () 

    ; Do stuff 
    $ini = IniWrite($MyWorkingDir & "\Config.ini", "MyProcess" ,"LastStrUpdate", _NowCalc())
    MsgBox (64, "Update", "UpdateStr")  
    return 

EndFunc;==>ChngBG


Func Update () 

    ; Do stuff 
    $ini = IniWrite($MyWorkingDir & "\Config.ini", "MyProcess" ,"LastUpdate", _NowCalc())
    MsgBox (64, "Update", "Update") 
    return 

EndFunc;==>ChngBG



;-------------------------------------------------------------------------------
;###############################################################################

Sleep (100)
;Make sure only one script is ruuning 
$Pno = ProcessList("MyProcess.exe")
If $Pno[0][0] > 1 Then  Exit

Global $iTimer = _NowCalc()
$MyWorkingDir = @HomePath
    

$MyProcessItem = TrayCreateItem("MyProcess")
TrayCreateItem("")
$updateitem = TrayCreateItem("Update Now")
$sendafriend = TrayCreateItem("Send to a Friend")
TrayCreateItem("")
$aboutitem  = TrayCreateItem("About")
TrayCreateItem("")
$exititem   = TrayCreateItem("Exit")


TraySetState()

    
; loop 


While 1

    $msg = TrayGetMsg()
    TrayItemSetState($msg, $TRAY_UNCHECKED)
    
    
    ; every 3 hours check if the ini files timers are < condition to run the updates
    
    If  _DateDiff("s", $iTimer, _NowCalc())  >=  10800  then  ; check the status every 3 hours  = 10800 sec
        $iTimer = _NowCalc()


        $ini = IniRead($MyWorkingDir & "\Config.ini", "MyProcess" ,"LastUpdate", "1970/01/01 00:00:00")
        if _DateDiff("s", $ini, _NowCalc()) >= 21600  then  ; if last update is before 6 hours (21600 sec) run Update
                $hdl = Update ()
        EndIf

    
        $iniStr = IniRead($MyWorkingDir & "\Config.ini", "MyProcess" ,"LastStrUpdate", "1970/01/01 00:00:00")
        if _DateDiff("s", $iniStr, _NowCalc())  >= 86400   then     ; if last update is before 24 hours (86400 sec) run UpdateStr
            $hdl = UpdateStr()
        EndIf
    
    EndIf

; check Tray msg.
    
    Select
        Case $msg = 0
            ContinueLoop
            
        Case $msg = $updateitem
            $hdl = Update ()
               
        Case $msg = $MyProcessItem
            $oIE = _IECreate()
            _IENavigate($oIE, "http://www.MyProcess.com", 0)
        
        Case $msg = $sendafriend
            $oIE = _IECreate()
            _IENavigate($oIE, "http://www.MyProcess.com", 0)
        
        Case $msg = $aboutitem
            Msgbox(64, "About", "MyProcess")
        
        Case $msg = $exititem
            Exit

    EndSelect

    
sleep (10)

WEnd

Share this post


Link to post
Share on other sites



For some reason, the attached script works well for short times (few mins) but will NOT work for the 6-24 hours I need.

what's it doing?

Since my computer is set to hibernate every 2 hours, the actual testing I made was to run the complied exe, wait that my computer will get into hibernation, wake it up few ours later, and wait for the update to run , nothing happed.

is it not waking from hibernate, is it not doing your update?

1100111 00001011101111 00011101101111 00010111100100 00001111110100 00110111110010 00101101111001 0011100i didn't make up this form of encryption, but i like it.credit to the lvl 6 challenge on arcanum.co.nz

Share this post


Link to post
Share on other sites

what's it doing?

is it not waking from hibernate, is it not doing your update?

after coming from hibernation it will not do the update.

Share this post


Link to post
Share on other sites

after coming from hibernation it will not do the update.

ok, but it does wake up -that's a good thing. does the update portion work if you run it on its own?

1100111 00001011101111 00011101101111 00010111100100 00001111110100 00110111110010 00101101111001 0011100i didn't make up this form of encryption, but i like it.credit to the lvl 6 challenge on arcanum.co.nz

Share this post


Link to post
Share on other sites

ok, but it does wake up -that's a good thing. does the update portion work if you run it on its own?

when I run it manual via the tray item it works.

It seems like the condition:

If  _DateDiff("s", $iTimer, _NowCalc())  >=  10800  then  ; check the status every 3 hours  = 10800 sec
        $iTimer = _NowCalc()

is never met.

like the Global $iTimer = _NowCalc() is alway below 10800.

can it be that the $iTimer var is been 'lost' from memory after hibernation ?

or can it be that

$msg = TrayGetMsg()
    TrayItemSetState($msg, $TRAY_UNCHECKED)

is stock and will not get to the above condition ?

advise ?

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