Войти

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


Страниц : 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

AlekseyPopovv
07-04-2020, 10:19
При Unicode true ругается на !include "ProcessFunc.nsh".
Как быть? NSIS 3.04

iglezz
07-04-2020, 10:30
При Unicode true ругается на !include "ProcessFunc.nsh". »
Как именно?

AlekseyPopovv
07-04-2020, 10:48
Как именно? »
Command line:
"C:\Program Files (x86)\NSIS\makensis.exe" /NOTIFYHWND 6882462 "P:\Portable\Scripts\Program.nsi.hmnetempscript1"

Processing config: C:\Program Files (x86)\NSIS\nsisconf.nsh
Processing script file: "P:\Portable\Scripts\Program.nsi.hmnetempscript1" (ACP)
Bad text encoding: C:\Program Files (x86)\NSIS\Include\ProcessFunc.nsh:1
!include: error in script: "C:\Program Files (x86)\NSIS\Include\ProcessFunc.nsh" on line 1
Error in script "P:\Portable\Scripts\Program.nsi.hmnetempscript1" on line 52 -- aborting creation process

Не верная кодировка текста. У меня кодировка "Windows 1251".

iglezz
07-04-2020, 11:10
Определённо, надо или править кодировку скрипта/включаемого файла, или указать её в !include через /CHARSET=***, или методом комментирования/удаления искать сбойные строки в ProcessFunc.nsh.

AlekseyPopovv
07-04-2020, 11:21
iglezz, не понял конечно ни чего, всё желание уже отбила "эта" программа, теперь даже морочиться с ней не буду. А вам спасибо за помощь.

MKN
07-04-2020, 15:32
При Unicode true ругается на !include "ProcessFunc.nsh". »
А какой именно Header ты используешь ? Есть старый и поновее от kotkovets - http://forum.oszone.net/post-2390157-1283.html

AlekseyPopovv
08-04-2020, 08:32
А какой именно Header ты используешь?»
Поновее. На версии 3.05 вообще теперь предупреждение, что это?
warning: 7998: ANSI targets are deprecated

MKN
08-04-2020, 10:13
На версии 3.05 вообще теперь предупреждение, что это? »
Это заявленное - переходите на Unicode, что то в Вашем скрипте не поддерживается новой версией... : https://nsis.sourceforge.io/Docs/AppendixF.html#v3.05
F.2 3.05
Released on December 15th, 2019
F.2.1 Release Notes
ANSI targets are deprecated, consider moving to Unicode.
В ряде случаев можно игнорировать или использовать предыдущие версии NSIS...

Serg866
16-04-2020, 12:27
Привет
Файлы моего инсталлятора в сумме превысили размер 2гб. Соответственно скрипт не компилируется. Ищу решение по архивации файлов, чтобы архивы распаковывались при установке, при этом незаметно для пользователя и без наличия дополнительных программ на его ПК. Всё должен сделать установщик. Понимаю, что тут нужен архиватор, умеющий распаковывать архивы в тихом режиме и его надо включать в дистрибутив инсталлятора. Пожалуйста, подскажите как решить вопрос.
P.S. Надо обойтись без bat-ников, так как у многих пользователей они не запустятся из-за включенного UAC.

iglezz
16-04-2020, 12:37
Примерно так:InitPluginsDir
File "/oname=$PLUGINSDIR\7za.exe" "7za.exe"
nsExec::Exec '"$PLUGINSDIR\7za.exe" x -y -o"$INSTDIR" "$EXEDIR\pack.7z"'

AlekseyPopovv
22-04-2020, 16:49
Программа запускается через лаунчер командой:
ExecWait "$EXEDIR\${APPEXE}"
Вопрос:
Как завершить процесс "${APPEXE}", если эта программа на закрывается по нажатию на "крестик", а сворачивается в трей?

А какой именно Header ты используешь ? »
Как ни странно, проблема была в закоментированном тексте в самом файле "ProcessFunc.nsh".

iglezz
23-04-2020, 08:40
Программа запускается через лаунчер командой:
ExecWait "$EXEDIR\${APPEXE}"
Вопрос:
Как завершить процесс "${APPEXE}", если эта программа на закрывается по нажатию на "крестик", а сворачивается в трей? »
Для начала определится по каким критериям программу нужно закрывать.
В любом случае, если это делать из лаунчера, надо процесс запускать не через ExecWait, т.к. здесь лаунчер будет ждать завершения ${APPEXE} для перехода к следующей инструкции.

inco1
07-05-2020, 08:42
Всем доброго времени суток.
Подскажите по нубовскому вопросу. Например пишу запустить файл
Exec '"$TEMP\Br Pr\Prrr.exe"'
или не запустить, а провести другие манипуляции с файлом.
'Как сделать код с таким условием, "если файл найден, то запустить файл (или например не запускать, а провести с ним другие действия), а если не найден, то вообще пропустить выполнение этого действия" ?

MKN
07-05-2020, 13:02
"если файл найден, то запустить файл (или например не запускать, а провести с ним другие действия), а если не найден, то вообще пропустить выполнение этого действия" »
Как вариант :

IfFileExists "$TEMP\Br Pr\Prrr.exe" Next
MessageBox MB_OK "Файл Prrr.exe НЕ ОБНАРУЖЕН ! "
; Quit если надо...
Next:
MessageBox MB_OK "Файл Prrr.exe - на месте! Производим (или нет)какое либо действие"

inco1
07-05-2020, 14:10
MKN,
Спасибо, но MessageBox MB_OK не нужен, как в таком случае?

PS. Все, разобрался, еще раз спасибо.

inco1
20-05-2020, 06:23
Всем доброго времени суток.
Помогите, пожалуйста с реестром. Как привязать реестр к папке установки, ведь некоторые данные указывают в реестре папку установки, ну чтобы не тупо прописать данные, а чтобы они менялись в зависимости от места установки. Как это делается?

MKN
20-05-2020, 10:28
Как привязать реестр к папке установки, ведь некоторые данные указывают в реестре папку установки »
Папка установки, которую ессно можно изменять при установке, задаётся в скрипте.
Например, InstallDir "$PROGRAMFILES\MyProg".
Это - переменная $INSTDIR, которая фигурирует в скрипте, в частности в реестре.
К примеру, WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninstall MyProg.exe"
Собственно всё... :) Внимательно читаем "Справочник по NSIS" (ссылка в шапке темы).

inco1
21-05-2020, 10:57
MKN, Я правильно понял?, что если у меня, например,
InstallDir "$PROGRAMFILES\MyProg" ,
но пользователь во время установки изменит по своему выбору , например, в
D:\Misha\MyProg
и я пропишу:
WriteRegStr HKEY_CURRENT_USER "Software\MyProg" "123" "$INSTDIR\MyProg.exe" ,
то и в реестре пропишется все правильно:
[HKEY_CURRENT_USER\Software\MyProg]
"123"="D:\Misha\MyProg\MyProg.exe"

В справке ничего по моему вопросу не обнаружил.

MKN
21-05-2020, 13:04
inco1,
InstallDir "любое изменяемое бла-бла". Это "любое изменяемое бла-бла" = $INSTDIR.
$INSTDIR используй далее в скрипте, где угодно.
Давно бы проэксперементировал и увидел что и как. :)

inco1
21-05-2020, 14:57
MKN, Спасибо. Все просто и доступно. Жаль, что создатели справки не умеют объяснять вот таким простейшим способом.




© OSzone.net 2001-2012