PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 [106] 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

wolkow70
24-12-2011, 10:58
то ставите себе,
к примеру x32 и параллельно x64 - появится меню выбора меню загрузки ОС. »

Поставил себе XPX64 Edition. Для эксперементов с инсталляторами ее хватит?
Сразу возникли вопросы:
Если я инициализирую папку программы:

Var SysDrive
Function .onInit
${If} ${RunningX64}
StrCpy $INSTDIR "$SysDrive\$PROGRAMFILES64\CCleaner"
${Else}
StrCpy $INSTDIR "$SysDrive\$PROGRAMFILES\CCleaner"
${EndIf}
StrCpy $SysDrive $WINDIR 2
FunctionEnd

то строка
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" не нужна или она просто не будет выполняться в этом случае?
Еще у меня после снятия снимков реестра получилается такая конструкция
:
${If} ${RunningX64}
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open\command" "" "$\"$INSTDIR\CCleaner.exe$\" /%1"
;
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch\shell\open\command" "" "$\"$INSTDIR\CCleaner.exe$\" /%1"
;
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch\shell\open\command" "" "$\"$INSTDIR\CCleaner.exe$\" /%1"
${Else}
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open\command" "" "$\"$INSTDIR\ccleaner.exe$\" /%1"
${EndIf}
Это правильно, или по другому надо делать? Мне просто один раз разобраться нужно с X64.

diakov
24-12-2011, 11:19
Var SysDrive
Function .onInit
${If} ${RunningX64}
StrCpy $INSTDIR "$SysDrive\$PROGRAMFILES64\CCleaner"
${Else}
StrCpy $INSTDIR "$SysDrive\$PROGRAMFILES\CCleaner"
${EndIf}
StrCpy $SysDrive $WINDIR 2
FunctionEnd »

Можеш ставить $PROGRAMFILES64 потому как и для х86 и для х64 єто C:\Program Files, а вот уже в 64разрядной системе констатация $PROGRAMFILES и $PROGRAMFILES32 представляют папку C:\Program Files (x86).

А в реестре

так


${If} ${RunningX64}
SetShellVarContext all
SetRegView 64
;;;;;;;;;;ключи для х64
${Else}
SetShellVarContext all
SetRegView 32
;;;;;;;;;ключи для х86
${EndIf}

И не забудь подключить !include "x64.nsh"
тоесть тебе надо добавить SetRegView 64 или SetRegView 32

wolkow70
24-12-2011, 12:04
Можеш ставить $PROGRAMFILES64 потому как и для х86 и для х64 єто C:\Program Files, а вот уже в 64разрядной системе констатация $PROGRAMFILES и $PROGRAMFILES32 представляют папку C:\Program Files (x86). »

То есть, ты хочешь сказать, что для х86 $PROGRAMFILES64=$PROGRAMFILES?
Может это на практике и будет так интерпретировано, но все таки это не "комильфо".
Если соблюдать все тонкости, то в данном случае $INSTDIR отличается в зависимости от разрядности, тем более эта переменная используется по ходу всего скрипта, поэтому во избежание каких-либо накладок, лучше объявить ее по разному.
Еще я заметил, что в X64 распаковываются оба экзешника, и ccleaner.exe берет на себя часть функций, что следует из комманды cclaunch\shell\open\command" "" "$\"$INSTDIR\ccleaner.exe$\" /%1", в то время, как основным исполняемым файлом является CCleaner64.exe.
Я посмотрел твой скрипт, не могу понять, что это за ключ HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Tracing\ccsetup314_RASAPI32"? Я у себя такого ключа не нашел.

${If} ${RunningX64}
SetShellVarContext all
SetRegView 64
;;;;;;;;;;ключи для х64
${Else}
SetShellVarContext all
SetRegView 32
;;;;;;;;;ключи для х86
${EndIf} »
Это понятно, мне не понятно какие из приведенных выше ключей предназначены для X64.

diakov
24-12-2011, 12:11
то по моему ключ по приоритету выполнения...дело в том что я ставил клинер на х86 и сканировал ключи, а потом ставил на х64 и сканировал ключи и соотвественно прописывал их в разные секции...

wolkow70
24-12-2011, 12:20
то по моему ключ по приоритету выполнения...дело в том что я ставил клинер на х86 и сканировал ключи, а потом ставил на х64 и сканировал ключи и соотвественно прописывал их в разные секции... »
Я тоже ставил на разные оси и сравнивал ключи.
На X86 только:

WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open\command" "" "$\"$INSTDIR\ccleaner.exe$\" /%1"

На X64 все это:

WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\cclaunch\shell\open\command" "" "$\"$INSTDIR\CCleaner.exe$\" /%1"
;
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\Wow6432Node\cclaunch\shell\open\command" "" "$\"$INSTDIR\CCleaner.exe$\" /%1"
;
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch" "" "URL: CCleaner Protocol"
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch" "URL Protocol" ""
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch\shell" "" ""
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Wow6432Node\Classes\cclaunch\shell\open\command" "" "$\"$INSTDIR\CCleaner.exe$\" /%1"

diakov
24-12-2011, 12:34
А чем сравнивал то?

wolkow70
24-12-2011, 12:50
Я использую программы RegOrganizer и Registry WorkShop
В RegOrganizer делаю снимок изменений, а в Registry WorkShop просматриваю ключи и осуществляю экспорт их в рег-файлы, которые дальше конвертирую в Reg2NSIS.
Вот сами ключи:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\cclaunch]
@="URL: CCleaner Protocol"
"URL Protocol"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\cclaunch\shell]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\cclaunch\shell\open]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\cclaunch\shell\open\command]
@="\"F:\\Program Files\\CCleaner\\ccleaner.exe\" /%1"
===========================================================
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\cclaunch]
@="URL: CCleaner Protocol"
"URL Protocol"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\cclaunch\shell]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\cclaunch\shell\open]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\cclaunch\shell\open\command]
@="\"F:\\Program Files\\CCleaner\\ccleaner.exe\" /%1"
===========================================================
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\cclaunch]
@="URL: CCleaner Protocol"
"URL Protocol"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\cclaunch\shell]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\cclaunch\shell\open]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\cclaunch\shell\open\command]
@="\"F:\\Program Files\\CCleaner\\ccleaner.exe\" /%1"

diakov
24-12-2011, 13:16
А я использовал Regshot, мож потому...

kotkovets подскажи как сделать что бы иконка проги отображалась в панели управление программы?
где то видел статью но теперь не могу найти

kotkovets
24-12-2011, 14:02
StrCpy $INSTDIR "$SysDrive\$PROGRAMFILES64\CCleaner" »
Бред!!! получится, что так:
$INSTDIR = С:\C:\Program Files\CCleaner :o
InstallDir помещает свое значение в переменную $INSTDIR
Это понятно, мне не понятно какие из приведенных выше ключей предназначены для X64. »
Реестр 64-разрядных версий Windows подразделяется на 32- и 64-разрядные разделы. Большинство 32-разрядных разделов имеют те же имена, что и их аналоги в 64-разрядном разделе, и наоборот. По умолчанию редактор реестра 64-разрядных версий Windows отображает 32-разрядные разделы в разделе HKEY_LOCAL_MACHINE\Software\WOW6432Node
В комплекте поставки Windows XP 64-bit Edition имеются две версии Редактора реестра:
одна, запускаемая по умолчанию, демонстрирует только 64-битный раздел реестра Windows XP,
другая предназначена для редактирования 32-разрядного раздела.
Естественно 64-битную программу система "заставляет" использовать по умолчанию 64-разрядный реестр
и 32-битные программы использовать по умолчанию 32-разрядный реестр.
установщик NSIS в х64 - это 32-разрядный процесс, а значит по умолчанию вид (SetRegView 32)
Использование (SetRegView 64) позволяет инсталлятору NSIS использовать доступ к 64-разрядному виду реестра.
как сделать что бы иконка проги отображалась в панели управление программы? »
Смотрите ключи в ветке:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel

diakov
24-12-2011, 14:20
kotkovets,
diakov, Да все так же, когда страница финиша открывается...
Если портативка, то $Radio=1, а в хедере NSIS\Contrib\Modern UI 2\Pages\Finish.nsh объявлена
переменная $mui.FinishPage.Run - это хэндл чекбокса, а раз есть хэндл делаем с контролом почти все, что захотим...
Код:
!define MUI_PAGE_CUSTOMFUNCTION_SHOW SHOW_FINISH
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Function SHOW_FINISH
${If} $Radio1 == 1
ShowWindow $mui.FinishPage.Run 0 ;скрываем чекбокс
${NSD_SetState} $mui.FinishPage.Run 0 ;и делаем чекбокс неотмеченным
${EndIf}
FunctionEnd »


