Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Lex_from_Belarus
11-02-2013, 20:42
Честно говоря вообще не понятно, что вы хотите сделать? Два uninstall ? или один но который не все подчищает за собой? »
хочется один uninstall, который может удалять как и устанавливать с выбором компонентов. какие-то удалил, какие-то установил.
Отчего же ? Ты ведь уже потрудился , прописывая установку 20 компонентов.
Используй !insertmacro MUI_UNPAGE_COMPONENTS и пропиши всё что пожелаешь для выбора при удалении ,
на основании предварительной проверки уже установленных компонентов... (А это всего - по 3-4 строки кода для проверки наличия каждого компонента - есть ли такой то файл или ключ и если нет, то сделать недоступным чекбокс отсутствующего компонента... )
Вредный совет : А, если лень, то можно и без проверки, укажи все 20 - обычно ошибки при этом не бывает, хотя так будет бестолково и не правильно...
По моему , так гораздо проще и быстрее, чем возиться с логом... »
да я над этим вариантом думал, но файлов больно много, а иногда они меняются, а это сверять каждый файл нужно :(
andryz80
12-02-2013, 01:16
блин папка не удаляется и файлы не ассоциируется
может мне весь код выложить?
вот весь код. вот что я делаю не так? ассоциации нет и папка не удаляется.
при том все из папки удаляется а она сама нет
!define PRODUCT_NAME "Sprint Layout"
!define PRODUCT_VERSION "6.0"
!define PRODUCT_PUBLISHER "Abacom"
!define PRODUCT_WEB_SITE "http://www.abacom-online.de"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Layout60.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "x64.nsh"
Function .onInit
${If} ${RunningX64}
SetRegView 32
${EndIf}
FunctionEnd
Section -Associations
WriteRegStr HKLM "SOFTWARE\Classes\.lay" "" "Layout.File.6_0"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6" "" "???????? ???????? ????"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\DefaultIcon" "" "$INSTDIR\lay.ico"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\shell" "" "open"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\shell\Open\command" "" "$\"$INSTDIR\layout60.exe$\" $\"%1$\""
WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\EXTENSIONS" "lay" "$\"$\"$INSTDIR\layout60.exe$\" ^.lay$\""
SectionEnd
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "C:\Инсталятор sprint layout\SprintLayout\icons.ico"
!define MUI_UNICON "C:\Инсталятор sprint layout\SprintLayout\Delete_win7.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "C:\Инсталятор sprint layout\SprintLayout\license.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\Layout60.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Sprint Layout 6.0 setup.exe"
InstallDir "$PROGRAMFILES\Sprint Layout"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "C:\Инсталятор sprint layout\SprintLayout\Layout60.exe"
CreateDirectory "$SMPROGRAMS\Sprint Layout 6"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Sprint Layout.lnk" "$INSTDIR\Layout60.exe"
CreateShortCut "$DESKTOP\Sprint Layout.lnk" "$INSTDIR\Layout60.exe"
File "C:\Инсталятор sprint layout\SprintLayout\LAYOUT60.INI"
File "C:\Инсталятор sprint layout\SprintLayout\Sprint-Layout60.chm"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Help.lnk" "$INSTDIR\Sprint-Layout60.chm"
File "C:\Инсталятор sprint layout\SprintLayout\titel.bmp"
File /r "C:\Инсталятор sprint layout\SprintLayout\Makros"
SectionEnd
Section -AdditionalIcons
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Layout60.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Layout60.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Поздравляем программа $(^Name) успешно удалена."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd
Section Uninstall
SetShellVarContext all
и еще как ассоциацию потом удалять то при деинсталляции?
andryz80, если уж собирались выкладывать весь код, то и выкладывайте весь, а не кусок.
andryz80,
Вот сейчас установил прогу на комп с XP. Запустил отдельно файлик ассоциирования с .lay. Всё ОК.
Могу лишь предложить, добавить ещё пользовательские ключи (у меня на этом компе нет пользователей) :
для XP
WriteRegStr HKCU "Software\Classes\Applications\layout 6.0.exe" "" ""
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lay\OpenWithProgids" "" ""
WriteRegStr HKCU "Software\Classes\Applications\layout 6.0.exe\shell\open\command" "" "$\"$INSTDIR\layout 6.0.exe$\" $\"%1$\""
для W7 +
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lay\UserChoice" "ProgId" "Layout.File.6"
Для работы под пользователем это важно и про это уже говорилось.
Для удаления своей неубиваемой папки, попробуй добавить ключ перезагрузки - ( будет так : RMDir /r /REBOOTOK "$SMPROGRAMS\Sprint Layout 6" )
После анинсталла перезагрузись и проверь удаление папки. Если и это не поможет, то придётся позвать батюшку и освятить твой скрипт... :)
andryz80
12-02-2013, 12:14
Прощу прощения я не заметил, что код не весь вот вроде весь
под XP на виртуалке я пробовал и все работает как надо а вот под семеркой все проблемы вылезают.
!define PRODUCT_NAME "Sprint Layout"
!define PRODUCT_VERSION "6.0"
!define PRODUCT_PUBLISHER "Abacom"
!define PRODUCT_WEB_SITE "http://www.abacom-online.de"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Layout60.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "x64.nsh"
Function .onInit
${If} ${RunningX64}
SetRegView 32
${EndIf}
FunctionEnd
Section -Associations
WriteRegStr HKLM "SOFTWARE\Classes\.lay" "" "Layout.File.6_0"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6" "" "Редактор печатных плат"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\DefaultIcon" "" "$INSTDIR\lay.ico"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\shell" "" "open"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\shell\Open\command" "" "$\"$INSTDIR\Layout60.exe$\" $\"%1$\""
WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\EXTENSIONS" "lay" "$\"$\"$INSTDIR\Layout60.exe$\" ^.lay$\""
SectionEnd
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "C:\Инсталятор sprint layout\SprintLayout\icons.ico"
!define MUI_UNICON "C:\Инсталятор sprint layout\SprintLayout\Delete_win7.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "C:\Инсталятор sprint layout\SprintLayout\license.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\Layout60.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Sprint Layout 6.0 setup.exe"
InstallDir "$PROGRAMFILES\Sprint Layout"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "C:\Инсталятор sprint layout\SprintLayout\Layout60.exe"
CreateDirectory "$SMPROGRAMS\Sprint Layout 6"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Sprint Layout.lnk" "$INSTDIR\Layout60.exe"
CreateShortCut "$DESKTOP\Sprint Layout.lnk" "$INSTDIR\Layout60.exe"
File "C:\Инсталятор sprint layout\SprintLayout\LAYOUT60.INI"
File "C:\Инсталятор sprint layout\SprintLayout\Sprint-Layout60.chm"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Help.lnk" "$INSTDIR\Sprint-Layout60.chm"
File "C:\Инсталятор sprint layout\SprintLayout\titel.bmp"
File /r "C:\Инсталятор sprint layout\SprintLayout\Makros"
File "C:\Инсталятор sprint layout\SprintLayout\lay.ico"
SectionEnd
Section -AdditionalIcons
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\Sprint Layout 6\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Layout60.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Layout60.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Поздравляем программа $(^Name) успешно удалена."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd
Section Uninstall
SetShellVarContext all
RMDir /r "$SMPROGRAMS\Sprint Layout 6"
RMDir /r "$INSTDIR"
Delete "$DESKTOP\Sprint Layout.lnk"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
Да и кстати у меня на семерке один пользователь админ и UAC отключен
andryz80, Я конечно не специалист в ассоциациях, но на мой взгляд должно быть так для win7
WriteRegStr HKEY_CURRENT_USER "Software\Classes\.lay" "" "Layout.File.6"
WriteRegStr HKEY_CURRENT_USER "Software\Classes\Layout.File.6\shell\open\command" "" "$\"$INSTDIR\layout 6.0.exe$\" $\"%1$\""
Скрываваем в окне: опции-значки Minimize\Maximize (Свернуть\ Свернуть в окно. Это, которые в верхнем правом углу окна.)
!include MUI.nsh
OutFile "Remove MinimizeMaximize.exe"
Function myGUIInit
System::Call 'user32::GetWindowLong(i $hwndparent,i -16)i.r0'
intop $1 0x30000 ~
intop $0 $0 & $1
System::Call 'user32::SetWindowLong(i $hwndparent,i -16,i $0)i'
FunctionEnd
!define MUI_CUSTOMFUNCTION_GUIINIT myGUIInit
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section
SectionEnd
Lex_from_Belarus
12-02-2013, 21:46
подскажите а как правильно установить шрифт, я так понимаю прото установить в папку fonts недостаточно?
подскажите а как правильно установить шрифт, я так понимаю прото установить в папку fonts недостаточно? »
Недостаточно конечно. Тебе очевидно к первоисточник NSIS документации (http://nsis.sourceforge.net/Advanced_Font_Installation#The_Script).
Lex_from_Belarus
12-02-2013, 23:54
Недостаточно конечно. Тебе очевидно к первоисточник NSIS документации. »
а что делать с otf шрифтами?
там вроде только ttf и fon
а что делать с otf шрифтами?
там вроде только ttf и fon »
Честно говоря в тонкостях не разбирался. Думаю варианта два пробовать установить с теми макросами что есть (или для ttf или fon), если не получиться дописать тот хедер под установку otf. Может конечно есть еще варианты, но я не сталкивался с такой необходимостью.
andryz80
13-02-2013, 02:07
переписал заново и не помогло
под ХР работает все как надо а вот на семерке не удаляется папка
и еще почему то ярлык на рабочем столе а так же тот файл который ассоциирован не отображают иконку. просто как неизвестный файл и все но ассоциации работают
неуже ли меню пуск как то отличается на семерке от ХР?
;Sprint Layot 6.0
!define PRODUCT_NAME "Sprint Layout"
!define PRODUCT_VERSION "6.0"
!define PRODUCT_PUBLISHER "Abacom"
!define PRODUCT_WEB_SITE "http://www.abacom-online.de"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Layout60.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "x64.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "C:\Èíñòàëÿòîð sprint layout\SprintLayout\icons.ico"
!define MUI_UNICON "C:\Èíñòàëÿòîð sprint layout\SprintLayout\Delete_win7.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_RADIOBUTTONS
!insertmacro MUI_PAGE_LICENSE "C:\Èíñòàëÿòîð sprint layout\SprintLayout\License.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Start menu page
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Sprint Layout"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\Layout60.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setupSprintLayout.exe"
InstallDir "$PROGRAMFILES\Sprint Layout"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
;RequestExecutionLevel admin
Function .onInit
${If} ${RunningX64}
SetRegView 32
${EndIf}
FunctionEnd
Section
SetShellVarContext all
WriteRegStr HKLM "SOFTWARE\Classes\.lay" "" "Layout.File.6"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6" "" "ðåäàêòîð ïå÷àòíûõ ïëàò"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\DefaultIcon" "" "$INSTDIR\lay.ico"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\shell" "" "open"
WriteRegStr HKLM "SOFTWARE\Classes\Layout.File.6\shell\Open\command" "" "$\"$INSTDIR\Layout60.exe$\" $\"%1$\""
WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\EXTENSIONS" "lay" "$\"$\"$INSTDIR\Layout60.exe$\" ^.lay$\""
WriteRegStr HKEY_CURRENT_USER "Software\Classes\.lay" "" "Layout.File.6"
WriteRegStr HKEY_CURRENT_USER "Software\Classes\Layout.File.6\shell\open\command" "" "$\"$INSTDIR\Layout60.exe$\" $\"%1$\""
SectionEnd
Section "MainSection" SEC01
SetShellVarContext all
SetOutPath "$INSTDIR"
SetOverwrite on
File "C:\Èíñòàëÿòîð sprint layout\SprintLayout\Layout60.exe"
File "C:\Èíñòàëÿòîð sprint layout\SprintLayout\LAYOUT60.INI"
File "C:\Èíñòàëÿòîð sprint layout\SprintLayout\Sprint-Layout60.chm"
File "C:\Èíñòàëÿòîð sprint layout\SprintLayout\titel.bmp"
File /r "C:\Èíñòàëÿòîð sprint layout\SprintLayout\Makros"
; Shortcuts
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Sprint Layout.lnk" "$INSTDIR\Layout60.exe"
CreateShortCut "$DESKTOP\Sprint Layout.lnk" "$INSTDIR\Layout60.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Help.lnk" "$INSTDIR\Sprint-Layout60.chm"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
Section -AdditionalIcons
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Layout60.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Layout60.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Óäàëåíèå $(^Name) áûëî óñïåøíî çàâåðøåíî."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Âû óâåðåíû â òîì, ÷òî æåëàåòå óäàëèòü $(^Name) è âñå êîìïîíåíòû ïðîãðàììû?" IDYES +2
Abort
FunctionEnd
Section Uninstall
SetShellVarContext all
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
RMDir /r "$INSTDIR\Makros"
Delete "$INSTDIR\titel.bmp"
Delete "$INSTDIR\Sprint-Layout60.chm"
Delete "$INSTDIR\LAYOUT60.INI"
Delete "$INSTDIR\Layout60.exe"
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Help.lnk"
Delete "$DESKTOP\Sprint Layout.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Sprint Layout.lnk"
RMDir "$SMPROGRAMS\$ICONS_GROUP"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
andryz80, Скинь на какой нибудь файлообменник всю программу и скрипт, попробую помочь.
Lex_from_Belarus
13-02-2013, 09:34
Честно говоря в тонкостях не разбирался. Думаю варианта два пробовать установить с теми макросами что есть (или для ttf или fon), если не получиться дописать тот хедер под установку otf. Может конечно есть еще варианты, но я не сталкивался с такой необходимостью. »
так с регистрацией вроде всё ОК, но вот сами шрифты никак не копируются в папку Фонтс, с уверенностью почти в 100% могу предположить что не могу скопироваться из-за отстутствия прав, хотя учётка админская и в Вин8 с этим строго, даже когда просто файл копируешь на диск "С", постоянно подтверждение. Так вот как получить права полные для копирования?
как получить права полные для копирования? »
Можно использовать AccessControl plug-in
Можно с помощью команд, системных или спец утилит. (Как, уже было где то на форуме - поищи "Как получить доступ к файлу или папке" )
Lex_from_Belarus
13-02-2013, 09:41
Lex_from_Belarus,
Не знаю как в W8, а в W7 параметры совместимости устанавливаются в
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
Может попробовать перед запуском, сначала туда "прописывать" программу-установщик ? »
полсушайте, я или туплю и непрвильно что-то делаю или фигня происходит с добавлением в реестр в эту ветку тоже из-за прав
в секции делаю (хотя пробовал по разному):
Section
SectionIn 1
SetOutPath $INSTDIR
File /r "${pkgdir}"
WriteRegStr HKCU Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers "$INSTDIR\program.exe" "~WIN7RTM"
ExecWait "$INSTDIR\program.exe /S"
SectionEnd
Я тут правильно пишу?
с уверенностью почти в 100% могу предположить что не могу скопироваться из-за отстутствия прав, хотя учётка админская и в Вин8 с этим строго, даже когда просто файл копируешь на диск "С", постоянно подтверждение. Так вот как получить права полные для копирования? »
Если проблема только в этом, должно решаться так: дать инсталятору соответствующие права прописав в начале скрипта.
RequestExecutionLevel highest
или
RequestExecutionLevel admin
Считываем информацию со страницы PAGE_DIRECTORY о наличии свободного/необходимого объёма дискового пространства.
Скрываем отображение этой информацию на странице PAGE_DIRECTORY.
!include MUI.nsh
OutFile "GetWindowText-id.exe"
InstallDir "$TEMP"
Var RSPACE
Var ASPACE
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ShowDirectoryPage
!insertmacro MUI_PAGE_DIRECTORY
Function ShowDirectoryPage
;Считать информацию о наличии свободного/необходимого объёма дискового пространства
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $1 $0 1023 ; IDC_SPACEREQUIRED
System::Call 'User32::GetWindowText(i $1, t .R0, i 256)'
GetDlgItem $1 $0 1024 ; IDC_SPACEAVAILABLE
System::Call 'User32::GetWindowText(i $1, t .R1, i 256)'
StrCpy $RSPACE $R0
StrCpy $ASPACE $R1
;Скрыть отображение информации о наличии свободного/необходимого объёма дискового пространства
GetDlgItem $1 $0 1023 ; IDC_SPACEREQUIRED
System::Call 'user32.dll::ShowWindow(i, i) v($1, 0)'
GetDlgItem $1 $0 1024 ; IDC_SPACEAVAILABLE
System::Call 'user32.dll::ShowWindow(i, i) v($1, 0)'
FunctionEnd
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section
MessageBox MB_OK "$ASPACE"
MessageBox MB_OK "$RSPACE"
SetOutPath "$TEMP"
File "${NSISDIR}\makensisw.exe"
Delete "$TEMP\makensisw.exe"
SectionEnd
Добрый день!
С помощью NSIS создается деинсталлятор ко всему прочему.
Как сделать так, чтобы этот деинсталлятор пользователь запускал с правами администратора.
могу ли я внутри скрипта NSIS это прописать?
Может быть можно поставить на деинсталлятор атрибут запускать с правами администратора
Добрый день!
С помощью NSIS создается деинсталлятор ко всему прочему.
Как сделать так, чтобы этот деинсталлятор пользователь запускал с правами администратора.
могу ли я внутри скрипта NSIS это прописать? »
Двумя постами выше вашего вопроса это уже обсуждали. Прочитайте в справке значение атрибута RequestExecutionLevel.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.