PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 [102] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

wolkow70
17-12-2011, 17:35
конвертировать в формат UTF8, т.е с таким форматом хранит Opera свои настройки »

Там приведено три типа комманд:
unicode::FileAnsi2Unicode "Input" "Output" Type
unicode::FileUnicode2UTF8 "Input" "Output" Type
unicode::FileUnicode2Ansi "Input" "Output" Type

То есть будет так?

unicode::FileAnsi2Unicode "Input" "Output" Type
unicode::FileUnicode2UTF8 "Input" "Output" Type

Конкретено что должно быть прописано в "Input" "Output" Type? Путь к файлу?
Примерно так?
unicode::FileAnsi2Unicode "$APPDATA\Opera\Opera\operaprefs.ini" "$APPDATA\Opera\Opera\operaprefs.ini" Unicode
unicode::FileUnicode2UTF8 "$APPDATA\Opera\Opera\operaprefs.ini" "$APPDATA\Opera\Opera\operaprefs.ini" UTF8

Так не работает.

kotkovets
17-12-2011, 17:54
wolkow70,

unicode::FileAnsi2Unicode "$APPDATA\Opera\Opera\operaprefs.ini" "$APPDATA\Opera\Opera\operaprefs.ini" "UTF-8"
Pop $3
DetailPrint $3
Если $3=0, то успешно

wolkow70
17-12-2011, 18:06
Работает.

[User Prefs]
Download Directory={Home}Мои документы
[Saved Settings]
Save Dir={Home}Мои документы

wolkow70
17-12-2011, 18:39
kotkovets,
А возможно создать титульные строки ini файла?

Opera Preferences version 2.1
; Do not edit this file while Opera is running
; This file is stored in UTF-8 encoding

kotkovets
17-12-2011, 18:59
А возможно создать титульные строки ini файла? »
Через WriteIniStr - нет!
А так можно:
Fileopen $0 "user.ini" a
FileWrite $0 '\
;Opera Preferences version 2.1$\r$\n\
;Do not edit this file while Opera is running$\r$\n\
;This file is stored in UTF-8 encoding$\r$\n$\r$\n$\r$\n\
[User Prefs]$\r$\n\
Download Directory={Home}Мои документы$\r$\n\
[Saved Settings]$\r$\n\
Save Dir={Home}Мои документы$\r$\n'
FileClose $0

diakov
18-12-2011, 20:57
Доброго времени суток! Уважаемые гуру, подскажите пожалуйста как реализовать такое
http://s017.radikal.ru/i430/1112/2b/08ccd55a4369.png

Выбор типа установки/распаковки когда выбрана распаковка портабла чекбоксы неактивны, и при выборе одного из радиобутонов изображение справа меняется!

