Когда-то я на форуме задавал вопрос по реализации, но сделав уж ОЧЕНЬ нестабильную версию, забросил, а сейчас(сам себе удивился ) сел и за 10мин набросал схему даже более функциональную, чем старая(нестабильная). А сделал я ее, так как на svn перешел(т.е подключил обновление по svn + hiUpdate) -- надо было бы отказаться от нестандартных компонентов, заново их искать, а я просто "изобрел" updater, он программным путем добавил все необходимое с папки _Delphi в папку Delphi и все нестандартные компоненты снова у меня.
Принцип действия программы(если кто еще не понял):
1. Быстро сравнивает две папки на наличие файлов
2. Если некоторых фалов из папки "новых фалов" не хватает в папке "обновляемых файлов", то он их копирует(метод сравнения хеш-сумм не использован)
3. Папки так же автоматом добавляются, если в них есть файлы папки "новых фалов"(т.е если есть в папке *** какой-нибудь файл, то папка с файлом будет добавлена, а если нету файлов, то нет)
-на 4 странице улучшенная версия-
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
карма: 10 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Assasin писал(а): и все нестандартные компоненты снова у меняДа ладно, а базу кто править будет, на наличие, этих самых, "нестандартных" компонентов |
|||
карма: 22 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
А это уже ручками Я уже поправил ее, хотя не очень то я знаю как поправить базу Elements.db программным путем. Да и вообще как извлечь... хотя понял, надо сравнить две базы(старую и новую) и "слить" их воедино. Но этого что-то делать не хочется, так как программа пока универсальна, а если сделаю, она предназначена будет в основном только для HiAsm и svn, не более.
|
|||
карма: 10 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Assasin, самый простой выход, это создать *.his файл инсталлятора (делается на пакете Modules) и запихать все нужное в одну папку, типа: AddComp и туда же поместить *.his файл.
|
|||
карма: 22 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Я не разу еще не пользовался пакетом Modules( ), и не понял как организовать поиск файлов в папке(не нашел такого компонента в палитре). А вообще подскажите, что не так я решил:
Процесс регистрации: Поиск файлов с расширением ini во временной папке AddComponents, проверка наличия компонента в палитре, если нету его там, то добавить компонент в палитру. Вот я еще прикинул варианты, только не знаю, доступны ли они будут: 1. Через список строк, который создаст UpdaterForSVN(так я решил назвать новую прогу), затем запускает install.his. он грузит список из файла, созданного Updater-омForSVN, перечисляет этот список и проверяет наличие компонента в палитре, если нету, то добавит. 2. Через TCP(хотя такого компонента я тоже не нашел, да и идея безнадежна) |
|||
карма: 10 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Assasin писал(а): Я не разу еще не пользовался пакетом ModulesВ принципе, это совсем не обязательно. Создать файл *.his в пакете Windows проблем никаких. Вот приблизительная структура файла *.his без заморочек с запросом на перезапись
Я тут условие добавил, так лучше и правильнее |
|||
карма: 22 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Ан-нет, я понял структуру построения схемы на замену определенного элемента, я пытаюсь понять каким образом можно задавать имена элементов в св-ах pack and name, для проверки его наличия, так как не хочется по сто раз запускать install.his, поэтому я и думаю, как заставить его с помощью hiasm(построить схему в нем, т.к. в скриптах я почти ничего не смыслю) список строк загрузить из файла или каким-нибудь образом получить его сразу весь, а не по одному файлу(хотя по одному тоже проблема)
У вас в скрипте видно, что добавляется MTStrTbl, а хотелось бы выбранное значение, его я могу поставить, но как заставить найти нужные ini файлы из папки которой он был запущен? Вот в этом у меня проблема. |
|||
карма: 10 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Assasin писал(а): У вас в скрипте видно, что добавляется MTStrTblНо это же просто пример, че хочешь, то и ставь в FormatStr. А вытаскивать вкладки и названия все равно придется из базы |
|||
карма: 22 |
|
Ответов: 184
Рейтинг: 4
|
|||
Когда-то пытался сделать пргорамму для обновления с SVN. Заготовка получилась не очень, хотя работала. Сомневаюсь, что это кому-нибудь поможет, но всё-таки: см. аттач.
|
|||
карма: 1 |
| ||
файлы: 1 | svnupdate_.zip [18.3KB] [334] |
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
HuKTO, в вашей схеме я обнаружил такое... а мультиков сколько насоздовали(и везде они большие, даже огромные внутри, а компонентов не так уж и много), максимум пути это ROOTMultiElementExMultiElementExMultiElementExMultiElementEx
nesco, а куда ваш скрипт-то засунуть? в IC, VBS, VB&JS? |
|||
карма: 10 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Assasin писал(а): а куда ваш скрипт-то засунуть? в IC, VBS, VB&JS?В install.his на каждый крмпонент, кроме заголовка. Генератор самому писать надо из дискретных элементов, там делов-то... |
|||
карма: 22 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-21 12:48:18 |
|||
карма: 0 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Assasin, короче, не тебе заготовку. Это то самый путь, о котором я говорил -- через *.his файл. В схеме читается база, затем выбираешь чеками, что надо и нажимаешь кнопку "Get his", на выходе получаешь готовый файл install.his. Копирование нужных файлов придумаешь сам
|
|||
карма: 22 |
| ||
файлы: 1 | project_installcomp_001.sha [3.4KB] [260] |
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, извини, но опять "каверзній", как ты говоришь, вопрос. Вот полдня сижу и ломаю голову: А зачем удаляем ?
Если для nesco писал(а): без заморочек с запросом на перезапись function run()
{ if (sys.extelement("Delphi", "MTStrTbl"))..................................................если компонент ЕСТЬ sys.delelement("Delphi","MTStrTbl");..............................то удаляем его ???? зачем удаляем ???? else................................................................................................если компонента НЕТ sys.addelement("Delphi","MTStrTbl","MT таблица строк","WinControls");.то добавляем } может Else выбросить, тогда будет работать за один проход. |
|||
карма: 25 |
| ||
Голосовали: | nesco |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Да, действительно, че-то я лоханулся . Удалять-то желательно, а вот записать нужно обязательно. Мдааа...
Я поправил пример и убрал еще кое-чего лишнего |
|||
карма: 22 |
|