Просмотр темы форума
Тема: Как создать инсталляцию патчей для различных приложений?
Добрый день!
Подскажите,как создать инсталляцию патчей для различных приложений?
То есть, стоит задача сделать инсталляцию, которая позволит автоматически находить установленные приложения и устанавливать в них патчь:
1.) Пользователю выбрать, что из пакета ему устанавливать а что нет.(всего 8 пунктов)
2.1 ДЛЯ КАЖДОГО ИЗ ПУНКТОВ, находить у пользователя на компьютере папку с установленной программой, (названия приложения и запускаемого файла есть). То есть, не выбрать папку а автоматически.
2.2 распаковать в неё нужные папки и файлы.
2.3 для одного из файлов, создать ярлык на рабочий стол
2.4 Для одного из патчей, установить на компьютер библиотеку, (в данном случаи Dokan, которая после установки требует перезагрузку компьютера)для работы данного патча.
Возможно ли это все реализовать в данной программе, не имея глубоких познаний, в написании скриптов?
По текущим данным сделать можно. Вставляете команду Диалог - Список чекбоксов или Диалог - Опции. Определяете там ваши 8 чекбоксов. Если будете использовать Диалог - Опции, т оразмещайте чекбоксы в 2 колонки. К каждому чекбоксу определяете свою переменную, которую будете использовать в других командах. Если чекбокс был отмечен, то она равна 1. Далее для каждого из варианта вставляете Конструкция ЕСЛИ и указывайте там соответствующую переменную. Внутри вставляете Поиск файлов и директорий, команду Установочные файлы, команду создания ярлыка.
В одном случае еще добавляете установку библиотеки.
Все эти Конструкции ЕСЛИ можно вставить внутрь Диалога - Прогресс. Чтобы отображался ход установки.
Это в общих чертах все. Если будут трудности, то присылайте рабочий .ci проект на info @ createinstall.com с темой CreateInstall, поможем.
Спасибо, а можно хоть какой-то пример рабочий?
Что бы инсталляция искала в компе пользователя установленную программу (например Photoshop.exe, который может быть установлен куда угодно) и в рабочий каталог этой программы добавляла файлы и папки.
Мы как правило только помогаем решить проблемы в проектах. Ну или если работы по корректировке мало, то можем что-то и сделать, но это на конкретных проектах. Создание проектов под заказ идет отдельной услугой.
В вашем случае, создайте новый проект. Перейдите на закладку Install Script.
1. В начале вставьте команду Popup Window
Popup Text or Image File: Searching photoshop.exe. Wait for some minutes...
2. Внутрь этой команды вставьте команду Search for Files & Folders.
Filename or Wildcard: photoshop.exe
Variable Name: curfile (или любое другое имя)
Recursive Search: checked
Only search for Files: checked
3. Ниже команды Popup Window добавьте команду If Statement
Variable Name: curfiledir
Comparison: Empty/Zero
4. Внутрь If Statement вставляете команду Exit/Reboot
Error message: Photoshop has not been found!
То есть photoshop не найден - выходим
5. Ниже If Statement вставляете Message
Text: #curfiledir#
Вам покажется найденная директория. Переменная curfiledir содержит директорию к найденному файлу.
Это вот простейший пример. У меня это заняло буквально пять минут.
Огромное СПАСИБО!
Поиск директории для установки понял, если можно, то подскажите ещё пару моментов. Для примера, делаю установку для двух приложений и библиотеки.
(выслал проект на info@createinstall.com с темой CreateInstall prog plugins)
1.) Как мне добавить чекбоксы, для выбора что ставить, а что нет?
2.) Для установки первого приложения в найденную директорию, я в проект/ путь установки, ставлю переменную #curfiledir#, как мне сделать что бы второе приложение ставилось в #curfile2dir# ?
3.) И последний вопрос, во втором случаи, CorelDRW.exe находится по пути
C:\Program Files\Corel\CorelDRAW Graphics Suite X4\Programs
а плугины находятся на уровень выше.
C:\Program Files\Corel\CorelDRAW Graphics Suite X4\Plugins
как правильно указать директорию установки в данном случаи?
Я внес изменения в проект и отправил его вам на email. Посмотрите.
1) Можно использовать Dialog - Settings
2) Я переопределил setuppath в каждом случае.
Другой путь - можно переопределять имя переменной для
Dialog - Setup Path, но в этом случае нужно будет менять и
пути установки в Installation Files.
3) Добавил команду Source Code которая это делает.
str plugdir
plugdir.fgetdir( macrox_do( "#curfile2dir#" ))
plugdir.faddname( "Plugins" )
macrox_setstr( "curfile2dir", plugdir )
Огромное СПАСИБО!
Еще несколько вопросиков, если Вас не затруднит.
1.) Если я ставлю "установить переменные" (Set Variables) и ставлю setuppath = #curfiledir# Это и будет определять, куда устанавливать данный патчь? Если да, то нужно ли мне указывать в ПРОЕКТ/ПУТЬ УСТАНОВКИ, #curfiledir# ?
2.) К примеру: Если делаю установку для 6 плагинов, все с Чекбоксами, но на второй (если его конечно выберут и поставят чекбокс) ещё нужно 3мя радиокнопками выбрать какой именно ставить. Как их привязать?
1) В этом случае путь установки в Проект - Путь установки не нужно.
2) Можно под этим чекбоксом разместить три радиокнопки со сдвигом вправо. Для каждой радиокнопки привязывается своя переменная. Можно вместо радиокнопки использовать выпадающий список. В этом случае, переменная будет одна и три различных значения. Если нужно, чтобы если чекбокс не выделен, то радиокнопки были неактивные, то нужно устанавливать свою функцию обработки. Я как раз выложил пример. Скачайте и посмотрите его.
http://www.gentee.com/phpbb/viewtopic.php?f=13&t=2399
Здравствуйте!
В ходе знакомства с диалоговыми функциями у меня возник вопрос.
Как быть с множеством однотипных функций? Можно ли их писать массивом, а где нужно - индексы расставлять?
Что-то вопрос не совсем понятен. Объясните подробнее или привидите пример. Можно написать на info@createinstall.com с темой 'CreateInstall'.
К примеру, вот рабочая "вырезка" (отсюда: http://www.createinstall.ru/help/custom-dialog-function.html )
--------------------------------------------------------
func myenable( uint wnd )
{
uint first = wcheck_get( GetDlgItem( wnd, $CHECK1 ))
win_enable( GetDlgItem( wnd, $EDIT1 ), first )
}
func uint mydlgsetscmdproc( uint wnd id ctl codedlg )
{
switch id
{
case $CHECK1
{
if codedlg == $BN_CLICKED : myenable( wnd )
}
case $DLGINIT
{
uint ret = dlgsetscmdproc( wnd, id, ctl, codedlg )
myenable( wnd )
return ret
}
}
return dlgsetscmdproc( wnd, id, ctl, codedlg )
}
--------------------------------------------------------
Но, кроме CHECK1 и EDIT1, есть CHECK2 и EDIT2.
Вопрос. Для CHECK2 и EDIT2 необходимо писать новую функцию, или же можно описать всё в одной?
Связи между ID CHECK и EDIT нет, поэтому в данном случае проще написать отдельную функцию для каждого.
Если функции более сложные и элементов больше, то можно ID передавать в виде параметров, типа:
unc myenable( uint wnd check edit )
{
uint first = wcheck_get( GetDlgItem( wnd, check ))
win_enable( GetDlgItem( wnd, edit ), first )
}
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.