Собственно сам ехе-шник DepositFiles.com (http://depositfiles.com/files/9wiudfouu)

Желательно пример скрипта! Благодарствую!

kotkovets
19-12-2011, 03:00
Выбор типа установки/распаковки когда выбрана распаковка портабла чекбоксы неактивны, и при выборе одного из радиобутонов изображение справа меняется! »
Читайте NSIS\Docs\nsDialogs\Readme.html там все расписано с примерами, ничего нестандартного в скрипте нет,
я потратил на создание скрипта 20 минут и +10 минут на чтение доков. Во общем пример для всех.
!include "MUI2.nsh"
ShowInstDetails show
OutFile "Nstest.exe"

var dlg
var Label
var Check
var Check1
var CheckBox
var CheckBox1
var Radio
var Radio1
var RadioButton
var RadioButton1
var ImageHandle
var Image

!insertmacro MUI_PAGE_WELCOME
Page custom PageInit PageDestroy
!insertmacro MUI_PAGE_INSTFILES
;!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"

Function .onInit
InitPluginsDir ;иницилизируем рабочую папку, куда будут распакованы картинки
File "/oname=$PLUGINSDIR\nsis-r.bmp" "${NSISDIR}\Contrib\Graphics\Header\nsis-r.bmp"
File "/oname=$PLUGINSDIR\orange-r.bmp" "${NSISDIR}\Contrib\Graphics\Header\orange-r.bmp"
FunctionEnd

Function PageInit
!insertmacro MUI_HEADER_TEXT "О-па" "Вот оно как МИхалыч!"
nsDialogs::Create 1018
Pop $dlg
${NSD_CreateLabel} 0u 0u 120u 12u "Пожалуйста, сделайте выбор:"
Pop $Label
;;
${NSD_CreateRadioButton} 0u 14u 120u 12u "Установка обычной версии"
Pop $RadioButton
${NSD_SetState} $RadioButton 1 ;делаем радиобутон отмеченным
${NSD_OnClick} $RadioButton RadioButton ;событие отметки радиобутона
;;
${NSD_CreateRadioButton} 0u 28u 150u 12u "Распаковка портативной версии"
Pop $RadioButton1
${NSD_OnClick} $RadioButton1 RadioButton1 ;событие отметки радиобутона
;;
${NSD_CreateCheckBox} 0u 100u 120u 12u "Ярлык(и) на рабочем столе"
Pop $CheckBox
${NSD_SetState} $CheckBox 1
;;
${NSD_CreateCheckBox} 0u 115u 100u 12u "Ярлыки в меню «Пуск»"
Pop $CheckBox1
${NSD_SetState} $CheckBox1 1
;;;;;;;;
${NSD_CreateBitmap} 190u 0 100% 100% "" ;создаем контрол для картинок
Pop $Image
${NSD_SetImage} $Image "$PLUGINSDIR\nsis-r.bmp" $ImageHandle ;загружаем картинку
nsDialogs::Show
${NSD_FreeImage} $ImageHandle ;удаляем картинку
FunctionEnd

Function switching
${NSD_GetState} $RadioButton $Radio ;снимаем статус отметки радиобуттона
${If} $Radio == 1 ;если радибуттон "Установка обычной версии" отмеченный то...
EnableWindow $CheckBox 1
EnableWindow $CheckBox1 1
${NSD_SetState} $CheckBox 1
${NSD_SetState} $CheckBox1 1
${NSD_FreeImage} $ImageHandle ;удаляем картинку
${NSD_SetImage} $Image "$PLUGINSDIR\nsis-r.bmp" $ImageHandle ;загружаем картинку
${Else} ;если радибуттон "Установка обычной версии" неотмеченный то...
EnableWindow $CheckBox 0 ;затеняем чекбокс
EnableWindow $CheckBox1 0 ;затеняем чекбокс
${NSD_SetState} $CheckBox 0 ;делаем чекбокс неотмеченным
${NSD_SetState} $CheckBox1 0 ;делаем чекбокс неотмеченным
${NSD_FreeImage} $ImageHandle ;удаляем картинку
${NSD_SetImage} $Image "$PLUGINSDIR\orange-r.bmp" $ImageHandle ;загружаем картинку
${EndIf}
FunctionEnd
;функции события отметки радиобуттонов
Function RadioButton
Pop $RadioButton
Call switching
FunctionEnd
Function RadioButton1
Pop $RadioButton1
Call switching
FunctionEnd

Function PageDestroy
;функция которая выполняется при закрытии кастомной станички
;снимаем статусы отметок радиобуттонов и чекбоксов
${NSD_GetState} $RadioButton $Radio
${NSD_GetState} $RadioButton1 $Radio1
${NSD_GetState} $CheckBox $Check
${NSD_GetState} $CheckBox1 $Check1
FunctionEnd

Section "-Обычная установка"
${If} $Radio == 1

;;;
;тут пишем все команды при обычной установке
DetailPrint "Обычная установка"
;;;

${EndIf}
SectionEnd

Section "-Распаковка портативной версии"
${If} $Radio1 == 1

;;;
;тут пишем все команды при распаковки портативной версии
DetailPrint "Распаковка портативной версии"
;;;

${EndIf}
SectionEnd

Section "-Ярлыки"
${If} $Check == 1

;;;
DetailPrint "Ярлык на рабочий стол"
;;;

${EndIf}
${If} $Check1 == 1

;;;
DetailPrint "Ярлык в меню Пуск"
;;;

${EndIf}
SectionEnd

wolkow70
19-12-2011, 09:53
kotkovets,

Нужен совет:

Реализую резервное копирование настроек:
Function .onInit
SetShellVarContext current
SetOutPath "$APPDATA"
IfFileExists "$APPDATA\Opera\Opera\*.ini" 0 no_backup
MessageBox MB_YESNOCANCEL|MB_USERICON|MB_TOPMOST "ВНИМАНИЕ!$\n\
$\nВ папке с профилем текущего Пользователя программы обнаружены файлы настроек предыдущей установки Opera. \
$\nПри нажатии кнопки 'Yes' будет выполнено резервное копирование файлов Opera в каталог $DOCUMENTS\Opera Backup. \
$\nПри нажатии кнопки 'No' будет выполнена чистая установка. Все данные предыдущей установки Opera будут уничтожены без сохранения резервных копий. \
$\nПри нажатии кнопки 'Cancel' установка Opera будет отменена. \
$\nВыполнить резервное копирование файлов Opera для их дальнейшего использования ?" /SD IDYES IDNO no_backup IDCANCEL cancel
;
CreateDirectory "$DOCUMENTS\Opera Backup\AppData\Opera"
;
CopyFiles /silent "$APPDATA\Opera\Opera\*.ini" "$DOCUMENTS\Opera Backup\AppData\Opera"
CopyFiles /silent "$APPDATA\Opera\Opera\*.adr" "$DOCUMENTS\Opera Backup\AppData\Opera"
CopyFiles /silent "$APPDATA\Opera\Opera\*.dat" "$DOCUMENTS\Opera Backup\AppData\Opera"
CopyFiles /silent "$APPDATA\Opera\Opera\*.xml" "$DOCUMENTS\Opera Backup\AppData\Opera"
CopyFiles /silent "$APPDATA\Opera\Opera\*.js" "$DOCUMENTS\Opera Backup\AppData\Opera"
goto no_backup
cancel:
Abort
no_backup:
FunctionEnd

В данном случае поиск настроек реализуется по файлам с расширением Ini. Хочу сделать проверку по нескольким расширением с логикой "Или". То есть если есть файлы с расширением ini adr dat xml js, или папки с определенными названиеями (menu), то вывод сообщения.
Еще в функции копирования можно ли объединить файлы с искомыми расширениями в одну комманду?

diakov
19-12-2011, 10:26
Большое спасибо kotkovets опробую и отпишусь обезательно :)

