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

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

Аватара для Flix

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


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

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


Цитата Kopejkin:
Но.. не работает. »
Kopejkin, озвученная вами проблема все таки имеет место на системах Windows 8/8.1. Установил на виртуалку второй системой Windows 8.1 64-бит. Запустил инсталлятор и... ярлыка деинсталляции на экране "Приложения" не обнаружил. Начал разбираться и выяснил вот что. Ярлык к файлу деинсталляции исправно создается, но Windows по неясным причинам, примерно через 10-15 секунд по завершении установки, в свойствах ярлыка самовольно меняет рабочий каталог файла деинсталляции. Первоначально там указан верный каталог, как и создал его инсталлятор (С:\Programs Files\...) но по истечении указанного промежутка времени путь волшебным образом меняется на С:\Programs Files (x86)\... В чем причина такого поведения системы - не знаю. Но побороть это можно установкой для файла ярлыка атрибута "только для чтения". Тогда Windows ничего не сможет сделать с ярлыком и он будет исправно отображаться на экране "Приложений". Вот сценарий, в котором добавлены соответствующие команды:
читать дальше »
Код: Выделить весь код
########## ПРИМЕР ##############

!define PRODUCT_NAME "FolderSizes 7"
!define PRODUCT_VERSION ".0.56"
!define BRANDING "PUPKIN"

SetCompressor /SOLID lzma

!include MUI.nsh
!include x64.nsh       ; поддержка 64-бит систем
!include Logiclib.nsh  ; расширенная поддержка логики

!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "Russian"

Name "${PRODUCT_NAME}"
Caption "Установка русификатора ${PRODUCT_NAME}${PRODUCT_VERSION}"
UninstallCaption "Удаление русификатора ${PRODUCT_NAME}${PRODUCT_VERSION}"
OutFile "rus.${PRODUCT_NAME}${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\Key Metric Software\${PRODUCT_NAME}\"
RequestExecutionLevel admin
ShowInstDetails show
ShowUninstDetails show
BrandingText "${BRANDING}"

Function .onInit
  ${If} ${RunningX64}
     SetRegView 64
     StrCpy $INSTDIR "$PROGRAMFILES64\Key Metric Software\${PRODUCT_NAME}\"
  ${Else}
     MessageBox MB_OK|MB_ICONSTOP "Только для х64!" IDOK
     Quit
  ${EndIf}
FunctionEnd

Function un.onInit
  ${If} ${RunningX64}
     SetRegView 64
  ${EndIf}
FunctionEnd 

Section "-MainSection"

  SetOutPath "$INSTDIR"
  File /r "1.txt"
  WriteUninstaller "$INSTDIR\unrus.exe"
  ; блок Установка/Удаление программм
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "DisplayName" "${PRODUCT_NAME}${PRODUCT_VERSION}. Удалить русификатор"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "UninstallString" "$INSTDIR\unrus.exe"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "DisplayVersion" "1.0"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "Publisher" "© Pupkin, 03/2014"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "DisplayIcon" "$INSTDIR\unrus.exe"
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "NoModify" 0x00000001
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus" "NoRepair" 0x00000001

  SetShellVarContext all
  ; Ярлыки в меню Пуск - Программы
  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  ; в Win8 этот ярлык виден в ПРИЛОЖЕНИЯХ в ЛЮБОМ случае
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Открыть 1.txt.lnk" "$INSTDIR\1.txt" 
  ; в Win8 этот ярлык виден в ПРИЛОЖЕНИЯХ только при "ОТКЛЮЧЕНИИ" блока "Установка/Удаление"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить русификатор ${PRODUCT_NAME}.lnk" "$INSTDIR\unrus.exe"

  ; Устанавливаем для ярлыка атрибут "только для чтения"
  SetFileAttributes "$SMPROGRAMS\${PRODUCT_NAME}\Удалить русификатор ${PRODUCT_NAME}.lnk" READONLY

  SetAutoClose false
SectionEnd

Section Uninstall
  Delete "$INSTDIR\1.txt"

  ; Снимаем с файла ярлыка атрибут "только для чтения", чтобы его можно было удалить
  SetFileAttributes "$SMPROGRAMS\${PRODUCT_NAME}\Удалить русификатор ${PRODUCT_NAME}.lnk" NORMAL

  SetShellVarContext all
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Открыть 1.txt.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Удалить русификатор ${PRODUCT_NAME}.lnk"
  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}rus"
  delete "$INSTDIR\unrus.exe"
  SetAutoClose false
SectionEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:08, 25-03-2014 | #1107