Чето не получается мож что не так вылазить две страницы финиша

kotkovets
24-12-2011, 14:23
Чето не получается мож что не так вылазить две страницы финиша »
Потому что, у вас 2 записи странички финиша: !insertmacro MUI_PAGE_FINISH
Уберите одну запись.

diakov
24-12-2011, 14:24
Смотрите ключи в ветке:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel »

kotkovets,, наверное неправильно понял или я так обьяснил))

Что бы установленный мною репак отображался в установка и удаление программ, или вот скажем в рево юнинсталер не видит мого установленого репака.

Потому что, у вас 2 записи странички финиша: !insertmacro MUI_PAGE_FINISH
Уберите одну запись. »

А что бы появился чекбокс запустить например ссклинер в фцию



Function SHOW_FINISH
${If} $Radio1 == 1
ShowWindow $mui.FinishPage.Run 0 ;скрываем чекбокс
${NSD_SetState} $mui.FinishPage.Run 0 ;и делаем чекбокс неотмеченным
${EndIf}
${If} $Radio == 1
ShowWindow $mui.FinishPage.Run 1 ;скрываем чекбокс
${NSD_SetState} $mui.FinishPage.Run 1 ;и делаем чекбокс неотмеченным
${EndIf}
FunctionEnd


надо дописать

${If} $Radio == 1
ShowWindow $mui.FinishPage.Run 1
${NSD_SetState} $mui.FinishPage.Run 1
${EndIf}

или как его там нарисовать)) Чето я туплю :durak:

kotkovets
24-12-2011, 14:36
Что бы установленный мною репак отображался в установка и удаление программ »

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Название программы" "DisplayName" "Название программы"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Название программы" "UninstallPath" "Путь к папке программы"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Название программы" "UninstallString" "Путь к деинсталлятору программы"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Название программы" "DisplayIcon" "Путь к исполняемому файлу программы"
Естественно в ключи подставляете свои данные программы.
А что бы появился чекбокс запустить например ссклинер в фцию »
Что это за вопрос и как его понять, изъясняйтесь понятнее!

wolkow70
24-12-2011, 14:52
Бред!!! получится, что так:
$INSTDIR = С:\C:\Program Files\CCleaner
InstallDir помещает свое значение в переменную $INSTDIR »

Согласен, что бред (скопировал где-то не подумав).
;
Function .onInit
${If} ${RunningX64}
StrCpy $INSTDIR "$PROGRAMFILES64\CCleaner"
${Else}
StrCpy $INSTDIR "$PROGRAMFILES\CCleaner"
${EndIf}
FunctionEnd

InstallDir помещает свое значение в переменную $INSTDIR
Это понятно, поэтому и удаляем строку
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"

ТАК?

kotkovets
24-12-2011, 14:55
ТАК? »
так
Можно и так:
InstallDir "$PROGRAMFILES64\${PRODUCT_NAME}"

diakov
24-12-2011, 15:01
А как сделать что бы после установки на MUI_PAGE_FINISH стояла галка запустить программу, а если распаковывалась портабл весрия то что бы галки не было?

http://s44.radikal.ru/i106/1112/4a/43e5e187efe2.jpg

Если $Radio == 1 установка обычной версии и есть галка запустить
Если $Radio1 == 1 распаковка портабла и тогда нет галки запустить на MUI_PAGE_FINISH

kotkovets
24-12-2011, 15:09
А как сделать что бы после установки на MUI_PAGE_FINISH стояла галка запустить программу, а если распаковывалась портабл весрия то что бы галки не было? »
Function SHOW_FINISH
${If} $Radio1 == 1
${NSD_SetState} $mui.FinishPage.Run 0 ;и делаем чекбокс неотмеченным
ShowWindow $mui.FinishPage.Run 0 ;скрываем чекбокс из ввиду
${EndIf}
FunctionEnd
И больше ничего не нужно писать в этой функции, код будет выполняться, если
распаковывалась портабл весрия то что бы галки не было »

diakov
24-12-2011, 15:23
Все заработало :)
Я олень просто !define MUI_FINISHPAGE_RUN "$INSTDIR\ххххххххх.exe" не вставил! :sorry:
Спасибо!

wolkow70
24-12-2011, 15:30
как сделать что бы иконка проги отображалась в панели управление программы?
где то видел статью но теперь не могу найти »

