Просмотр темы форума
Тема: 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-й версии (юникодной)'
10.07.25 Выпущен инсталлятор CreateInstall 8.11.2.
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.