|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Пользователь Сообщения: 89
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
|
|
Отправлено: 17:37, 21-07-2011 | #1361 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать sawe, Я не знаю как в предыдущих версиях, может наследие...
Местные регистры - означает, что эти переменные работают, только в пределах одной секции или функции - потом значение этих переменных уничтожается (как и в компиляторах си, делфи) глобальные значения - т.е эти переменые, значения можно использовать любой функцией или макросом в пределах установщика. Однако все значения этих переменных использовать можно любой функцией или любым макросом. |
------- Отправлено: 18:08, 21-07-2011 | #1362 |
Пользователь Сообщения: 89
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
|
|
Отправлено: 22:21, 21-07-2011 | #1363 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Уважаемый kotkovets, не подскажите по какой причине может не компилироваться такой макрос дерегистрации:
!macro UnRegisterExtension extenstion Push $1 Push $2 StrCpy $ClassName "FastStone.${extenstion}" ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" "" StrCmp $1 "$ClassName" 0 RestoreProgid DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "" DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "PerceivedType" DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "Content Type" DeleteRegKey HKLM "SOFTWARE\Classes\$ClassName" ; ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" "FastStone.bak" WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "" $1 DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "FastStone.bak" ; RestoreProgid: ; ReadRegStr $2 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" $2 DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak" ; Pop $1 Pop $2 !macroend StrCpy $ClassName "FastStone.TIFF" () () ReadRegStr $1 HKLM\SOFTWARE\Classes\.TIFF\ StrCmp "$1" "$ClassName" equal=0, nonequal=RestoreProgid DeleteRegValue: HKLM\SOFTWARE\Classes\.TIFF\ DeleteRegValue: HKLM\SOFTWARE\Classes\.TIFF\PerceivedType DeleteRegValue: HKLM\SOFTWARE\Classes\.TIFF\Content Type DeleteRegKey: HKLM\SOFTWARE\Classes\$ClassName ReadRegStr $1 HKLM\SOFTWARE\Classes\.TIFF\FastStone.bak WriteRegStr: HKLM\SOFTWARE\Classes\.TIFF\=$1 DeleteRegValue: HKLM\SOFTWARE\Classes\.TIFF\FastStone.bak Error: label "RestoreProgid:" already declared in section Error in macro UnRegisterExtension on macroline 15 Error in script "D:\NSIS\FastStoneView.nsi" on line 769 -- aborting creation process |
------- Отправлено: 17:49, 23-07-2011 | #1364 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
Здесь нужно применять условные переходы или логическую конструкцию. !include logiclib.nsh -- -- StrCpy $ClassName "FastStone.${extenstion}" ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" "" ${If} $1 == "$ClassName" DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "" DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "PerceivedType" --- --- ${Else} ReadRegStr $2 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" $2 DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak" ${EndIf} --- --- |
|
------- Отправлено: 19:12, 23-07-2011 | #1365 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Спасибо за ответ. Пока я его ждал, еще попробовал сделать так:
!macro UnRegisterExtension extenstion Push $1 Push $2 StrCpy $ClassName "FastStone.${extenstion}" ; ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" "" StrCmp $1 "$ClassName" 0 +2 DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "" ; StrCmp $1 "$ClassName" 0 +3 DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "PerceivedType" DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "Content Type" ; StrCmp $1 "$ClassName" 0 +2 DeleteRegKey HKLM "SOFTWARE\Classes\$ClassName" ; StrCmp $1 "$ClassName" 0 +4 ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" "FastStone.bak" WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "" $1 DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "FastStone.bak" ; ;;RestoreProgid ; ReadRegStr $2 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" $2 DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak" ; Pop $1 Pop $2 !macroend И все таки не понятно почему безусловные переходы совпадают? Ведь дерегистрация каждого расширения вызывается отдельной коммандой: !insertmacro UnRegisterExtension "WMF" !insertmacro UnRegisterExtension "TIFF" !insertmacro UnRegisterExtension "TIF" !insertmacro UnRegisterExtension "TGA" Я так понимаю, что макрос каждый раз запускается снова для выполнения комманд, или во что-то не врубился? |
------- Отправлено: 19:37, 23-07-2011 | #1366 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
Цитата wolkow70:
Цитата wolkow70:
|
|||
------- Отправлено: 19:45, 23-07-2011 | #1367 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
http://nsis.sourceforge.net/File_Association !macro UnRegisterExtension_ !verbose push !verbose ${_FileAssociation_VERBOSE} Exch $R1 ;desc Exch Exch $R0 ;ext Exch Push $0 Push $1 ReadRegStr $1 HKCR $R0 "" StrCmp $1 $R1 0 NoOwn ; only do this if we own it ReadRegStr $1 HKCR $R0 "backup_val" StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key DeleteRegKey HKCR $R0 Goto NoOwn Restore: WriteRegStr HKCR $R0 "" $1 DeleteRegValue HKCR $R0 "backup_val" DeleteRegKey HKCR $R1 ;Delete key with association name settings NoOwn: Pop $1 Pop $0 Pop $R1 Pop $R0 !verbose pop !macroend |
|
------- Отправлено: 20:09, 23-07-2011 | #1368 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
Вот вы попробуйе в FileAssociation.nsh заменить ${CallArtificialFunction} на !insertmacro и вы получите конфликт по именам переходов |
|
------- Последний раз редактировалось kotkovets, 23-07-2011 в 20:47. Отправлено: 20:38, 23-07-2011 | #1369 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
|
|
------- Последний раз редактировалось wolkow70, 12-09-2011 в 12:31. Отправлено: 09:21, 24-07-2011 | #1370 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|