For anyone who might need this in the future and hasn't written it, hopefully I can save you some time!

PROBLEM: What if your application depends on a bunch of auxilary files scattered around the user's hard drive- maybe these are pictures, movies, text files, settings, spreadsheets, who knows? You know you can make an installer that initially, will put all these files in all the right places. But what if the user accidentally deletes or moves some of them?


Instead of an installer, here is a function you can run when starting up that will install these files initially, then replace any missing asset files, "repairing" an installation if necessary on each launch.

------------------------------------------------------------------------ ------------------------------------------------------------------------
STEP ONE:

Use this function (during development) to find all the important files and import them into custom properties:

ON importAssetsIntoCustomProps
    set the custompropertyset of me to "myAssetFiles"
    REPEAT
        answer file "choose file to import (cancel when done)"
        IF it is empty THEN exit to top
        set the myAssetFiles[it] of me to URL ("binfile:" & it)
    END repeat
END importAssetsIntoCustomProps

(You can do this repeatedly, as much as you want, it will update the binary data if you import the same filename that has been updated) ------------------------------------------------------------------------ ------------------------------------------------------------------------
STEP TWO:

To call the function, use something like:

on openStack
    jjEnsureAssets
end openStack

------------------------------------------------------------------------ ------------------------------------------------------------------------
-- include these handlers:

ON jjEnsureAssets
    set the custompropertyset of me to "myAssetFiles"
    put the customproperties of me into tAssets
    REPEAT FOR each line pFile in the keys of tAssets
        IF there is no file pFile THEN
            makeFoldersIfNecessary pathFromPathAndFile(pFile)
put the myAssetFiles[pFile] of me into URL ("binfile:" & pFile)
        END IF
    END repeat
END jjEnsureAssets

ON makeFoldersIfNecessary pLocalFilePath
    set the itemdel to "/"
    put "/" into tPath
REPEAT WITH x = 2 to the number of items of pLocalFilePath -- ("2" because "/" will surely exist! :-)
        put item x of pLocalFilePath & "/" after tPath
        IF there is not a folder tPath THEN
            create folder tPath
        END IF
    END REPEAT
END makeFoldersIfNecessary

FUNCTION pathFromPathAndFile tPathAndFile
    set the itemdel to "/"
    delete the last item of tPathAndFile
    return tPathAndFile
END pathFromPathAndFile

------------------------------------------------------------------------ ------------------------------------------------------------------------

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to