kotkovets
19-12-2011, 10:45
Еще в функции копирования можно ли объединить файлы с искомыми расширениями в одну комманду? »
Да незачем такие проверки делать - излишне, достаточно проверку сделать,
что бы искомая папка не была пуста
${If} ${FileExists} "$APPDATA\Opera"
System::Call "Shlwapi::PathIsDirectoryEmpty(t'$APPDATA\Opera')i.R0"
${AndIf} $R0 != 1
;${AndIf} ${FileExists} "$APPDATA\Opera\Opera\*.ini ;если есть ini
CopyFiles /silent "$APPDATA\Opera" "$DOCUMENTS\Opera Backup\AppData\Opera"
${EndIf}
${AndIf} - логика И
${OrIf} - логика ИЛИ

wolkow70
19-12-2011, 11:05
Да незачем такие проверки делать - излишне, достаточно проверку сделать,
что бы искомая папка не была пуста »
Весь профиль копировать не хочется, там лишнего много. Мне нужны копии файлов определенных расширений и несколько нужных папок.
Здесь можно прописать?
${If} ${FileExists} "$APPDATA\Opera"
System::Call "Shlwapi::PathIsDirectoryEmpty(t'$APPDATA\Opera')i.R0"
${AndIf} $R0 != 1
${AndIf} ${FileExists} "$APPDATA\Opera\Opera\*.ini"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.adr"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.xml"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.js"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.dat"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\menu"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\toolbar"
MessageBox MB_YESNOCANCEL|MB_USERICON|MB_TOPMOST "ВНИМАНИЕ!$\n\....

CopyFiles /silent.....

