Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#1: 2009-06-15 11:43:33 ЛС | профиль | цитата
Когда-то я на форуме задавал вопрос по реализации, но сделав уж ОЧЕНЬ нестабильную версию, забросил, а сейчас(сам себе удивился ) сел и за 10мин набросал схему даже более функциональную, чем старая(нестабильная). А сделал я ее, так как на svn перешел(т.е подключил обновление по svn + hiUpdate) -- надо было бы отказаться от нестандартных компонентов, заново их искать, а я просто "изобрел" updater, он программным путем добавил все необходимое с папки _Delphi в папку Delphi и все нестандартные компоненты снова у меня.
Принцип действия программы(если кто еще не понял):
1. Быстро сравнивает две папки на наличие файлов
2. Если некоторых фалов из папки "новых фалов" не хватает в папке "обновляемых файлов", то он их копирует(метод сравнения хеш-сумм не использован)
3. Папки так же автоматом добавляются, если в них есть файлы папки "новых фалов"(т.е если есть в папке *** какой-нибудь файл, то папка с файлом будет добавлена, а если нету файлов, то нет)
-на 4 странице улучшенная версия-
карма: 10
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#2: 2009-06-15 11:48:13 ЛС | профиль | цитата
Assasin писал(а):
и все нестандартные компоненты снова у меня

Да ладно, а базу кто править будет, на наличие, этих самых, "нестандартных" компонентов
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#3: 2009-06-15 11:52:25 ЛС | профиль | цитата
А это уже ручками Я уже поправил ее, хотя не очень то я знаю как поправить базу Elements.db программным путем. Да и вообще как извлечь... хотя понял, надо сравнить две базы(старую и новую) и "слить" их воедино. Но этого что-то делать не хочется, так как программа пока универсальна, а если сделаю, она предназначена будет в основном только для HiAsm и svn, не более.
карма: 10
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#4: 2009-06-15 11:58:18 ЛС | профиль | цитата
Assasin, самый простой выход, это создать *.his файл инсталлятора (делается на пакете Modules) и запихать все нужное в одну папку, типа: AddComp и туда же поместить *.his файл.
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#5: 2009-06-15 12:24:26 ЛС | профиль | цитата
Я не разу еще не пользовался пакетом Modules( ), и не понял как организовать поиск файлов в папке(не нашел такого компонента в палитре). А вообще подскажите, что не так я решил:
Процесс регистрации: Поиск файлов с расширением ini во временной папке AddComponents, проверка наличия компонента в палитре, если нету его там, то добавить компонент в палитру. Вот я еще прикинул варианты, только не знаю, доступны ли они будут:
1. Через список строк, который создаст UpdaterForSVN(так я решил назвать новую прогу), затем запускает install.his. он грузит список из файла, созданного Updater-омForSVN, перечисляет этот список и проверяет наличие компонента в палитре, если нету, то добавит.
2. Через TCP(хотя такого компонента я тоже не нашел, да и идея безнадежна)
карма: 10
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#6: 2009-06-15 12:40:12 ЛС | профиль | цитата
Assasin писал(а):
Я не разу еще не пользовался пакетом Modules

В принципе, это совсем не обязательно. Создать файл *.his в пакете Windows проблем никаких.

Вот приблизительная структура файла *.his без заморочек с запросом на перезапись



function run()
{
if (sys.extelement("Delphi", "MTStrTbl"))
sys.delelement("Delphi","MTStrTbl");
else
sys.addelement("Delphi","MTStrTbl","MT таблица строк","WinControls");
}


Я тут условие добавил, так лучше и правильнее
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#7: 2009-06-15 12:56:33 ЛС | профиль | цитата
Ан-нет, я понял структуру построения схемы на замену определенного элемента, я пытаюсь понять каким образом можно задавать имена элементов в св-ах pack and name, для проверки его наличия, так как не хочется по сто раз запускать install.his, поэтому я и думаю, как заставить его с помощью hiasm(построить схему в нем, т.к. в скриптах я почти ничего не смыслю) список строк загрузить из файла или каким-нибудь образом получить его сразу весь, а не по одному файлу(хотя по одному тоже проблема)
У вас в скрипте видно, что добавляется MTStrTbl, а хотелось бы выбранное значение, его я могу поставить, но как заставить найти нужные ini файлы из папки которой он был запущен? Вот в этом у меня проблема.
карма: 10
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#8: 2009-06-15 13:08:02 ЛС | профиль | цитата
Assasin писал(а):
У вас в скрипте видно, что добавляется MTStrTbl

Но это же просто пример, че хочешь, то и ставь в FormatStr. А вытаскивать вкладки и названия все равно придется из базы
карма: 22

0
Ответов: 184
Рейтинг: 4
#9: 2009-06-15 13:08:42 ЛС | профиль | цитата
Когда-то пытался сделать пргорамму для обновления с SVN. Заготовка получилась не очень, хотя работала. Сомневаюсь, что это кому-нибудь поможет, но всё-таки: см. аттач.
карма: 1
Статус строка какая-то, сейчас посмотрім: %time%
0
файлы: 1svnupdate_.zip [18.3KB] [334]
Разработчик
Ответов: 4698
Рейтинг: 426
#10: 2009-06-15 13:18:02 ЛС | профиль | цитата
HuKTO, в вашей схеме я обнаружил такое... а мультиков сколько насоздовали(и везде они большие, даже огромные внутри, а компонентов не так уж и много), максимум пути это ROOTMultiElementExMultiElementExMultiElementExMultiElementEx
nesco, а куда ваш скрипт-то засунуть? в IC, VBS, VB&JS?
карма: 10
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#11: 2009-06-15 13:22:57 ЛС | профиль | цитата
Assasin писал(а):
а куда ваш скрипт-то засунуть? в IC, VBS, VB&JS?

В install.his на каждый крмпонент, кроме заголовка. Генератор самому писать надо из дискретных элементов, там делов-то...
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#12: 2009-06-15 13:25:27 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-21 12:48:18
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#13: 2009-06-15 16:08:12 ЛС | профиль | цитата
Assasin, короче, не тебе заготовку. Это то самый путь, о котором я говорил -- через *.his файл. В схеме читается база, затем выбираешь чеками, что надо и нажимаешь кнопку "Get his", на выходе получаешь готовый файл install.his. Копирование нужных файлов придумаешь сам
карма: 22

0
файлы: 1project_installcomp_001.sha [3.4KB] [260]
Ответов: 16884
Рейтинг: 1239
#14: 2009-06-15 17:20:31 ЛС | профиль | цитата
nesco, извини, но опять "каверзній", как ты говоришь, вопрос. Вот полдня сижу и ломаю голову: А зачем удаляем ?
Если для
nesco писал(а):
без заморочек с запросом на перезапись
то прийдется his запускать два раза? Совсем башка не варит. 32 по цельсию.
function run()
{
if (sys.extelement("Delphi", "MTStrTbl"))..................................................если компонент ЕСТЬ
sys.delelement("Delphi","MTStrTbl");..............................то удаляем его ???? зачем удаляем ????
else................................................................................................если компонента НЕТ
sys.addelement("Delphi","MTStrTbl","MT таблица строк","WinControls");.то добавляем
}

может Else выбросить, тогда будет работать за один проход.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:nesco
Разработчик
Ответов: 26151
Рейтинг: 2127
#15: 2009-06-15 17:26:31 ЛС | профиль | цитата
Да, действительно, че-то я лоханулся . Удалять-то желательно, а вот записать нужно обязательно. Мдааа...

Я поправил пример и убрал еще кое-чего лишнего
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)