Talk:FileAssoc

From NSIS Wiki
Jump to navigationJump to search

quotes fix for COMMAND

Hi,

previous post: obvisously the File Class description is missing in the sample after the file class ID.

In the command if you use double quotes like in myExe.exe "%1", the script will think you have 5 parameters to WriteRegExp ( Nsis 2.12 ). Since it's unlikely anyone will use single quotes in a command, I suggest to fix it by remplacing the double quotes around {COMMAND} in the macro by single quotes:

WriteRegStr HKCR "${FILECLASS}\shell\open\command" "" '${COMMAND}'

Cedric.

Even better, backticks. Done. --kichik 03:45, 31 December 2005 (PST)

Missing param in example

I've just fixed this. Discussion archived below. 127.0.0.1 18:09, 16 February 2013 (UTC)


There is a bug in the script (I think...)

In the example you call with five parameters:

; !insertmacro APP_ASSOCIATE "txt" "myapp.textfile" "$INSTDIR\myapp.exe,0" \

; "Open with myapp" "$INSTDIR\myapp.exe $\"%1$\""

but in the fuction header there is six patrameters declared:


!macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION ICON COMMANDTEXT COMMAND


There must be somthing wrong here or?

/Pontus

Perhaps a better example would be:
  !insertmacro APP_ASSOCIATE "myext" "myapp.myext" \
    "My App File" "$INSTDIR\myapp.exe,0" \
    "Open with My App" "$INSTDIR\myapp.exe $\"%1$\""
  • the "My App File" is what shows up in the Explorer details view
  • the "Open with My App" is what shows up in the context menu

86.135.85.25 23:04, 28 October 2010 (UTC)

How does one start a new comment?? I am not clever enough to figure it out ... nonetheless ...

Hello - I think APP_UNASSOCIATE can be improved. As written, it does not correctly cleanup the .${EXT} key. In my tests on Win2k and WinXP, the following correctly restores a _backup { ${FILECLASS} pointer, or deletes the .${EXT} key entirely if it is no longer in use.

!macro APP_UNASSOCIATE EXT FILECLASS

 ; Restore the previously associated file class if it differs
 ReadRegStr $R0 HKCR ".${EXT}" `${FILECLASS}_backup`
 DeleteRegValue HKCR ".${EXT}" `${FILECLASS}_backup`  
 StrCmp $R0 "" +3                       ; No original association
 WriteRegStr HKCR ".${EXT}" "" "$R0"	
 Goto +2
 DeleteRegKey HKCR ".${EXT}"	
 DeleteRegKey HKCR `${FILECLASS}`	

!macroend

Also, in both the install macros, the _backup key is overwritten upon re-install of the application, losing the needed value: following are the first lines of APP_ASSOCIATE showing my fix (2 lines w/comments):

!macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION ICON COMMANDTEXT COMMAND

 ; Backup the previously associated file class
 ReadRegStr $R0 HKCR ".${EXT}" ""
 StrCmp $R0 "" +3                ; Nothing to backup
 StrCmp $R0 "${FILECLASS}" +2    ; Don't overwrite original during a re-install
 WriteRegStr HKCR ".${EXT}" "${FILECLASS}_backup" "$R0" 

Thanks for posting the original - it was quite useful. And +2 for very good documentation :-)