kotkovets
19-12-2011, 11:23
Пробуйте так, но различные указанные расширения, одной командой копирования невозможно по логике вещей.
${If} ${FileExists} "$APPDATA\Opera"
System::Call "Shlwapi::PathIsDirectoryEmpty(t'$APPDATA\Opera')i.R0"
${AndIf} $R0 != 1
${AndIf} ${FileExists} "$APPDATA\Opera\Opera\*.ini"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.adr"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.xml"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.js"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\*.dat"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\menu"
${OrIf} ${FileExists} "$APPDATA\Opera\Opera\toolbar"
MessageBox MB_YESNOCANCEL|MB_USERICON|MB_TOPMOST "ВНИМАНИЕ!$\n\
$\nВ папке с профилем текущего Пользователя программы обнаружены файлы настроек предыдущей установки Opera. \
$\nПри нажатии кнопки 'Yes' будет выполнено резервное копирование файлов Opera в каталог $DOCUMENTS\Opera Backup. \
$\nПри нажатии кнопки 'No' будет выполнена чистая установка. Все данные предыдущей установки Opera будут уничтожены без сохранения резервных копий. \
$\nПри нажатии кнопки 'Cancel' установка Opera будет отменена. \
$\nВыполнить резервное копирование файлов Opera для их дальнейшего использования ?" /SD IDYES IDNO no_backup IDCANCEL cancel
;;;
CopyFiles /silent.....
;;;
Goto no_backup
cancel:
Abort
no_backup:
${EndIf}

Krinkels
19-12-2011, 11:29
kotkovets
Хорошее число сообщений: Сообщения: 666 :)

kotkovets
19-12-2011, 11:31
Хорошее число сообщений: »
Скорее бы отписаться...ФУ

wolkow70
19-12-2011, 11:47
Пробуйте так, но различные указанные расширения, одной командой копирования невозможно по логике вещей. »

Ну с копированием ладно, а в поиске? Дело в том, что мне нужно сохранить переход по метке
no_backup , если искомое отсутствует, что бы не выводилось MB.

Я думал можно как-то так сделать
IfFileExists "$APPDATA\Opera\Opera\*.ini *.adr *.xml *.dat " 0 no_backup

В логическую конструкцию нельзя переход по метке встроить?

wolkow70
19-12-2011, 12:03
Попробовал, так не пашет.
IfFileExists "$APPDATA\Opera\Opera\*.ini *.adr *.xml *.dat" 0 no_backup

wolkow70
19-12-2011, 15:22
kotkovets,

Пошел по сложному пути и сделал так для двух типов установки (многопользовательской и однопользовательской):

