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

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

Аватара для Oleg48

Старожил


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

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


kotkovets, попробЫвал эксперементировать с получением переменных, вроде все получилось только, переменная обьявленная как глобальная почему-то ее значение невидится в секции удаления и приходится их дублировать:
Код: Выделить весь код
...
;функция в которой определяется переменная пути установки
Function .onInit      
 Var /Global deliconAll     
 SetShellVarContext all      
 StrCpy $deliconAll "$SMPROGRAMS"  
FunctionEnd    

Section "MainSection" SEC01
...
;в этой секции значение переменной работает 
  CreateDirectory "$deliconAll\Total Commander"
  CreateShortCut "$deliconAll\Total Commander\Total Commander.lnk" "$INSTDIR\Totalcmd.exe"
...
SectionEnd

Section -AdditionalIcons
;в этой секции значение переменной тоже работает 
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateShortCut "$deliconAll\Total Commander\Web-сайт программы.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  CreateShortCut "$deliconAll\Total Commander\Удалить программу.lnk" "$INSTDIR\uninst.exe"
SectionEnd
...
Section Uninstall
...
;в этой секции переменная существует, но значение уже неизвестно, и приходится повторять код
  SetShellVarContext all
  StrCpy $deliconAll "$SMPROGRAMS"
  Delete "$deliconAll\Total Commander\Удалить программу.lnk"
  Delete "$deliconAll\Total Commander\Web-сайт программы.lnk"
  Delete "$deliconAll\Total Commander\Total Commander.lnk"
  RMDir "$deliconAll\Total Commander"
;опять же приходится дублировать код удаления ярлыков из другово места т.к. ставиться это на Windows7x64  
  SetShellVarContext current
  StrCpy $deliconAll "$SMPROGRAMS"
  Delete "$deliconAll\Total Commander\Удалить программу.lnk"
  Delete "$deliconAll\Total Commander\Web-сайт программы.lnk"
  Delete "$deliconAll\Total Commander\Total Commander.lnk"
  RMDir "$deliconAll\Total Commander"
...
SectionEnd
...
Подскажите пожалуйста, почему переменная в секции удаления теряет свое значения, и как избавиться от дублирования кода в этой секции?

Отправлено: 13:24, 24-09-2012 | #3172