Просмотр темы форума
Тема: Пожелания и вопросы
И снова Здравствуйте.
Одно обновление и столько вопросов возникло. В 6.3.0 теперь радиокнопки разбиваются на группы, если между ними есть элементы другого типа, это работает теперь принудительно и во многих проектах это теперь работает не так как нужно, поскольку раньше этого эффект не было и делалось без учёта этого. Хотелось бы иметь, возможность отключения такого поведения, чтобы можно было выбирать как раньше.
А про ошибку с 'Радиокнопкой' я написал в соответствующей теме.
Подумаем как можно это сделать.
Выпустили версию 6.3.1. С радиокнопками переделали. В целях совместимости работу радиокнопок по умолчанию оставили как было. Если нужно, чтобы радиокнопки автоматически группировались, то в команде в Дополнительных настройках определите переменную Sautoradio равной 1.
Спасибо за оперативность.
Не работает функция Самоудаления установочного файла.
Проверьте, пожалуйста, ибо очень надо.
И ещё. Заметил, что как инсталлятор, так и сама инсталляция, оставляют после себя временные файлики. ИМХО, нужно это поправить, если есть возможность.
Также хочу заметить, что при использовании компонента "Проверить"
(Проверить права пользователя, занятые файлы, открытые окна) для "Занятый файл" - программа возвращает 1, если у файла стоит атрибут "только для чтения". Логично с одной стороны, но не совсем то, чего я ожидал.
>Не работает функция Самоудаления установочного файла.
На какой Windows не работает и в какой версии создавалась установка.
Смотрел сейчас несколько раз - установка все время удалялась.
>И ещё. Заметил, что как инсталлятор, так и сама инсталляция, оставляют после себя временные файлики.
Могут быть ситуации когда остаются пара-другая файлов, посмотрим.
>для "Занятый файл" - программа возвращает 1, если у файла стоит атрибут "только для чтения".
Да, команда только пытается открыть файл на запись. Тут сложно сказать как сделать правильно, подумаем.
>На какой Windows не работает и в какой версии создавалась установка?
winXP/win7/win7x64. Версия инсталлятора 6.2.1.
Возможно, одно из обновлений "легло криво"... Просто раньше не было необходимости, вот и не обращал внимания. Попробую переставить "начисто".
Кстати, пару раз сталкивался с некорректным сохранением проекта после редактирования. Когда удалённые блоки визуально отсутствуют после удаления, а в файле проекта - остаются и, естественно, компилируются.
Решить сей вопрос помогало только одно - создать проект заново. Ну или ручное редактирование, когда проект несложный.
Очень странная ошибка. Ни разу с таким не сталкивались и не слышали о таком. Запуск компиляции осуществляете из CreateInstall или отдельным запуском cicmd.exe?
Просто изменения в проекте не сохраняются сразу в файл, а только в момент создания инсталляции или явного сохранения через меню.
Запуск компиляции осуществляете из CreateInstall.
Было уже дважды. Даже при компиляции проекта из другой версии "невидимые" блоки остаются. Если повторится вновь - пришлю файл проекта.
Скажите, пожалуйста, есть ли возможность получить в переменную полный путь к запущенному процессу?
Сейчас выкручиваюсь так: ищу file.exe и проверю занят ли файл. Работает исправно, но только в случае, когда файл без атрибута "только для чтения" (писал выше - понял почему так).
Имеется в виду некий процесс (не системный), о котором известно только имя исполняемого файла.
Встроенной возможности нет. Если будет какой-нибудь пример на более-менее понятном языке программирования, то можем портировать на Gentee и тогда можно будет использовать в инсталляции.
Подскажите, пожалуйста, есть ли способ удалить пустые строки в файле?
Символы переноса скрипт игнорирует, как я понял.
Если использовать Исходный код и язык Gentee? то там перенос строк \r\n.
В других командах для символов переноса строк используйте макрос #nl# (new line).
То есть можно сделать замену #nl##nl# на #nl# для удаления пустых строк.
Замена работает правильно. Спасибо!
А вот если удалять строки из файла от "строка_1" по "#nl#", то удаляются все строки начиная от "строка_1", даже если последний символ не является "#nl#".
Также при параметрах удаления "строка_1" "строка_2#nl#" всё равно удаляются все строки начиная от "строка_1".
При замене "#nl#" на "\r\n" результат тот же.
Удаление строк от "строка_1" по "строка_2" работает исправно.
Тут лучше смотреть на конкретный проект с командами.
Сделайте тестовый .ci проект и пришлите на info@createinstall.com с темой CreateInstall.
Тут лучше смотреть на конкретный проект с командами.
Сделайте тестовый .ci проект и пришлите на info@createinstall.com с темой CreateInstall.
Ну тут как бы и смотреть не на что.
Я так понимаю, что команда "Удалить строки из файла" не умеет работать с макросами и ищет #nl# как строку, которой в файле попросту нет. От этого и удаляет всё, пока файл не закончится.
Эта команда работает с макросами, просто там смысла нет использовать макрос перевода строки. Она при чтении текста из файла сразу разбивает его на строки в соответствии с символами переводов строк и там просто не могут встречаться еще переводы строк. Поэтому и удаление происходит до конца.
То есть на уровне кода всё работает правильно, но не так как хотелось бы мне :).
Придётся поставить вопрос иначе. Можно ли стандартными командами (без велосипеда) удалить часть текста (начальная и конечная строки известны) с последующей пустой строкой (если она присутствует)?
Если ограничиваться только командами, то могу предложить следующее
1. Читаем файл в переменную
2. Используем команду замены и заменяем #строка_2##nl##nl# на #строка_2##nl#. Это мы удалим пустую строку, если она есть.
3. Сохраняем переменную в файл.
4. Удаляем строки с #строка_1# по #строка_2# в этом файле.
Как раз над этим размышляю... Как временный выход сойдёт.
А вообще рад буду видеть команду "удалить подстроки" (или что-то вроде того), которая при обработке файла будет воспринимать конец строки как неотъемлемую часть текста.
Как вариант предлагаю доработать существующую команду "удалить строки", добавив в неё чекбокс "игнорировать конец строки", или как-то так...
На все случаи команд не сделать.
Команда удаления строк создавалась в первую очередь для работы с ini файлами, hosts и прочими файлами конфигурации и настроек. Если делать ее более универсальной, то ее полностью придется переделывать.
Здравствуйте.
Давно хотел написать по этому поводу, но все забывал и сам менял. При выборе пути установки размер отображается на английском, хотелось бы иметь возможность выбора языка для них. Самый простой способ как обычно использовать переменные в файле dlgpath.g с их значениями в *.lng. И вообще если есть разные сообщения особенно об ошибках в исходном коде, то их тоже не мешало бы вынести в языковой файл.
Имеете в виду вот эти строковые ресурсы?
gpath_vals = %{ "B", "KB", "MB", "GB" }
Сообщения об ошибках при компиляции не получится сделать, так как в языке не предусмотрена многоязыковая поддержка сообщений.
Да именно эти: gpath_vals = %{ "B", "KB", "MB", "GB" }
С ошибками не критично, поскольку они единичны и в целом понятны. Но gpath_vals = %{ "B", "KB", "MB", "GB" } актуально.
Добавили русский язык для размеров.
Можете скачать версию 7.2.3 по этой ссылке и проверить
http://www.createinstall.com/downloads/ci-setup.7.2.3.exe
Здравствуйте!
Подскажите, пожалуйста, есть ли возможность узнать редакцию Windows (Starter, Professional, Ultimate...)?
Добавили такую возможность
Скачайте sysinfo.zip
https://drive.google.com/file/d/0B3rNeTlGRFFOZk4ya2k2SkUwMDQ/view?usp=sharing
Копируйте
*.lng файлы в languages
sysinfo.gt в cmds/cmds/system
sysinfo.g в cmds/sources
Добавляете команду System Information и указывайте в Windows Product Type имя переменной куда запишется тип продукта в виде числа.
Список кодов типов Windows можно найти здесь
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms724358(v=vs.85).aspx
[Line: 120 Pos: 64] There is not such field 'spmajor' in the structure
case $SYS_PRODUCT {
if defver.major >= 6 {
GetProductInfo( defver.major, defver.minor, defver.spmajor, defver.spminor, &ret )
}
value = str( ret )
'spminor' - аналогично.
Пока не понимаю, что не так, но если вместо defver.spmajor и defver.spminor прописать нули - функция работает.
У вас видимо версия CreateInstall старая.
Поставьте последнюю версию для вашего ключа (не больше года после регистрации).
Совершенно верно. Всё работает. Спасибо!
Здравствуйте.
А есть ли возможность изменять название кнопок в команде 'Сообщение' на свои, насколько я понял для этой команды используются стандартные название зависящие от языка Windows.
Да, используется стандартное сообщение Windows и текст на кнопках показывается в соответствии с языком Windows.
В текущей версии возможности менять текст кнопок нет.
Добрый день. Можно сделать в инсталляторе предпросмотр диалоговых окон, чтобы было видно визуально сделанные изменения.И Вопросы: 1. Можно изменять размер всех диалоговых окон ( например сделать не стандартное квадратное окно, а прямоугольное). 2. Можно ли наложить картинку на инсталл вместо серого фона? 3. Можно ли сделать окно с слайдшоу во время установки программы?
>Можно сделать в инсталляторе предпросмотр диалоговых окон, чтобы было видно визуально сделанные изменения.
Прямо из CreateInstall нет и вряд ли будет. А вот создание установки только с визуальными компонентами реально сделать, как раз для тестирования диалоговых окон.
>Вопросы: 1. Можно изменять размер всех диалоговых окон ( например сделать не стандартное квадратное окно, а прямоугольное).
Да можно, но тогда придется и менять размеры и расположение внутренних контролов. Подробнее можно прочитать здесь
http://www.createinstall.ru/help/move-resize-controls.html
http://www.createinstall.ru/help/how-to-get-control-id.html
>2. Можно ли наложить картинку на инсталл вместо серого фона?
Имеется в виду фон диалогового окна? Нет, но подумать можно.
>3. Можно ли сделать окно с слайдшоу во время установки программы?
Это давно планируем сделать. Думаю в ближайшее время реализуем.
Здравствуйте!
Функция "Импорт файла реестра" позволяет указать рег-файл по конкретному адресу.
Можно ли как то импортировать рег-файл по адресу, который заранее не известен? Мне это нужно, чтобы юзер мог сохранять настройки моей проги из реестра в нужном ему месте (я запоминаю путь в реестре и через переменные), а потом восстанавливать их по этому пути.
Перепробовал все - и Shell запуск, и запуск по regedit "имя файла", и от админа и без - не срабатывает.
Есть какие то еще варианты?
Эта команда при сборке установки берет указанный файл, включает его в установку, а при установке распаковывает его во временную директорию и импортирует с помощью regedit.exe. То есть эту команду для вашего случая не имеет смысла использовать.
Если вы хотите импортировать .reg file, который находится на компьютере пользователя, то можете использовать команду Запустить приложение.
Пусть в переменной myregfile содержится путь и имя к .reg файлу.
Путь: CUSTOM PATH
Имя файла: regedit.exe
Параметры командной строки: /s #quote##myregfile##quote#
Рабочая директория: CUSTOM PATH
Это если для запуска подойдет 32-битная версия regedit.exe. Если нужно импортировать через 64-битную версию regedit.exe, то там немного по другому.
Ну и нужно, чтобы установка имела права администратора, так как regedit.exe требует прав администратора.
Спасибо! У меня первый "Путь:" был ошибочно INSTALL PATH
Здравствуйте! Скажите, а можно ли в инсталятор вложить файлы, которые после копирования стартуют сами? (например добавить инсталятор .NET, который после копирования файлов запустится и установится).
Спасибо
Само ничего запускаться не может. Вы можете добавить в установку инсталлятор .NET и запустить его после распаковки. Для запуска нужно использовать специальную команду 'Запустить приложение'.
Еще вопрос. Можно ли сделать так, что для 32-разрядных выполнять один файл, для 64 - другой?
Спасибо
Да, можно. Предположим у вас есть два файл inst32.exe и inst64.exe.
Вы добавляете две команды Запустить приложение с этими двумя файлами.
У файла inst32 в поле Условие указывайте !os64, а в команде запуска inst64.exe указывайте os64.
os64 - это предустановленная переменная, которая равна 1 на Windows 64.
Можно также сделать одну команду Запустить приложение с именем файла #myapp#.
А ранее в команде Установить переменные определить
Переменная: myapp
Значение: inst32.exe
Условие: !os64
и
Переменная: myapp
Значение: inst64.exe
Условие: os64
Здравствуйте! Можно ли изменить имя файла деинсталяции, которое можно выбрать в меню "Пуск"? (т.е. вместо "Удалить" хотелось бы "Удалить #appname#").
Спасибо
Если имеете в виду ярлык, то измените имя ярлыка в соответствующей команде Ярлык - Создать в скрипте установки. Там где имя файла uninstall.exe.
Если нужно изменить имя в списке программ для удаления, то это меняется в команде 'Добавить в Установка/Удаление программ'.
Здравствуйте. Есть несколько пожеланий:
1) Можно реализовать команду 'Удаление папки, только если она пустая', давно её не хватает, пока использую команду в исходном коде, но хотелось бы и встроенную команду иметь.
3) Можно реализовать команду 'Проверки на возможность записи и создания в папку/файл', а то сейчас при попытки инсталлятора создать папку в недоступном месте он выдаёт сообщение и закрывается. Давно использую команду в исходном коде, но хочется уже иметь такую возможность стандартно.
2) Можно реализовать распаковку 7z архивов с паролем, давно хотелось.
Добавлю, что есть команда 'Перехватить выход', но она сработает уже после начала распаковки, то есть не получится всё проверить до начала, установки.
1. Лучше тогда добавить чекбокс 'Удалять только пустые директории' в команду 'Удалить файлы'.
2. Это тоже можно добавить в команду Проверить (Check).
3. Про возможность реализации этого пункта нужно смотреть интеграцию с распаковкой 7z.
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.