Function .onInit
SetShellVarContext current
;
IfFileExists "$APPDATA\Opera\Opera\*.ini" message_01 0
IfFileExists "$APPDATA\Opera\Opera\*.adr" message_01 0
IfFileExists "$APPDATA\Opera\Opera\*.xml" message_01 0
IfFileExists "$APPDATA\Opera\Opera\*.dat" message_01 0
IfFileExists "$APPDATA\Opera\Opera\*.js" message_01 0
IfFileExists "$APPDATA\Opera\Opera\sessions" message_01 0
IfFileExists "$APPDATA\Opera\Opera\toolbar" message_01 0
IfFileExists "$APPDATA\Opera\Opera\menu" message_01 0
IfFileExists "$APPDATA\Opera\Opera\user_jscript" message_01 0
IfFileExists "$APPDATA\Opera\Opera\skin" message_01 0
IfFileExists "$APPDATA\Opera\Opera\keyboard" message_01 0
IfFileExists "$APPDATA\Opera\Opera\mouse" message_01 0
; SetOutPath "$LOCALAPPDATA"
IfFileExists "$LOCALAPPDATA\Opera\Opera\mail" message_01 0
IfFileExists "$LOCALAPPDATA\Opera\Opera\cache" message_01 0
goto check_programdir
message_01:
MessageBox MB_YESNOCANCEL|MB_USERICON|MB_TOPMOST "ВНИМАНИЕ!$\n\
$\nВ профиле текущего Пользователя обнаружены папка, содержащая файлы настроек предыдущей установки Opera. \
$\nПри нажатии кнопки 'Yes' будет выполнено резервное копирование файлов Opera в каталог $DOCUMENTS\Opera Backup. \
$\nПри нажатии кнопки 'No' будет выполнена установка без сохранения резервных копий. Все данные предыдущей установки Opera будут уничтожены . \
$\nПри нажатии кнопки 'Cancel' установка Opera будет отменена. \
$\nВыполнить резервное копирование файлов Opera для их дальнейшего использования ?" /SD IDYES IDNO no_backup IDCANCEL cancel
;
CreateDirectory "$DOCUMENTS\Opera Backup\AppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\LocalAppData\Opera"
;
IfFileExists "$APPDATA\Opera\Opera\*.ini" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\*.ini" "$DOCUMENTS\Opera Backup\AppData\Opera"
IfFileExists "$APPDATA\Opera\Opera\*.adr" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\*.adr" "$DOCUMENTS\Opera Backup\AppData\Opera"
IfFileExists "$APPDATA\Opera\Opera\*.dat" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\*.dat" "$DOCUMENTS\Opera Backup\AppData\Opera"
IfFileExists "$APPDATA\Opera\Opera\*.xml" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\*.xml" "$DOCUMENTS\Opera Backup\AppData\Opera"
IfFileExists "$APPDATA\Opera\Opera\*.js" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\*.js" "$DOCUMENTS\Opera Backup\AppData\Opera"
IfFileExists "$APPDATA\Opera\Opera\sessions" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\sessions" "$DOCUMENTS\Opera Backup\AppData\Opera\sessions"
IfFileExists "$APPDATA\Opera\Opera\toolbar" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\toolbar" "$DOCUMENTS\Opera Backup\AppData\Opera\toolbar"
IfFileExists "$APPDATA\Opera\Opera\menu" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\menu" "$DOCUMENTS\Opera Backup\AppData\Opera\menu"
IfFileExists "$APPDATA\Opera\Opera\user_jscript" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\user_jscript" "$DOCUMENTS\Opera Backup\AppData\Opera\user_jscript"
IfFileExists "$APPDATA\Opera\Opera\skin" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\skin" "$DOCUMENTS\Opera Backup\AppData\Opera\skin"
IfFileExists "$APPDATA\Opera\Opera\keyboard" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\keyboard" "$DOCUMENTS\Opera Backup\AppData\Opera\keyboard"
IfFileExists "$APPDATA\Opera\Opera\mouse" 0 +2
CopyFiles /silent "$APPDATA\Opera\Opera\mouse" "$DOCUMENTS\Opera Backup\AppData\Opera\mouse"
;
IfFileExists "$LOCALAPPDATA\Opera\Opera\mail" 0 +2
CopyFiles /silent "$LOCALAPPDATA\Opera\Opera\mail" "$DOCUMENTS\Opera Backup\LocalAppData\Opera\mail"
IfFileExists "$LOCALAPPDATA\Opera\Opera\cache" 0 +2
CopyFiles /silent "$LOCALAPPDATA\Opera\Opera\cache" "$DOCUMENTS\Opera Backup\LocalAppData\Opera\cache"
;
goto check_programdir
check_programdir:
SetShellVarContext all
SetOutPath "$INSTDIR"
IfFileExists "$INSTDIR\Profile\*.ini" message_02 0
IfFileExists "$INSTDIR\Profile\*.adr" message_02 0
IfFileExists "$INSTDIR\Profile\*.xml" message_02 0
IfFileExists "$INSTDIR\Profile\*.dat" message_02 0
IfFileExists "$INSTDIR\Profile\*.js" message_02 0
IfFileExists "$INSTDIR\Profile\sessions" message_02 0
IfFileExists "$INSTDIR\Profile\toolbar" message_02 0
IfFileExists "$INSTDIR\Profile\menu" message_02 0
IfFileExists "$INSTDIR\Profile\user_jscript" message_02 0
IfFileExists "$INSTDIR\Profile\skin" message_02 0
IfFileExists "$INSTDIR\Profile\keyboard" message_02 0
IfFileExists "$INSTDIR\Profile\mouse" message_02 0
IfFileExists "$INSTDIR\Profile\mail" message_02 0
IfFileExists "$INSTDIR\Profile\cache" message_02 0
goto no_backup
message_02:
MessageBox MB_YESNOCANCEL|MB_USERICON|MB_TOPMOST "ВНИМАНИЕ!$\n\
$\nВ директории назначения обнаружена папка с профилем программы, содержащая файлы настроек предыдущей установки Opera. \
$\nПри нажатии кнопки 'Yes' будет выполнено резервное копирование файлов Opera в каталог $DOCUMENTS\Opera Backup. \
$\nПри нажатии кнопки 'No' будет выполнена установка без сохранения резервных копий. Все данные предыдущей установки Opera будут уничтожены . \
$\nПри нажатии кнопки 'Cancel' установка Opera будет отменена. \
$\nВыполнить резервное копирование файлов Opera для их дальнейшего использования ?" /SD IDYES IDNO no_backup IDCANCEL cancel
;
CreateDirectory "$DOCUMENTS\Opera Backup\Opera\profile"
;
IfFileExists "$INSTDIR\Profile\*.ini" 0 +2
CopyFiles /silent "$INSTDIR\Profile\*.ini" "$DOCUMENTS\Opera Backup\Opera\profile"
IfFileExists "$INSTDIR\Profile\*.adr" 0 +2
CopyFiles /silent "$INSTDIR\Profile\*.adr" "$DOCUMENTS\Opera Backup\Opera\profile"
IfFileExists "$INSTDIR\Profile\*.dat" 0 +2
CopyFiles /silent "$INSTDIR\Profile\*.dat" "$DOCUMENTS\Opera Backup\Opera\profile"
IfFileExists "$INSTDIR\Profile\*.xml" 0 +2
CopyFiles /silent "$INSTDIR\Profile\*.xml" "$DOCUMENTS\Opera Backup\Opera\profile"
IfFileExists "$INSTDIR\Profile\*.js" 0 +2
CopyFiles /silent "$INSTDIR\Profile\*.js" "$DOCUMENTS\Opera Backup\Opera\profile"
IfFileExists "$INSTDIR\Profile\sessions" 0 +2
CopyFiles /silent "$INSTDIR\Profile\sessions" "$DOCUMENTS\Opera Backup\Opera\profile\sessions"
IfFileExists "$INSTDIR\Profile\toolbar" 0 +2
CopyFiles /silent "$INSTDIR\Profile\toolbar" "$DOCUMENTS\Opera Backup\Opera\profile\toolbar"
IfFileExists "$INSTDIR\Profile\menu" 0 +2
CopyFiles /silent "$INSTDIR\Profile\menu" "$DOCUMENTS\Opera Backup\Opera\profile\menu"
IfFileExists "$INSTDIR\Profile\user_jscript" 0 +2
CopyFiles /silent "$INSTDIR\Profile\user_jscript" "$DOCUMENTS\Opera Backup\Opera\profile\user_jscript"
IfFileExists "$INSTDIR\Profile\skin" 0 +2
CopyFiles /silent "$INSTDIR\Profile\skin" "$DOCUMENTS\Opera Backup\Opera\profile\skin"
IfFileExists "$INSTDIR\Profile\keyboard" 0 +2
CopyFiles /silent "$INSTDIR\Profile\keyboard" "$DOCUMENTS\Opera Backup\Opera\profile\keyboard"
IfFileExists "$INSTDIR\Profile\mouse" 0 +2
CopyFiles /silent "$INSTDIR\Profile\mouse" "$DOCUMENTS\Opera Backup\Opera\profile\mouse"
IfFileExists "$INSTDIR\Profile\mail" 0 +2
CopyFiles /silent "$INSTDIR\Profile\mail" "$DOCUMENTS\Opera Backup\Opera\profile\mail"
IfFileExists "$INSTDIR\Profile\cache" 0 +2
CopyFiles /silent "$INSTDIR\Profile\cache" "$DOCUMENTS\Opera Backup\Opera\profile\cache"
goto no_backup
cancel:
Abort
no_backup:
FunctionEnd

kotkovets
19-12-2011, 16:36
wolkow70, Слишком сложно и много лишнего...
А если у меня будет профиль в папке программы и профиль в $APPDATA и $LOCALAPPDATA ???

wolkow70
19-12-2011, 16:58
А если у меня будет профиль в папке программы и профиль в $APPDATA и $LOCALAPPDATA ??? »
Такая ситуация в функции предусмотрена не смотря на всю ее невероятность.
goto check_programdir
check_programdir:
После проверки и копирования профиля в $APPDATA и $LOCALAPPDATA в "Мои документы" функция переходит в программную папку и резервирует папку profile, если в ней есть нужные файлы в "Общие документы".
Я гипотетически исходил из того, что такое может у кого-то случится.
В контексте всего скрипта эта функция не кажется сложной или содержащей что-то лишнее. Всего лишь маленькая часть.

kotkovets
19-12-2011, 17:17
wolkow70,
CreateDirectory "$DOCUMENTS\Opera Backup\AppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\LocalAppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\Opera\profile"

Излишне, команда Copy сама создаст нужные каталоги.




© OSzone.net 2001-2012