Имя пользователя:
Пароль:
 

Показать сообщение отдельно
XCV XCV вне форума

Старожил


Сообщения: 322
Благодарности: 57

Профиль | Отправить PM | Цитировать


сделал свой скрипт nsis перепаковки инстолятара, все ставится замечательно, файловые ассоциации регистрируются, но есть одно "но", установленный архиватор из инсталятора скомпилированного по этому скрипту не интегрируется в контекстное меню проводника может кто подскажет что подправить?
Код: Выделить весь код
;Text/Registry definitions
!define PRODUCT_NAME "7-Zip File Manager"
!define PRODUCT_VERSION "9.10"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define BRANDING "XCV edition"
!define Publisher "http://xcv.my1.ru/"
!define URLUpdateInfo "http://www.7-zip.org/"
!define Comments "Лучший архиватор!"
;includes
!include "MUI.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "7-Zip.ico"
!define MUI_UNICON "Uninstall.ico"
!define MUI_COMPONENTSPAGE_NODESC 

!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "nsis.bmp"
!define MUI_WIZARDIMAGE
!define MUI_WIZARDIMAGE_BITMAP "Win.bmp"

; Welcome page
;!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS 
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
;service macroses
!insertmacro GetOptions
!insertmacro RefreshShellIcons
;Common directives
BrandingText "${BRANDING}"
Name "${PRODUCT_NAME}"
Caption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
;installation types
InstType "Полная"
InstType "Сокращенная"
;variables section
;ui variables
Var IconFile
Var IconFileName
;open cmaand for files related with $installdir
Var OpenCommand
;extensions related variables
Var ClassName
Var IconIndex
;custom filetype registration function
!macro RegisterExtension extenstion
	;create a class for extesion
	StrCpy $IconFileName "7z.dll"
	StrCpy $IconFile "$INSTDIR\$IconFileName"
	StrCpy $OpenCommand "$INSTDIR\7zFM.exe $\"%1$\""
  StrCpy $ClassName "arhiv.${extenstion}"
  WriteRegStr HKCR ".${extenstion}" "" "$ClassName"
  WriteRegStr HKCR "${extenstion}" "" "$ClassName"
  WriteRegStr HKCR "$ClassName" "" "arhiv: ${extenstion}"
  WriteRegStr HKCR "$ClassName\shell\open" "" "Открыть в 7-Zip File Manager"
  WriteRegStr HKCR "$ClassName\shell\open\command" "" "$OpenCommand"
	;define  icon for class
	${Switch} ${extenstion}	
		${Case} "7z"
			StrCpy $IconIndex 0
			${Break} 	
		${Case} "rar"
			StrCpy $IconIndex 3
			${Break} 
		${Case} "ace"
			StrCpy $IconIndex 4
			${Break} 
		${Case} "arj"
			StrCpy $IconIndex 4
			${Break}
		${Case} "zip"
			StrCpy $IconIndex 2
			${Break} 
		${Case} "cab"
			StrCpy $IconIndex 7
			${Break} 
		${Default}
			StrCpy $IconIndex 0
			${Break}	
	${EndSwitch}
  WriteRegStr HKCR "$ClassName\DefaultIcon" "" "$IconFile,$IconIndex"	
  ;skipping function here
!macroend
!macro UnRegisterExtension extenstion
  StrCpy $ClassName "arhiv.${extenstion}"
  ReadRegStr $0 HKCR ".${extenstion}" ""
  StrCmp $0	$ClassName 0 +3
  DeleteRegKey HKCR ".${extenstion}"
  DeleteRegKey HKCR "$ClassName"
!macroend
;=========================================================================================================================
Section "!${PRODUCT_NAME}"
  SectionIn 1 2 RO
  SetOutPath "$INSTDIR\"
  File /r "7zip\*.*"
	WriteUninstaller "$OUTDIR\uninst.exe"
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$OUTDIR\7zFM.exe"
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$OUTDIR\uninst.exe"
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${Publisher}"
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${URLUpdateInfo}" 
	WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Comments" "${Comments}"
SectionEnd
;=========================================================================================================================
SectionGroup "Ярлыки"
	Section "В меню Пуск" 
		SectionIn 1 2
		IfSilent 0 +2
		SetShellVarContext all
		CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\7zFM.exe"
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
	SectionEnd
	Section /o "На рабочем столе"
		SectionIn 1
		IfSilent 0 +2
		SetShellVarContext all
		CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\7zFM.exe"
	SectionEnd
	Section /o "В панели быстрого запуска"
		SectionIn 1
		IfSilent 0 +2
		SetShellVarContext all
		CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\7zFM.exe"
	SectionEnd
SectionGroupEnd
;=========================================================================================================================
SectionGroup "Ассоциации файлов"
	Section "7z"
		SectionIn 1 2
		!insertmacro RegisterExtension "7z"
	SectionEnd
	Section /o "zip"
		SectionIn 1
		!insertmacro RegisterExtension "zip"
	SectionEnd
	Section "rar"
		SectionIn 1 2
		!insertmacro RegisterExtension "rar" 
	SectionEnd
	Section "ace"
		SectionIn 1 2
		!insertmacro RegisterExtension "ace" 
	SectionEnd
	Section "arj"
		SectionIn 1 2
		!insertmacro RegisterExtension "arj" 
	SectionEnd
	Section "cab"
		SectionIn 1 2
		!insertmacro RegisterExtension "cab" 
	SectionEnd
SectionGroupEnd
;=========================================================================================================================
Section "-PostinstallProfileProcessing"
 SectionIn 1 2
 ${RefreshShellIcons}
  RegDLL "$INSTDIR\7-zip.dll"
SectionEnd
;=========================================================================================================================
Section Uninstall
  UnRegDLL "$INSTDIR\7-zip.dll"
  RMDir /r "$INSTDIR\"
  SetShellVarContext all
  RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
  Delete "$DESKTOP\${PRODUCT_NAME}.LNK"
  Delete "$QUICKLAUNCH\${PRODUCT_NAME}.LNK"
		${RefreshShellIcons}
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
!insertmacro UnRegisterExtension "7z"
!insertmacro UnRegisterExtension "zip"
!insertmacro UnRegisterExtension "rar"
!insertmacro UnRegisterExtension "ace"
!insertmacro UnRegisterExtension "arj"
!insertmacro UnRegisterExtension "cab"
DeleteRegKey HKCU "Software\7-ZIP"
DeleteRegKey HKLM "Software\7-Zip"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd
PS: и еще не работает
Цитата:
!define MUI_WIZARDIMAGE
!define MUI_WIZARDIMAGE_BITMAP "Win.bmp"
Заранее благодарен за помощь...

-------
http://static.hsdn.org/infobar/240x15.gif


Отправлено: 21:52, 14-02-2010 | #97