File Associations?
Scott Morrow
scott at elementarysoftware.com
Wed Mar 3 03:25:44 EST 2010
Hello Scott,
Sorry to clutter things with another post but there was one thing I forgot to include: the actual content of the variables. Sometimes the exact form of a string is what trips me up so perhaps this will be helpful. I walked through the debugger as this section of code was running and copied out the contents of each variable. (disclaimer: actually I *retyped* what I saw in the debugger window... there is probably a way to copy/paste but I couldn't recall it.)
-Scott Morrow
tProgramFilesFolderPath --> C:/Program Files/Report Card Pro
tAppFolder --> C:/Program Files/Report Card Pro
tAppName --> Report Card Pro.exe
tAppExecutablePath --> C:\Program Files\Report Card Pro\Report Card Pro.exe
tDocFileExtension --> .rcp
tAppDocAssoc --> Report Card Pro document
tDefaultIconString --> C:\Program Files\Report Card Pro\Report Card Pro.exe,1
tSubKeyDblClickDocString --> C:\Program Files\Report Card Pro\Report Card Pro.exe %1
------------------------------------------------------------------------------------------------------------------------------
local lErrorLog
on SetWindowsRegistry
put empty into lErrorLog
put "Setting the registry" into fld "progressInfo" of cd "install" of stack "elsoInstaller"
wait 1 sec
set the customPropertySet of stack "elsoInstaller" to empty
set the customPropertySet of stack "elsoInstallerLib" to empty
-- tProgramFilesFolderPath --> the path to the Programs folder -- < C:/Program Files >
put fld "installPath" of cd "destination" of stack "elsoInstaller" into tProgramFilesFolderPath
-- tAppFolder --> the name of OUR folder that contains the application we are installing -- < Report Card Pro >
set the itemDel to "/"
put item -1 of tProgramFilesFolderPath into tAppFolder
--> put the uEnclosingFolderName of stack "elsoInstaller" into tAppFolder -- the user has control over this part of the path
-- tAppName --> the name of the executable application we are installing -- < Report Card Pro >
put the uAppName of stack "elsoInstaller" into tAppName
-- tAppExecutablePath --> the fileName (Full Path) of the .exe
put tProgramFilesFolderPath &"/"& tAppName into tAppExecutablePath
-- save the full path in case we need to launch the app just before quiting this installer
set the uLaunchPath of stack "elsoInstaller" to tAppExecutablePath
replace "/" with "\" in tAppExecutablePath
-- tDocExtension -- the "dot" extension that is associated with the application we are installing -- < .rcp >
put the uFileExtention of stack "elsoInstaller" into tDocExtension
if tDocExtension is empty then
put "Ther was an error attempting to set the Registry because file extension information was missing" &cr after lErrorLog
return "file extension missing"
exit SetWindowsRegistry
end if
------------------------------------------------------------------
-- Set the Windows Registry if necessary --------
------------------------------------------------------------------
-- Check to make sure the Windows Registry is set to associate the .rcp file extension with ReportCard_Pro
if queryRegistry("HKEY_CLASSES_ROOT\"&tDocExtension&"\") <> tAppFolder then -- there is no Registry key for the file extension
-- so let's set it up
--1. Create a key in HKEY_CLASSES_ROOT for the extension, and use the default value to point to the name of the application
-- get setRegistry("HKEY_CLASSES_ROOT\.tst\","TestApp")
get setRegistry("HKEY_CLASSES_ROOT\"&tDocExtension&"\",tAppFolder)
put the result into tResult
if tResult is not empty then
put "setRegistry error 1" && tResult &cr after lErrorLog -- Custom error reporting
return tResult
end if
if lErrorLog is empty then
--2. Create a key in HKCR for the application itself, using the default value to point to a descriptor of the kind of document used by the app
-- this will be used in list views to show the kind of file a document of TestApp is:
-- get setRegistry("HKEY_CLASSES_ROOT\TestApp\","TestApp document")
put tAppFolder && "document" into tAppDocAssoc
get setRegistry("HKEY_CLASSES_ROOT\"&tAppFolder&"\",tAppDocAssoc)
put the result into tResult
if tResult is not empty then
put "setRegistry error 2" && tResult &cr after lErrorLog -- Custom error reporting
return tResult
end if
end if -- lErrorLog is empty
if lErrorLog is empty then
--3. Create a subkey of HKCR\TestApp to hold the default icon for the application. Rev document icons are in the first position
-- get setRegistry("HKEY_CLASSES_ROOT\TestApp\DefaultIcon\","C:\Program Files\TestApp\TestApp.exe,1")
put tAppExecutablePath & COMMA & "1" into tDefaultIconString
get setRegistry("HKEY_CLASSES_ROOT\"&tAppFolder&"\DefaultIcon\",tDefaultIconString)
put the result into tResult
if tResult is not empty then
put "setRegistry error 3" && tResult &cr after lErrorLog -- Custom error reporting
return tResult
end if
end if -- lErrorLog is empty
if lErrorLog is empty then
--4. Create a subkey three layers deep in HKCR\ReportCard_Pro to hold the command to open the application when the document with the ".rcp" extension is launched.
-- The path to the document is defined in the registry as %1.
-- get setRegistry("HKEY_CLASSES_ROOT\TestApp\shell\open\command\","C:\Program Files\TestApp\TestApp.exe %1")
-- for my purposes the path will look like:
-- C:/Program Files/Report Card Pro/ReportCard_Pro.exe
put tAppExecutablePath&&"%1" into tSubKeyDblClickDocString
get setRegistry("HKEY_CLASSES_ROOT\"&tAppFolder&"\shell\open\command\",tSubKeyDblClickDocString)
put the result into tResult
if tResult is not empty then
put "setRegistry error 4" && tResult &cr after lErrorLog -- Custom error reporting
return tResult
end if -- tResult is not empty
end if -- lErrorLog is empty
end if -- need to set the Windows registry
------------------------------------------------------------------
return empty
end SetWindowsRegistry
-------------------------------------------------------------------------------------------------------------------------------
On Mar 2, 2010, at 10:48 PM, Scott Rossi wrote:
> Recently, I wrote:
>
>>> For documents launching multiple instances see < relaunch > in the
>>> dictionary
>>> where there is a note to look at an example stack.
>>
>> In my stack, the relaunch message is apparently not being called for some
>> reason. I've tried placing it in the stack script and in a stack script
>> behavior, and still nothing is happening. Still trying to figure out what's
>> going on.
>
> Is it possible that the relaunch message is failing for me because I'm using
> a splash/data arrangement for my standalone? My splash executable launches
> a data stack and then closes the launching stack. Could this be why any
> subsequent launches of the EXE don't trigger the relaunch handler?
>
> Regards,
>
> Scott Rossi
> Creative Director
> Tactile Media, UX Design
>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
More information about the use-livecode
mailing list