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
18-07-2011, 17:41
1. А что мешает создать свою страничку с двумя радиобутонами? »

Я еще не освоил создание своих страничек. Да и не понял, зачем два радиобуттона?

2. И флаги выбора типа установки в этих секциях расставлять смысла нет, здесь выбор опциональный - захотел настройки в реестре или в ini файле. »

Не знал. Скомпилирую, посмотрю.

Дак, с одной страничкой не получится?

kotkovets
18-07-2011, 18:01
Я еще не освоил создание своих страничек »
Очень плохо, получаются весьма обалденные установщики
Дак, с одной страничкой не получится? »
получится, просто убрать SectionIn 1 2 3 в двух секциях выбора хранения настроек, здесь выбор опциональный

wolkow70
18-07-2011, 18:26
получится, просто убрать SectionIn 1 2 3 в двух секциях выбора хранения настроек, здесь выбор опциональный »
Убрал. Все равно при запуске получается так "По Выбору":

http://s47.radikal.ru/i118/1107/4f/55619653d24f.png

В ручную можно выбрать полный тип установки, но мне надо, что бы при запуске в окне выбора был полный тип установки.

kotkovets
18-07-2011, 19:16
wolkow70, Я же Вам говорил опционально, это радиобутоны - "флаги видят", что секция какая-то не отмечена, в первоначальном состоянии, естественно они не могут расставить галки, макрос RadioButton "мешает" - не надо здесь крутить велосипеды! Здесь лучше рисовать свою страничку однозначно...

