Просмотр темы форума
Тема: Unicode версия.
Здравствуйте.
Скажите, а какие серьезные отличия Unicode версии от обычной.
Серьезных отличий кроме уникодных установок нет.
Сейчас, например, ваша русская установка будет нормально смотреться на английской или немецкой версии Windows, а в диалоге выбора языка будут корректно показываться родные названия языков. Также могут устанавливаться файлы с именами на разных языках.
Для большинства, может быть, это не так актуально, но переход на уникод назревал очень давно.
Сейчас все новые возможности будут добавляться только в уникодную 7 версию.
Главное чтобы не нарушилась логика работы уже существующих команд, а то некоторые большие проекты проверить или заново отладить уже не получится.
Логику работы мы не трогали.
Могут быть кое-какие издержки, например русский текст в команде Исходный код остается в UTF-8 и если выведете print("Русский"), то увидите в консоли utf. С другой стороны
macrox_setstr("rus", "Русский")
отрабатывается правильно.
Столкнулся с проблемой в использовании команд "INI файл - Установить значение" и "INI файл - Получить значение". У меня INI-файл хранится в кодировке UTF-8, из-за этого команда "Получить значение" возвращает пустое значение, а команда "Установить значение" не меняет существующее значение в INI-файле, а дописывает новое значение в конец файла. В результате после установки программного продукта поверх предыдущей версии INI-файл выглядит так:
[Settings]
Parameter=Old Value
[Settings]
Parameter=New Value
Дело тут именно в кодировке INI-файла: если изменить кодировку на ANSI, команды инсталлятора будут работать нормально.
В версии CreateInstall 7.0.14 эта проблема осталась, команды не работают, если кодировка INI-файла - UTF-8. Можно ли решить эту проблему?
У вас имена секций и ключей на русском?
Можете здесь привести какой-нибудь фрагмент INI-файла или прислать на info@createinstall.com?
А так да, в 7 версии мы старались оставить работу с файлами как было, чтобы не было конфликтов с предыдущими проектами. Тут нужно будет видимо в команду специальную галочку добавлять что файл UTF-8.
Имена секций, ключи - всё на английском. Кодировка UTF-8 нужна потому, что теоретически значение какого-то параметра может содержать иностранные буквы. Отправил пример INI файла на Вашу электронную почту.
Поле выбора кодировки для INI файла - да, это решило бы проблему.
Проблема в данном случае что файл начинается с трехсимвольного префикса UTF.
Исправим, на email ответим.
Решил поставить 7 версию и сразу столкнулся с кучей проблем на всех Windows XP/7/8:
1) Проекты, созданные в 6 версии, очень многие начали выдавать ошибки. Не стал пока разбираться во всех сообщениях, в основном в исходном коде, то есть синтаксис вдруг стал не верным.
2) При создании установки если в пути есть русские буквы, в частности к иконкам и куда сохраняется проект, то ошибка и абракадабра в сообщении об ошибки, переменная $prjpath$ не отображает русские имена в путях.
3) И заодно установка 7-й версии на Windows XP не возможна - ошибка при установке.
Странное поведение для юникодной версии.
Кстати пара символа в начале файлов UTF-16 это стандартный маркер UTF файла, одной из разновидностей UTF формата.
Пришлите на email один проект для примера, где вылазят ошибки.
Внутри функций в Исходном коде лучше вообще не использовать русский язык.
Русский текст лучше определить в переменной, а в коде сослаться как macrox_do("#myvar#"). Некоторые функции вообще теперь работают только с уникодными строками.
Последнюю версию CreateInstall пробуйте? 7.0.13?
По XP - пришлите скриншот ошибки. Версия английская или русская?
Какой сервис-пак установлен?
Пытались запускать установку несколько раз? все время ошибка?
Отправил сообщение на почту.
И заодно я думаю, что всё-таки нужно все команды включить по умолчанию в разделы Установки, Деинсталляции и Обновления, кроме тех которые нужны только для этого раздела например 'Деинсталляция - Обработка лог-файла'. Я самостоятельно включаю все команды в каждой новой версии, поскольку они нужны все.
С командами вероятно так и сделаем.
По присланному проекту будем смотреть.
Что касается бага на XP - исправили и выложили версию 7.0.19.
Здравствуйте.
Опять куча вопросов по 7-й версии, я так понимаю что все команды с файлами теперь работаю в юникоде и команда 'Заменить внутри файлов' тоже. Поскольку уже появилась возможность для некоторых команд отключать использование юникода, то хотелось бы для всех команд работающих с файлами иметь такую возможность.
Лучше конкретно говорить, что работает не так и как нужно сделать.
Сейчас заменяется в UTF-8, а нужно чтобы было в Windows-1251?
Суть в следующем, относительно команды 'Заменить внутри файлов' другие команды, наверное, работают так же.
6-я при замене в файле любого содержания текстовой или бинарный полноценно заменяет текст без повреждения всего другого содержимого файла.
7-я версия, если файл бинарный, не выполняет замену, и замена прерывается на спец символах в тексте, например на символе 0, насколько я понял, обрабатывается юникодная кодировка. И поэтому для замены текста в файлах разного содержания нужно использовать простой режим Win1251, чтобы выполнять такие задачи. Следовательно, нужно отключать использование юникодного режима обработки файлов.
Вообще для всех команд работы с файлами использование UTF8 или Win1251 должно быть на выбор, это вполне разумно, иначе будет периодически возникать не понятное поведение команд.
В ближайшие дни внесем изменения в команду.
Я внес изменения в эту команду.
Скачайте этот zip
https://drive.google.com/file/d/0B3rNeTlGRFFOeUhzdlNPWEgzZmM/view?usp=sharing
replace.g скопируйте в CreateInstall\cmds\sources, а
replace.gt скопируйте в CreateInstall\cmds\cmds\files.
Если в команде не отмечена галочка Кодировка UTF-8, то она работает как раньше.
Следующая версия будет содержать эти изменения.
Спасибо за исправления.
Осталась проблема с русскими путями при создании проекта.
Команда 'Встроенные файлы' не может добавить файл если в пути русские буквы.
>Команда 'Встроенные файлы' не может добавить файл если в пути русские буквы.
В 6 версии работало нормально?
В 6-й с русскими нет ни каких проблем везде, все работает.
Будем смотреть. Дело в том, что сам язык не уникодовый, поэтому и проявляются нестыковки.
Опять юникод...
В команде 'Диалог-Readme' также надо бы сделать на выбор отключение UTF-8. И во всех командах получения файлов нужно по умолчанию делать как раньше и если надо уже включать UTF-8.
Уже несколько месяцев пытаюсь использовать 7-ю версию, но это практически не возможно для полноценных проектов. Куча ошибок из-за юникода, все делалось с учетом отсутствия юникода, а теперь где вылезет юникод не реально понять.
И для команды для 'Изменить переменную-Вычислить хэш' по умолчанию должно быть поведение как раньше, а не UTF-8. Я считаю что для всех команд по умолчанию должно быть поведение как раньше и только при специальном выборе UTF-8, ведь огромное количество проектов сделано именно под это и другое поведение по умолчанию все убивает.
>Команда 'Встроенные файлы' не может добавить файл если в пути русские буквы.
Пробовали всякие варианты - нормально добавляются файлы где в пути есть русские символы.
Пришлите ваш .ci проект с такой ошибкой на info@createinstall.com.
>В команде 'Диалог-Readme' также надо бы сделать на выбор отключение UTF-8. И во всех командах получения файлов нужно по умолчанию делать как раньше и если надо уже включать UTF-8.
Это как раз логично сделано, что уникодная версия подразумевает кодировку Readme и лицензии в UTF-8 или уникоде. Сложности же нет пересохранить файлы в UTF-8.
>И для команды для 'Изменить переменную-Вычислить хэш' по умолчанию должно быть поведение как раньше, а не UTF-8.
Это да, мы не сразу не доглядели. Чтобы считалось как ранее, нужно в поле Дополнительные параметры указать noutf.
Чтобы не дублировать написал в теме 'Ошибки 7-й версии (юникодной)'
16.01.25 Выпущен инсталлятор CreateInstall 8.11.1.
19.06.24 Выпущен инсталлятор CreateInstall 8.11.0. подробнее
13.11.22 Выпущен инсталлятор CreateInstall 8.10.1.
21.05.22 Выпущен инсталлятор CreateInstall 8.10.0.
25.09.21 Выпущен инсталлятор CreateInstall 8.9.0.
15.07.21 Выпущен инсталлятор CreateInstall 8.8.1.