Просмотр темы форума
Тема: Пожелания и вопросы
Я давно уже пользуюсь инсталлятором, и я все-таки решил высказать некоторые некоторые пожелания, которые накопились давно.
1) В разделе 'Деинсталляции' не доступны многие команды, которые есть в разделе 'Установки', это не удобно, банальное 'Импортировать REG файл' и постоянно при удалении приходиться что-то изобретать и какая команда понадобиться заранее, сказать сложно мне на пример постоянно требуется многие команды из радела 'Установки'. Добавьте использование всех команд в раздел 'Деинсталляции' чтобы уж наверняка все было, кроме явно не нужных, например 'Установочные файлы', например хотелось бы команду отмена регистрации DLL.
2) Хотелось бы расширения возможности команды добавления в Лог деинсталляции, например при добавлении в лог команды удаления ключа реестра нет возможности установить использование 64 битного раздела, если же это делать через команду удаления ключа там есть такая возможность логично добавить её и в лог.
3) Хотелось бы чтобы была возможность регистрировать 64 битные версии DLL/OCX, они регистрируются если использовать регистрацию с использованием 'regsvr32.exe' но хотелось бы при возможности регистрировать 64 битные версии без использования 'regsvr32.exe
4) Раз появилась команда добавить в Планировщик, может есть возможность добавить команду добавить в Брандмауэр Windows (Firewall).
5) Хотелось бы иметь возможность получения MD5, SHA1 и контрольной суммы для строк и содержимого файлов.
6) Хотелось бы иметь возможность получения размера файла.
И можно ли реализовать 5 и 6 пункт, сейчас используя исходный код без дополнительных программ.
По 1 пункту. Дайте список таких команд и мы добавим их при следущем обновлении. Сейчас вы можете самостоятельно подключить такие команды. Например, 'Импортировать REG файл'.
Открывайте в текстовом редакторе CreateInstall\cmds\cmds\regini\importreg.gt и меняете в атрибутах
filter="i" на filter="iu". Затем запускаете CreateInstall - команда должна появится в Uninstall Script.
По 2 пункту. Посмотрим, что можно сделать.
>3) Хотелось бы чтобы была возможность регистрировать 64 битные версии DLL/OCX,
Не углублялись в вопрос, но мне кажется проблематично зарегистрировать 64-битный модель из 32-битного приложения. Если какие-то наводки примеры есть, то скиньте пожалуйста.
>4) Раз появилась команда добавить в Планировщик, может есть возможность добавить команду добавить в Брандмауэр Windows (Firewall).
Какая-нибудь ссылка на API и примеры есть?
>5) Хотелось бы иметь возможность получения MD5, SHA1 и контрольной суммы для строк и содержимого файлов.
Теоретически можно. Нужно поискать готовые исходники или библиотеки.
>6) Хотелось бы иметь возможность получения размера файла.
Можно в Исходном коде получать, а можно воспользоваться командой Get File Information. Если вы, например, там укажите переменную fi, то fisize будет содержать размер файла.
1) Если есть возможность включать их самостоятельно то нет смысла их добавлять, поскольку в целом нужны разные и трудно сказать что точно.
2) Спасибо.
3) Я так далеко не углублялся в этот вопрос, чтобы указать примеры, но опять, же это не так критично, если есть способ через regsvr32.exe.
4) В Windows есть стандартная возможность добавить в firewall через netsh.exe сам синтаксис команды отличается в разных версиях, насчет API я точные примеры не могу привести я так глубоко не занимаюсь программированием, но когда я искал такую возможность, то находил такие примеры работы с firewall на сайте Microsoft в их библиотеки для программистов с примерами.
5) Что касается MD5 примеров реализации алгоритма то их больше чем готовых решений, я когда искал консольные утилиты для этого в основном находил исподники на разных языках программирования. Я остановился на удобном варианте с www.fourmilab.ch там есть и исходники программы.
6) Спасибо, не сообразил версия новая пока не могу все переварить.
Здравствуйте. У меня ещё появились пожелания.
Хотелось бы иметь возможность работы с дисками, точнее иметь возможность получать информацию о дисках и разделах.
- Список всех разделов на диске
- Тип диска (съемный, CD и тд. )
- Тип файловой системы
- Размер диска
- Сколько свободно
- Сколько занято
- Метка диска
И соответственно вопрос можно ли это реализовать сейчас через исходный код, если возможно пример.
Кое-чего можно сделать уже сейчас, что-то придется делать с использованием Windows API.
Для получения списка дисков и типа диска можно использовать функции getdrives и getdrivetype.
Для получение свободного и общего размера можно использовать функцию getdiskspace
long total freesize
str diskname = "c:\\"
freesize = getdiskspace( diskname, &total )
Вот пример получения дисков на компьютере. После этого вы например можете указать переменные drive и alldrive в комбобоксах в Диалог - Опции.
arrstr drives
str out all
uint i
drives = getdrives()
fornum i, *drives
{
uint itype = getdrivetype( drives[ i ])
if itype == $DRIVE_FIXED || itype == $DRIVE_REMOTE
{
out += "\(drives[i])=\(drives[i])\l"
}
all += "\(drives[i])=\(drives[i])\l"
}
macrox_setstr( "drive_list", out )
macrox_setstr( "alldrive_list", all )
Что-то не работает ни одна функция связанная с записью переменных в файл.
Пробовал : Запись переменной в файл, замена переменных в файле, Замена текста в файле.
Суть в следующем. В диалоге Установки юзер вводит название компании, которое должно сохраниться в INSTALL PATH например в info.txt.
Не получается! Настраивал нужные команды, делал файл с #firm# в теле файла, ничего не заменяет.
Пришлите ваш .ci файл проекта на info@createinstall.com с темой CreateInstall. Посмотрим в чем дело.
Ну и файл, куда должно записаться тоже пришлите.
Выслал обратно исправленный проект.
Проблема была в том что вы пытались заменить
переменные в файле INSTAL PATH\info.txt до того
как вы распаковали его.
Вопрос чайника... Но. В CreateInstall есть функции регистрации библиотек, но нет опции отмены их регистрации. Я не программист. Разве это не требуется, если я заменяю файл библиотеки, которая требует регистрации?
Сейчас я делаю так:
1. разрегистрирую библиотеку штатным способом (regsvr32.exe /u имяDLL);
2. заменяю ее на новую;
3. регистрирую штатным способом (regsvr32.exe) или соответствующей функцией CreateInstall.
Могу я 1 пункт как то наладить через CreateInstall? чтобы вообще не использовать regsvr32?
Я не специалист в таких dll, но вроде разрегистрировать dll перед регистрацией не нужно. По крайней мере, за много лет такой вопрос никто не поднимал.
Здравствуйте.
В программе появилась возможность распаковывать 7z архивы, это хорошо. И в связи с этим можно ли добавить распаковку архивов с паролем.
И заодно также встроить распаковку RAR архивов DLL для распаковки у них на сайте бесплатно.
Отметим себе, но по срокам ничего сказать не могу.
При использовании
======
long total freesize
str diskname = "c:\\"
freesize = getdiskspace( diskname, &total )
======
Появляестя сообщении: Unknown the name of the identifier 'getdiskspace'
подскажите как точнее использовать этот код.
Эта функция описана в CreateInstall\cmds\libs\drivespace.g
Добавьте еще один Source Code с отмеченным External Source Code
include : $"$exepath$\cmds\libs\drivespace.g"
Ну или просто скопируйте в него код из того файла.
Если вы используйте Dialog - Setup Path, то тогда эта функция должна подключаться автоматически.
И ещё возникла проблема при делении. Деление выполняется не правильно 11 значных чисел 10 значные делятся правильно.
Насколько я понял это ограничение и в исходниках при выборе пути установки есть дополнительная обработка такой ситуации.
Я не на столько разбираюсь в синтаксисе чтобы точно понять как это использовать, подскажите пример на "пальцах" как это ограничение обойти.
Хорошо бы на ваш пример взглянуть.
Целые числа делите? 11-значное число это уже однозначно long.
К числу справа нужно добавлять L.
long val
val = 12345678123L/2345678L
val можно потом привести к int
int ival
ival = int(val)
Вообще я начал пользоваться инсталлятором ещё с 'CreateInstall 2000', мне как-то он сразу понравился и мне с ним удобно работать. И за это время у меня возникли вполне обычные и логичные требования к инсталлятору (как мне кажется) некоторые возможности понемногу были реализованы и при сочетании текущих возможностей можно реализовать разные не стандартные задачи. Некоторые так и не были сделаны и я использую дополнительные решения и программы и постоянно приходится что-то изобретать, не буду же я с каждой своей прихотью приставать к разработчикам.
Но некоторые возможности я думаю, нужны не мне одному и почти все реализованы по разному в других инсталляторах. Перечислю некоторые необходимые возможности, которые мне кажется не помешали бы инсталлятору (некоторые из них были уже каким-то не стандартными способами реализованы):
1) Получения всех дисков на компьютере, получение их типов.
2) Получение общего размера и свободного места на дисках, и желательно по выбору в Мб, Гб.
3) Возможность получения и проверки CRC, MD5 и подобного для файлов.
4) Возможность удаление только пустых ключей реестра.
5) Возможность распаковки архивов с паролем, да и разных форматов с учетом того что библиотека 7z поддерживает многие форматы.
6) Возможность создания архивов, включая с паролем.
7) Конвертирование текста или файлов UTF <> ANSI, сейчас я думаю это очень актуально с учет того что инсталлятор не работает с UTF (вот к примеру тут даже исходники есть http://safonnikov.name/projects/show.php?p=utf8rus&for=pc)
8) Возможность импортировать REG файл, указанный в процессе установке/удалении, а не только при создании инсталлятора.
9) Добавление программ в Брандмауэр Windows (Firewall) к примеру, через стандартную программу netsh.exe
Я понимаю, что в инсталляторе используется Gentee с полноценной функциональностью языка программирования, но в этом и цель инсталлятора, чтобы не заниматься программированием с нуля.
У меня нет желания, возможности и необходимости полноценного изучения Gentee, для моих задач полностью хватает CreateInstall не только для создания инсталляторов, но и для создания полноценных программ которые мне нужны.
Я в своё время освоил ассемблер, PHP просто для себя без глобальных задач, и это было очень просто благодаря не гениальным учебникам "великих гениев", а простым и коротким примерам обычных людей по которым понятна вся логика и синтаксис. При попытке немного разобраться в так называемых языках высокого уровня, куча абстрактного мусора с бессмысленной идеологией программирования, вместо простых и понятных примеров. Gentee из той же области, чтобы выполнить раз в год какую-то простую задачу нужно перечитать кучу ненужного в справке по языку, в место того чтобы разобрать простой пример и взять из него элементарное.
==========
А что касается 11 значных чисел это как раз относится ко 2 пункту после всех моих вопросов и ваших ответов получилось то что нужно для полноценной работы с дисками.
==========
И спасибо за хорошую программу и С новым годом!
Спасибо за пожелания.
Что-то будет реализовано раньше, что-то позднее.
Например пункты 5 и 6 относятся к работе внешнего архиватора. Не знаю насколько лигоично это все встраивать в инсталлятор.
По пункту 8 можно конечно расширить опции команды, но вы можете запускать в процессе установки regedit.exe /s указав нужный файл.
Спасибо.
Что касается работы с архиваторами, то что касается пароля то это один из простых способов реализовать проверку целостности файлов, например если инсталлятор при установки скачивает последнюю версию файлов из интернета для установки в архиве, то проверка правильности загрузки была бы простой распаковкой из архива файла-метки и проверкой его наличия, прежде чем начинать распаковку всего архива особенно если он большой.
И очень часто удобнее хранить файлы в отдельном архиве и при установке распаковывать его, чем включать его в сам инсталлятор и копировать его во временную папку и потом распаковывать, и совсем не желательно, чтобы этот архив можно было изменять и лазить в нем.
А создание архивов удобно для создания бэкапов, особенно если много файлов нужно резервировать при установке.
Здравствуйте.
Снова возник вопрос, есть ли возможность получить в исходном коде день недели числом или названием.
Можно например так
datetime dt
uint dow
dt.gettime()
dow = dt.dayofweek()
dow - это день недели - счет идет с 0 и воскресенья.
0 - воскресенье, 1 - понедельник...
Большое спасибо.
Здравствуйте.
Опять вопрос, который давно хотел задать, но все вылетало.
При выборе пути установке в диалоге 'Диалог - Путь установки' имя папки автоматом добавляется в конце при выборе, как это можно реализовать в диалоге 'Диалог - Установки' при выборе папки и сетевой папки.
Сейчас нормального решения нет. Нужно перехватывать обработчик событий спомощью определения Additional Variables
Variable name: Dfunc
Value: mydlgsetscmdproc
И опрделять mydlgsetscmdproc s Исходном коде с отмеченным External code.
func uint mydlgsetscmdproc( uint wnd id ctl codedlg )
{
if id >= $SOFF_BTN && id < $SOFF_COMBO
{
str folder
uint edwnd nidl
edwnd = GetDlgItem( wnd, id - $SOFF_BTN + 1 + $SOFF_EDIT )
win_gettext( edwnd, folder )
nidl = macrox_getint( "setsnidl\(id - $SOFF_BTN)" )
if browsefolder( wnd, nidl, "", folder ) {
folder.faddname( "My Folder" )
win_settext( edwnd, folder )
}
return defcmdproc( wnd, id )
}
return dlgsetscmdproc( wnd, id, ctl, codedlg )
}
Можно посмотреть исходники cmds\sources\dlgsets.g и dlgpath.g
Спасибо, отлично получилось.
Здравствуйте. Возникло очередное пожелание.
При создании сервиса происходит его автоматический запуск, я посмотрел это в исходниках прописано.
Но хотелось бы чтобы автоматического запуска не происходило, только установка, запуск при необходимости можно выполнить командной, а так происходит запуск сервиса автоматически когда это совсем не нужно.
Где это там прописано? Подскажите какие параметры нужно изменить, чтобы запуска не было.
Файл: cmds\sources\service.g
Код установки сервиса:
=========================
func uint installservice( str filename name display desc, uint servtype )
{
macrox_do( filename )
macrox_do( name )
macrox_do( display )
macrox_do( desc )
if !isservice( name )
{
if createservice( filename, name, display, desc,
$SERVICE_WIN32_OWN_PROCESS, servtype )
{
Sleep( 1000 )
startservice( name )
return 1
}
}
return 0
}
=========================
Команда, которая запускает сервис после установки: startservice( name )
Если её убрать, то сервис автоматически не запускается после установки.
Или я что не так понял?
Теперь ясно. Мы переделаем команду, чтобы была возможность не запускать сразу и скину вам на email. В течении пары дней.
Попробуйте скачать и установить версию 6.2.0.
http://www.createinstall.com/downloads/ci-setup.6.2.0.exe
Мы добавили там в команду создания сервиса чекбокс 'Не запускать сервис'. Отметьте его.
Спасибо. Все как надо стало.
Здравствуйте.
Отлично что появилась возможность 'Вычислить хэш' и тут сразу возникло маленькое пожелание добавить возможность сразу выбирать в каком регистре получать хэши ВЕРНЕМ или нижнем, что бы не добавлять лишную команду 'Изменения переменной'.
И в дополнение, а есть ли возможность добавить таким же образом получение хэша строк, переменных.
Я добавил чекбокс 'Верхний регистр' для такой
возможности и выслал вам на email два файла.
Что касается хэша переменных, то подумаем как сделать. Пока есть возможность только через промежуточный файл находить хэш.
Спасибо.
По поводу хэша строк, с файлом это понятно, но промежуточный файл не всегда желателен, я пока использую как решение, часть кода которая используется для хранения пароля в createinstall.
Основная идея этого это хранить хэшободобные данные текста, исходный текст которого не нужно знать, например при установке задаётся пароль для удаления и хэш очень для этого подходит.
Посмотрим, может к следующему обновлению сделаем.
И снова здравствуйте. Я тут заметит такую особенность или проблему с 5-й версии начиная.
При запуске инсталлятора во временной папки windows создается файл 'genteert.dll' (что это понятно библиотека Gentee), но если запустить 2-й инсталлятор (любой другой файл установки) в момент закрытия предыдущей, то этот файл удаляется и 2-я установка выдает сообщение с ошибкой открытия файла 'genteert.dll'. К примеру, если один инсталлятор при завершении установки и выходе в конце запускает другой инсталлятор.
Файл удаляется не всегда и соответственно ошибка появляется не всегда, но очень, очень часто.
И к стати если просто запустить инсталлятор и нормально завершить установку программы то этот 'genteert.dll' остается во временной папке, это не критично он не большой но.
В 4 версии подобный файл создавался во временной папки установки и соответственно такой ошибки не было.
И поэтому возникает вопрос, а нельзя ли сделать, чтобы файл создавался во временной папки установки, чтобы избежать такой проблемы.
Попробуйте в самом конце первого установщика поставить паузу например в секунду.
Вставьте команду Исходный код
sleep(1000)
Я так и сделал. Просто я подумал что если, например выйдет новая версия createinstall которая будет использовать другую версию Gentee то получится конфликт, при запуске из-за разных версий.
Подумаем, может эту паузу сделаем по умолчанию после окончания любой установки. Конфликта с новыми версиями не будет. Если будут новые версии, то там будет совместимость. Если вдруг совсем что-то новое будет, то файл будет видимо по другому называться.
Понятно.
Вспомнил ещё один момент. При использовании 'Диалог -Установки' есть возможность сделать не активным пункт (приставка _dis), а вот полностью скрывать элементы нет возможности. Очень часто это нужно и приходится создавать несколько диалогов с небольшими отличиями, чтобы скрывать элементы.
Использование в 'Дополнительных опциях' команд 'H:...' и подобных не работает при использовании добавленных элементов в 'Диалог -Установки'.
Мне кажется, что логичным было бы добавить при создании каждого элемента пункта 'Условие:' это самый универсальный и удобный пункт в 'Диалог - Дерево' это реализовано.
Возможно ли это сделать?
Добавили поле Условие для каждого элемента в Диалог Установки.
Скачайте dlgsets.zip здесь
http://yadi.sk/d/1ofmh7FMLyESB
dlgsets.gt скопируйте в cmds\cmds\dialogs, a
dlgsets.g в cmds\sources поверх сушетсвующих файлов.
Большое спасибо.
Здравствуйте.
Снова возник вопрос.
На сколько я понял createinstall не может работать с протоколом HTTPS. Если ли возможность его добавить без существенных вложений.
Сами мы его реализовывать не будем, если есть готовые примеры для загрузки по https, например через COM объекты в Internet Explorer, то такую возможность можно добавить.
А так попробуйте поискать готовые консольные exe для запросов через https, может есть.
Хорошо понятно, что по простому это не получится.
Я заметил такую особенность. При использовании 'Диалог - Установки' элементов 'Радиокнопка' не возможно в одном диалоге создать несколько независимых разделов (блоков) типа 'Радиокнопка' с разными макросами, даже если макросы указаны разные то все равно все элементы 'Радиокнопка' связаны при выборе.
Можно ли как-то сделать чтобы можно было создавать независимые блоки с элементами 'Радиокнопка' в одном диалоге.
Я думаю можно было бы сделать что если макрос имеет одинаковое начало до какого-то разделителя например '_', и к примеру 'setting_' это один блок элементов типа 'Радиокнопка', а макрос 'home_' уже относится к другому независимому блоку.
Не работает получение подстроки в изменении переменных по смещению и длине. Так как я на ранней стадии изучения языка, ошибку в исходнике найти пока не в состоянии. Проверьте, пожалуйста.
Да, есть ошибка.
Откройте в любом редакторе файл cmds\cmds\vars\modifyvar.gt
Найдите там
<subst label=substr>$MODT_SUBSTR</> - это должна быть 46 строчка.
и добавьте там 'r' к subst, вот так
<substr label=substr>$MODT_SUBSTR</>. Сохраните файл и
запустите CreateInstall, заново установите это действие в команде.
Как всё просто оказалось. Спасибо!
Скажите, пожалуйста, будет ли поддержка FTP?
FTP можно и сейчас использовать.
В команде исходный код (отмечен Внешний код) подключаете ftp.g, который находится в cmds\libs\ftp
include : $"$exepath$\cmds\libs\ftp\ftp.g"
В других командах Исходный код можно использовать функции библиотеки
http://www.gentee.ru/lib/ftp/index.htm
Подскажите, пожалуйста, можно ли задавать параметры фоновых и Popup окон?
Интересует возможность установки:
1) размера окна;
2) положения окна относительно угла рабочего стола;
3) отображения поверх всех окон;
4) отсутствия заголовка окна и его рамки (как у Popup).
>1) размера окна;
У popup окон размер считается автоматически, а обычных окон он фиксирован, но двигать и менять размеры можно
http://www.createinstall.ru/help/move-resize-controls.html
>2) положения окна относительно угла рабочего стола;
У обычных окон смотрите по ссылке выше, для popup штатной возможности нет.
>3) отображения поверх всех окон;
Окна показываются только так как положено системой. В принципе, исходники самого установщика открыты /cmds/libs и /cmds/sources
можно там что-то менять, но мы сами подобную возможность вводить пока не собираемся.
>4) Аналогично третьему пункту - вводить не планируем.
Здравствуйте.
Заметил на днях такую ошибку:
D Windows Server 2003/2008/2008R2 32bit/64bit папка 'WINDOWS' макрос #winpath# определяется неправельно как 'C:\Users\Имя пользователя\WINDOWS'
#fontpath#, #syspath# работает правильно.
Это не ошибка. Это такой путь возвращает GetWindowsDirectory.
Вот что я например нашел на сайте Microsoft
=================
На сервере Windows NT, Terminal Server Edition GetWindowsDirectory() API должен возвратить домашнюю папку пользователя, не реальные папки Windows. Real папку Windows защищена от записи для пользователей «обычная».
=================
Я думаю, для Windows Server тоже самое.
Попробуйте получить путь другим способом. Вставьте указанный текст в команду Исходный код, посмотрите, что она выведет на консоль.
str result
uint ptr
result.reserve( 512 )
ptr = result.ptr()
uint ids
if !SHGetSpecialFolderLocation( 0, 0x24, &ids )
{
ustr uptr
uptr.reserve( 1024 )
SHGetPathFromIDList( ids, uptr.ptr() )
uptr.setlenptr()
result = uptr
CoTaskMemFree( ids )//imalloc_free( ids )
}
print( result.setlenptr().fdelslash())
Также попробуйте что-нибудь скопировать или записать из/в C:\Users\Имя пользователя\WINDOWS, там может стоять обычный редирект, но чтение или запись будут работать.
Код выдаёт:
C:\Users\Имя пользователя\WINDOWS
При попытки записи и чтении работает именно с
C:\Users\Имя пользователя\WINDOWS
Это на тупость смахивает в папку WINDOWS писать нельзя, а в WINDOWS\SYSTEM32 можно.
То есть по мнение гениев и mic... это гениальное решение.
Кто то же как-то получает этот путь.
Как варианта в таком случае я думаю придется для универсальности получать этот путь через получение системной переменой: SystemRoot
она вроде везде правильно получается.
Если syspath получает правильный путь, то можно взять родительскую папку и получить Windows путь.
Например, с помощью команды Modify Variable
Variable Name: tmp
Initial Value: #syspath#
Action: Get [Filename]
Additional parameter: winpath
Или в команде Исходный код
macrox_setstr("winpath", "".fgetdir( macrox_do("#syspath#")))
Нам нужно пожалуй добавить по умолчанию такое определение winpath для Windows Server.
Здравствуйте!
На Win7 неверно определяется Предопределенная переменная 'rootdrive'.
Какое у нее значение показывается и какое, по вашему мнению, должно быть?
Прошу прощения, это видимо был какой-то временный сбой. Сейчас переменная 'rootdrive' определяется как надо.
P.S. Предопределенная переменная 'rootdrive' - Имя диска (например C:) с Windows.
ИМХО, понять это определение правильно совсем нетрудно. :)
Сейчас другая проблема. Почему-то при распаковке архива '.7z' инсталлятор распаковывает один файл (без потерь и ошибок) и "падает" с предложением отправить отчёт в Microsoft. Причём, если в конечном пути файл уже существует и его замену пропустить, распаковывается следующий файл из того же архива и инсталлятор "падает"... Пробовал распаковывать разные архивы и разную технологию сжатия - исход один и тот же.
Я в недоумении, потому что 2 недели тому назад распаковка работала на отлично.
Проверили, сейчас у себя, на наших тестах работает.
Сделайте какой-нибудь минимальный проект с минимальным 7z где эта ошибка проявляется и пришлите ссылку на скачивание .ci проекта и 7z файла на info@createinstall.com с темой CreateInstall. Если файлы небольшие, то можете просто прикрепить их к письму.
Ну и еще сообщите на какой версии Windows запускаете.
Выслал, а потом подумал...
А не может ли эта ошибка происходить из-за того, что на работе стоит оплаченная Полная версия, а дома для тестирования на виртуалке я использую пробную?
Исправили ошибку. Она была связана с распаковкой
7z вне команды Диалог - Прогресс.
Мы выслали вам 7zdecode.g файл, скопируйте его в
поддиректорию CreateInstall cmds\sources поверх существующего и создайте вашу установку заново.
Данный багфикс будет также в ближайшей версии, которую планируем на этой неделе.
Чудно! Спасибо большое! Теперь я понял, почему раньше работало.
Сначала проект был с диалогами (для упрощения анализа совершённых действий и правильности их выполнения), а потом я перенёс всё в popup окно...
Здравствуйте.
Возникло ещё пожелание (дано назревало).
При использовании команды 'Установить переменные' переменной присваивается указанное значение, а если ли возможность добавить пункт при включении которого будет получаться значение указаннойпеременной, то есть чтобы присваивалось не указанное значение, а если это макрос его содержимое.
сообщение случайно отправилось... дополню.
При использовании команды 'Установить переменные' переменной присваивается указанное значение, а если возможность добавить пункт при включении которого будет получаться значение указанной переменной, то есть чтобы присваивалось не указанное значение, а если это макрос его содержимое.
Это можно делать через исходный код, но если есть команда почему бы не использовать её.
И ещё есть ли возможность добавить запрос прав Администратора непосредственно при работе инсталлятора, а не при запуске и если права не получены выходить или выполнять нужные команды. Иногда просто права нужны на некоторые операции которые могут быть и не выбраны при установке и тогда не стоило их и запрашивать в начале.
>При использовании команды 'Установить переменные' переменной присваивается указанное значение,
>а если возможность добавить пункт при включении которого будет получаться значение указанной переменной,
Ну так указывайте значение как #имяпеременной#.
Например,
Имя переменной: mypath
Значение: #setuppath#
Или вы что-то другое имеете в виду?
>И ещё есть ли возможность добавить запрос прав Администратора непосредственно при работе инсталлятора,
Насколько я знаю, права администратора присваиваются непосредственно при запуске. По крайней мере, я другого не встречал. В этом случае, нужно выносить действия требущие прав админа в отдельный setup и запускать его если необходимо из установки, которая без прав администратора.
1) При таком присвоении переменной если переменная mypath получает значение #setuppath# в начале, то если #setuppath# в процессе изменится, то mypath получит новое значение #setuppath#, то есть mypath=#setuppath# а не содержимому #setuppath#, а хотелось бы иметь возможность аналога:
macrox_setstr( "mypath", macrox_do("#setuppath#")) при это варианте присваивается именно значение #setuppath# и если #setuppath# изменится то mypath уже нет.
2) Я просто видел некоторые программы в процессе работы запрашивают повышения привилегий, но в детали не вдавался, просто поинтересовался.
1) Понял, сделаем в новой версии, которая планируется в ближайшие дни.
2) Насколько я знаю, там как раз запускаются другие приложения, которые требуют прав админа.
Предлагаю в следующий раз создать новую тему, а то здесь уже очень большой объем.
Здравствуйте.
Какая-то ошибка при создании новой темы, поэтому пока напишу здесь.
2) Возможно они сами себя перезапускают с параметрами, WinRar так делает при интеграцию.
Спасибо за новую версию, много хороших изменений. Возникли ещё пожелания.
При использовании команд 'Заменить текст' и 'Заменить внутри файлов' происходит замена не только указанного в команде текста, но и всех переменных, которые есть в тексте (файле) и они определены в самом инсталляторе, это не совсем удобно, хотелось бы возможность по выбору заменять только указанный текст без замены других переменных.
И раз появилась возможность получать хэши, на сколько я понял используются стандартный криптопровайдер Windows для SHA1, а можно ли используя стандартные возможности добавить возможность шифрования текста, просто небольших объемов текста, иногда нужно именно обратимое шифрование, например хранение паролей для создания архивов и в открытом виде как-то не удобно.
Стандартный криптопровайдер шифрования есть, начиная с 98-й и по идее проблем быть не должно.
И ещё, но некоторые возможности инсталлятора (и добавлю отличные) могут не работать в Windows 2000 и ниже, например мне удалось получить в 98SE/2000 только хэш SHA1, а CRC32 и MD5 выдают ошибку, созданный setup запускается с ошибкой, и соответственно 'Заменить переменную-Вычислить хэш' тоже не работает в них.
Насколько я понял при SHA1 используется стандартный криптопровайдер Windows, а для CRC32, MD5 импортируются функции из системных DLL, которых нет в 98SE/2000.
Наверное все что ниже XP не актуально уже, но мне кажется, что стоило бы в справке написать что некоторые возможности могут быть не доступные на устаревших версиях Windows, чтобы кто-то не начал по этой причине негативно высказываться в адрес программы, и подтолкнуло бы при необходимости проверять установщики на нужных старых версиях Windows.
Документацию по хэшам подправим.
Что касается шифрования, мы не сталкивались с ним и нужно разбираться. Я слышал, что там какие-то вещи не совсем совместимы, то есть зашифрованное на одной версии Windows может не расшифроваться на другой.
Последнее сообщение здесь, чтобы не терять суть общения.
На сколько я в курсе отличие CryptoAPI Windows зависит от максимальной длинны ключей шифрования и сочетания поддерживаемых алгоритмов. В Windows 98/2000 CryptoAPI уже есть, но он как бы слабый, вообще разговор не идет о супер стойком шифровании главное иметь возможность обратимого шифрования.
В принципе при использовании CryptoAPI Windows нет уникальности шифрования главное, чтобы Windows поддерживала режимы, при которых были зашифрованы данные ну и ключ шифрования знать.
Мне кажется, здесь есть несколько решений при использовании ключа для шифрования и чтобы работало на разных компьютерах с соответствующей версией Windows:
1) Универсальное шифрование - принудительно ограничить при вызове функций шифрования минимально поддерживаемые всеми Windows, начиная с 98-й вполне не плохое для этих задач шифрование получается.
2) Хорошее шифрование - вызов функции шифрования с определёнными параметрами на хорошее шифрование начиная с Windows XP все стандартно будет
3) Максимальное шифрование - вызов функции шифрования с параметрами по умолчанию тогда будет использоваться максимальное шифрование для текущей версии Windows, и зашифрованные данные могут быть расшифрованы только на Windows не ниже этой.
Посмотрев 'hash.g' в CreateInstall, у вас технически все для этого есть, нужно только немного параметры вызова изменить, ну и добавить ограничение на размер текста для шифрования что бы не вызвать проблемы с переполнением если что.
И кстати для MD5 можно тоже, наверное, использовать вызов CryptoAPI как для создания SHA1, благо MD5 поддерживается тоже.
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.