Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для sawe

Пользователь


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

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


Часто сталкивался с задачей, когда много DLL-ок, нужно положить в системную папку.
А если такие DLL-ки уже существует и даже кем-то используются, и таких если возникает много.
Вот накалякал простой макрос для подобного случая. Вопрос такой, а стоит овчинка выделки?
читать дальше »
Код: Выделить весь код
!define RegApplicate "Software\Thinga\WinMega" # куст приложения!
!define MyPATH "D:\Test\SysDll" # место паковки программы ${MyPATH}
;---------

!macro CheckeInstall SysDll
    IfFileExists "$SYSDIR\${SysDll}.dll" 0 +3
    WriteRegStr HKLM "${RegApplicate}\SysDLL" "${SysDll}" 0 # значение в новом разделе!
   Goto ${SysDll} 
    SetOutPath $SYSDIR
    SetDateSave off
    SetOverwrite ifnewer
    File "${MyPATH}\${SysDll}.dll"
    WriteRegStr HKLM "${RegApplicate}\SysDLL" "${SysDll}" 1 # значение в новом разделе!
    WriteRegStr HKLM "${RegApplicate}\SysDLL" "SetFirst" 1 # значение в новом разделе!
   ${SysDll}:
!macroend
!macro unCheckeInstall SysDll
    ReadRegStr $0 HKLM "${RegApplicate}\SysDLL" ${SysDll}
    StrCmp $0 1 0 +2
    Delete "$SYSDIR\${SysDll}.dll"
!macroend

Section # секция установки файлов!  
  ReadRegStr $0 HKLM "${RegApplicate}\SysDLL" "SetFirst"
  Iferrors nonexistent exist # перепрыгнуть!
  nonexistent:
   !insertmacro CheckeInstall "msvca71" # обозвать только имя DLL
   !insertmacro CheckeInstall "msvcb71" # обозвать только имя DLL
   !insertmacro CheckeInstall "msvcc71" # обозвать только имя DLL
   !insertmacro CheckeInstall "msvcd71" # обозвать только имя DLL
  exist:
;--------- 
SectionEnd

;---------

Section Uninstall # секция удаления!
   !insertmacro unCheckeInstall "msvca71"
   !insertmacro unCheckeInstall "msvcb71"
   !insertmacro unCheckeInstall "msvcc71"
   !insertmacro unCheckeInstall "msvcd71"
  DeleteRegKey HKLM "${RegApplicate}"
  DeleteRegKey /ifempty HKLM "Software\Thinga"
SectionEnd

--

Отправлено: 02:27, 25-10-2011 | #1811