sawe
18-07-2011, 21:53
Я еще не освоил создание своих страничек. Да и не понял, зачем два радиобуттона? »
Создание своих страничек, это очень полезная вещь!
Благодаря помощи kotkovets удалось сделать некую стилизацию под установщик WinHex 16.0 SR-6 (http://rghost.ru/14995061) со скинами, используя в основном nsDialog.

А этот TokPlayer 1.0.1135 x86 (http://rghost.ru/14989221) перевёл на русский язык, правда вышло не без казуса по поводу авторства.
Но самое интересное в том, что родной инсталлятор на корейском, вот тут-то пригодились заказные странички.
--

wolkow70
19-07-2011, 09:18
Создание своих страничек, это очень полезная вещь!
Благодаря помощи kotkovets удалось сделать некую стилизацию под установщик WinHex 16.0 SR-6 со скинами, используя в основном nsDialog. »
Красиво, но с ключом /S не ставится. Мне бы для WPI....



TokPlayer 1.0.1135 x86 поставил, а удалить не могу , зависает деинсталлятор. Ничего не удаляется, и ассоциации тоже в ручную удаляю.

http://i027.radikal.ru/1107/8e/33a3f8012b10.png

sawe
19-07-2011, 15:17
Красиво, но с ключом /S не ставится. Мне бы для WPI.... »
Я не использую тихую установку с ключём /S

Если только для WPI, то в большенстве случаев подойдёт 7zsfx (http://7zsfx.info/ru/)

wolkow70
19-07-2011, 17:28
Если только для WPI, то в большенстве случаев подойдёт 7zsfx »
1. Не только для WPI, но и для...
2. Я раньше и сидел на 7zsfx, но завязал с этим. В нем многое не реализуемо и убого.
3. Вы мне объясните куда программа прописывает регистрацию, я на NSIS сделаю инсталлятор с поддержкой /S. Чего-то я в реестре вообще не нашел ее записей.

sawe
19-07-2011, 21:12
TokPlayer 1.0.1135 x86 поставил, а удалить не могу , зависает деинсталлятор »
Прошу прощения, это я немного изменил под разные версии Windows, но не успел проверить, вот глюк и вылез.

Какая программа?
Проще скрипт с потрохами выложить, если интересно.

wolkow70
20-07-2011, 10:04
Какая программа? »
WinHex прописывает в реестр регистрацию?

sawe
20-07-2011, 14:59
WinHex прописывает в реестр регистрацию? »

Для того, что бы делать снимок реестра, и учитывая, что вы любите тихую установку, соберите сами Regshot silent.7z (http://rghost.ru/15185301).

Может поможет, ловите WinHex 16 SP6.7z (http://rghost.ru/15185491)

--

wolkow70
20-07-2011, 15:27
Для того, что бы делать снимок реестра, и учитывая, что вы любите тихую установку, соберите сами Regshot silent.7z.
Может поможет, ловите WinHex 16 SP6.7z »
Не могу скачать. На сервере "Ошибка 500"

sawe
20-07-2011, 15:48
Не могу скачать. На сервере "Ошибка 500" »

Перезалил на другой обменник

Regshot silent.7z (http://cometlight.ifolder.ru/24792272)

WinHex 16 SP6.7z (http://cometlight.ifolder.ru/24792472)

Кстати, появилось уже WinHex 16.1 + Rus (http://www.cwer.ru/node/233855/)

--

wolkow70
21-07-2011, 13:45
kotkovets,

Из Вашей справки

$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $R0 $R1 $R2 $R3 $R4 $R5 $R6 $R7 $R8 $R9

Эти переменные могут использоваться точно так же как и пользовательские переменные,
но обычно используются в общедоступных функциях или макроопределениях.
Объявлять эти переменные совершенно не нужно, вы не будете получать конфликтов по именам в скрипте. Используя эти переменные в скрипте, рекомендуется использовать стек для сохранения и восстановления их оригинальных значений, во избежании перезаписи другими командами и функциями, что может привести к непредсказуемым результатам.

По поводу использования стека можно краткие пояснения, а то в справке нет. И какое значение имеет буква R? Или можно любую букву использовать?

Еще вопросик:

В макросе регистрации ассоциаций прописал:

ReadRegStr $1 HKCR ".${extenstion}" ""
StrCmp $1 "" NoBackup
WriteRegStr HKCR ".${extenstion}" "foobar2000.backup" $1
NoBackup:
StrCpy $ClassName "foobar2000.${extenstion}"
WriteRegStr HKCR ".${extenstion}" "" "$ClassName"

Создание бэкапа при этом проходит нормально.

В макросе де-регистрации ассоциаций прописал:

StrCpy $ClassName "foobar2000.${extenstion}"

ReadRegStr $0 HKCR ".${extenstion}" ""
StrCmp $0 $ClassName 0 +2
DeleteRegKey HKCR "$ClassName"

ReadRegStr $0 HKCR ".${extenstion}" ""
StrCmp $0 $ClassName 0 +2
DeleteRegValue HKCR ".${extenstion}" ""

ReadRegStr $1 HKCR ".${extenstion}" "foobar2000.backup"
WriteRegStr HKCR ".${extenstion}" "" $1
DeleteRegValue HKCR ".${extenstion}" "foobar2000.backup"

Восстановление ассоциаций происходит нормально если нет других значений бэкапа. Но если есть еще другое значение (например Winamp.Backup), то прописывается его значение. Не пойму почему так может происходить? Ведь должно читаться значение именно "foobar2000.backup".

sawe
21-07-2011, 14:38
И какое значение имеет буква R? »

$R1-$R9 как местные регистры
$0-$9 как глобальные значения.

kotkovets
21-07-2011, 14:44
По поводу использования стека можно краткие пояснения, а то в справке нет »
Что такое стек? (http://ru.wikipedia.org/wiki/Стек)
можно любую букву использовать?»
Без объявления других переменных можно использовать стандардные 20 переменных - это возможность заложена в компиляторе NSIS

StrCpy $0 TEST ;помещаем в $0 -> TEST
MessageBox MB_ICONINFORMATION|MB_OK "$$0 = $0" IDOK

Push $0 ;помещаем оригинальное значение $0 в стек

StrCpy $0 wolkow70 ;перезаписываем переменную $0 -> wolkow70
MessageBox MB_ICONINFORMATION|MB_OK "$$0 = $0" IDOK

Pop $0 ;вынимаем оригинальное значение из стека в $0
MessageBox MB_ICONINFORMATION|MB_OK "$$0 = $0" IDOK
Смысл основной здесь в чем, вот есть некий макрос который использует все 20 стандартных переменных (не важно, хоть одну переменную), при подключении к скрипту макроса, у меня в скрипте было до макроса в $0=некое значение, и макрос использует эту переменную - естественно перезапишется значение, но мне нужно вернуть первоначальное значение $0 ! после отработки макроса, вот тут и стек мне и пригодится, но в основном в сложных макросах - это уже предусмотрено!вообще это правило хорошего тона, что взял - то и отдай.
$R1-$R9 как местные регистры
$0-$9 как глобальные значения »
Это кто вам такое сказал то? смысл здесь в чем?
$0 - $R9 -> это стандартные переменные, которые не нужно объявлять, это заложено на программном уровне компилятора NSIS, равно тому что и стек - только в отдельном пуле

wolkow70
21-07-2011, 14:44
$0-$9 как глобальные значения. »
То есть, если занести значение в такую переменную, то оно сохранится при интеграции переменной в другой макрос?

kotkovets
21-07-2011, 15:10
То есть, если занести значение в такую переменную, то оно сохранится при интеграции переменной в другой макрос? »
Передадутся все значения переменных от $0 до $R9
Но! не передадутся из секций инсталлятора в секции деиинсталлятора в скрипте.

Krinkels
21-07-2011, 15:22
Но! не передадутся из секций инсталлятора в секции деиинсталлятора в скрипте. »
Спасибо за полезную информацию. Не зря я значит в деинсталяторе все заново высчитывал :)

kotkovets
21-07-2011, 16:08
Спасибо за полезную информацию. Не зря я значит в деинсталяторе все заново высчитывал »
Всегда пожалуйста! Кстати еще полезная информация, предопределенные переменые тоже не передаются, кроме переменных окружения(системных)
К примеру $INSTDIR, это значение определится в деинсталляторе как текущая папка местонахождения деинсталятора, это легко проверить - переместить в другое место деинсталлятор.
Так как деинсталлятор разделяется на 2 процесса, то в переменную $EXEDIR возвратится путь второго процесса (_au.exe - точно не помню название процесса).




© OSzone.net 2001-2012