Иногда нужно еще, чтобы это было отмечено в файле настроек программы и имелась в реестре ссылка на CLSID

Например, для AIDA64 :

Section "Показывать Aida64 в Панели управления" ControlPanel
SetOutPath "$INSTDIR"
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}" "" "AIDA64 Extreme Edition"
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}" "InfoTip" "System diagnostics and benchmarking"
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}" "System.ApplicationName" "FinalWire.AIDA64"
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}" "System.ControlPanel.Category" "2,5,8"
WriteRegDWORD HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}" "System.ControlPanel.EnableInSafeMode" 0x3
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}\DefaultIcon" "" "$INSTDIR\aida64.exe,0"
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}\Shell" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}\Shell\Open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{185110B9-387D-435D-A165-829D17C583B8}\Shell\Open\Command" "" "$INSTDIR\aida64.exe"
;
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{185110B9-387D-435D-A165-829D17C583B8}" "" "AIDA64 Extreme Edition"
;
WriteINIStr "$INSTDIR\aida64.ini" "Generic" "ControlPanelIcon" "1"
SectionEnd

diakov
24-12-2011, 15:36
Уважаемый kotkovets, такой вопрос! Берусь за перепаковку AIMP 3.00 Build 970 RC 3 , хочу добавить ассоциацию файлов и что бы они открывались уже аимпом, потому как в стандартном инсталляторе такого нет)

Так вот правильно ли так будет??

!macro RegisterExtension extenstion
; например для .mp3
WriteRegStr HKLM "Software\Classes\.mp3" "" "Aimp.File"
WriteRegStr HKLM "Software\Classes\Aipm.File" "" "Aimp Media File"
WriteRegStr HKLM "Software\Classes\Aipm.File\DefaultIcon" "" "$INSTDIR\Aipm.exe,1"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell" "" "Play"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Play" "" "&Play in Aimp"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Play\command" "" "$\"$INSTDIR\Aipm.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\open\command" "" "$\"$INSTDIR\Aipm.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\ListBookmark" "" "Add to Aipm's &Bookmark list"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\ListBookmark\command" "" "$\"$INSTDIR\Aipm.exe$\"/BOOKMARK $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Enqueue" "" "&Enqueue in Aipm"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Enqueue\command" "" "$\"$INSTDIR\Aipm.exe$\"/ADD $\"%1$\""
; ставим приложением по умолчанию для текущего пользователя
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice" "Progid" "Aimp.File"

;потом например для .wav
WriteRegStr HKLM "Software\Classes\.wav" "" "Aimp.File"
WriteRegStr HKLM "Software\Classes\Aipm.File" "" "Aimp Media File"
WriteRegStr HKLM "Software\Classes\Aipm.File\DefaultIcon" "" "$INSTDIR\Aimp.exe,1"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell" "" "Play"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Play" "" "&Play in Aipm"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Play\command" "" "$\"$INSTDIR\Aipm.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\open\command" "" "$\"$INSTDIR\Aipm.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\ListBookmark" "" "Add to Aipm's &Bookmark list"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\ListBookmark\command" "" "$\"$INSTDIR\Aipm.exe$\"/BOOKMARK $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Enqueue" "" "&Enqueue in Aipm"
WriteRegStr HKLM "Software\Classes\Aipm.File\shell\Enqueue\command" "" "$\"$INSTDIR\Aipm.exe$\"/ADD $\"%1$\""
; ставим приложением по умолчанию для текущего пользователя
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wav\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wav\UserChoice" "Progid" "Aipm.File"
!macroend


тоесть писать так для всех .CDA, .AAC, .AC3, .APE, .DTS, .FLAC, .IT, .MIDI, .MO3, .MOD, .M4A, .M4B, .MP1, .MP2, .MP3,
.MPC, .MTM, .OFR, .OGG, .RMI, .S3M, .SPX, .TAK, .TTA, .UMX, .WAV, .WMA, .WV, .XM

и хочу чтобы был чекбокс Установить ассоциации для аудио файлов, тоесть пользователь мог выбрать ассоциировать или просто установить аимп...

то делать так:

Section "ассоциации для аудио файлов"
${If} $Check == 1
SetShellVarContext all
!insertmacro RegisterExtension
${EndIf}


Так правильно будет?




© OSzone.net 2001-2012