Hello,
here comes the approach I used:


        include "Pilot.inc"
        include "Startup.inc"

        Appl    "SelfDeletePRC", 'SDel'

        data

        code
;-------------------------------------------------------------------------------
proc PilotMain(cmd.w, cmdPBP.l, launchFlags.w)
local   result.l
BEGINPROC
                cmp.w   #sysAppLaunchCmdNormalLaunch,cmd(a6)
                bne     MainExit
                systrap FrmAlert(#1000.w)
                bsr.s   Patch
MainExit
                moveq.l #0,d0
ENDPROC                          
;-------------------------------------------------------------------------------
Patch:
;       trap    #8
                systrap MemPtrNew(#(Code_End-Code_Start).l)
                move.l  a0,-(a7)                        ; save it
                systrap MemPtrSetOwner(a0.l,#0.w)
                move.l  #(Code_End-Code_Start)-1,d0
                move.l  (a7),a0
                lea.l   Code_Start(pc),a1
Copy:
                move.b  (a1)+,(a0)+
                dbf     d0,Copy

                systrap SysGetTrapAddress(#sysTrapDmOpenDatabase.w)
                move.l  (a7)+,a4        ; a4 ->heap
                move.l  a0,(TrapAddress-Code_Start)(a4)
                systrap SysSetTrapAddress(#sysTrapDmOpenDatabase.w,a4.l)
                rts
;-------------------------------------------------------------------------------
Code_Start:
;               trap    #8
SkipTrap8:
                bra.s   Skip
                dc.b    $4e,$f9         ;       jmp     $12345678
TrapAddress     dc.l    $12345678
Skip:
                lea.l   (TrapAddress-4)(pc),a4
                move.w  #$4e71,(a4)

                systrap DmFindDatabase(#0.w,&(DBname-SkipTrap8)(a4).l)
                systrap DmDeleteDatabase(#0.w,d0.l)
                bra.s   Code_Start
DBname
                dc.b    'SelfDeletePRC',0
Code_End:
                                                  
;-------------------------------------------------------------------------------
        res     'Talt', 1000, "Talt03e8.bin"
end


Best regards,
Klyatskin
http://klyatskin.da.ru





PDFL> ----------------------------------------------------------------------

PDFL> Date: 9 Jan 2000 17:14:11 -0800
PDFL> From: "Michael P. Hutchens, M.D., M.A." <[EMAIL PROTECTED]>
PDFL> Subject: Can an application delete itself?

PDFL> I have an app I'd like to run once and delete itself.  Can this be done?  How?
PDFL> -
PDFL> ------------------------------------------------------------------------------
PDFL> Michael Hutchens                                PregCalc 3.0 Professional:
PDFL> [EMAIL PROTECTED]                                 http://www.thenar.com/pregcalc
PDFL>                                                 FloChart:
PDFL>                                                 http://www.thenar.com/chart


Reply via email to