|
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
|
|
Сбой в последовательности выполнения действий установщика SIM29.05.2015, 16:20. Показов 702. Ответов 1
Метки нет (Все метки)
Коллеги, помогите разобраться с следующей аномалией:
1. С помощью SIM создаю пакет установки приложения 2. В пакет включаю маленькую утилиту, которая проверяет в реестре, установлено ли приложение в системе 3. Если приложение установлено, утилита запускает деинсталлятор (чтобы поставить обновлённую версию начисто) 4. В проекте SIM утилита указана к запуску ПЕРЕД распаковкой и с флагом "Ждать окончания" 5. При запуске инсталлятора утилита выводит предложение удалить старую версию, но в момент ожидания ответа пользователя, кажется, основной поток перехватывает управление, в результате инсталлятор сначала распаковывает файлы в каталог приложения, а потом уже запускается деинсталлятор.
0
|
|
| 29.05.2015, 16:20 | |
|
Ответы с готовыми решениями:
1
Использование оператора switch для выполнения последовательности действий как в С++ Сбой выполнения длительного запроса Порядок выполнения действий |
|
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
|
|
| 02.06.2015, 16:54 [ТС] | |
|
В общем, аномалия была в голове уставшего быдлокодера.
С позиции логики, SIM делает всё верно. Ведь выполнить запакованный файл до распаковки это как выпить пиво до открытия бутылки. Итак, возможно кто-то ещё столкнётся с подобной задачей. Задача Перед установкой программы проверять, не установлена ли уже другая версия программы и при положительном результате удалять её. Реализация В проект добавлена предустановочная утилита, проверяющая в реестре секцию "Uninstall" на присутствие устанавливаемой программы предыдущих версий. При наличии вхождений, запускает стандартный деинсталлятор. Проблема При создании инсталлятора если предустановочная утилита находится в архиве с основной программой, запуск утилиты возможен только после распаковки файлов, когда в каталог установки уже распакованы файлы заново устанавливаемой программы, которые успешно удаляются утилитой, причём дважды (т.к. в реестре сохраняются записи о двух версиях программы). Костыль Основной инсталлятор программы компилируется без предустановочной утилиты. Основной инсталлятор инкапсулируется во вторичный инсталлятор, в котором и располагается утилита. Вторичный инсталлятор конфигурируется на скрытую установку, пользователь его не видит. Вторичный инсталлятор распаковывает файлы во временную папку, после чего последовательно запускает предустановочную утилиту и основной инсталлятор соответственно. Без проблем жить скучно После установки программы нужно почистить где насорили, а именно вторичный инсталлятор. Он сохранил файлы во временной папке и внёс записи в реестр. Вызывать ещё один стандартный деинсталлятор неэтично и даже в какой-то степени аморально по отношению к пользователю. Добавлено через 2 часа 4 минуты UPD Но всё же стандартными средствами SIM удалось скрыть зачистку вторичного инсталлятора. Команда запуска основного инсталлятора запускается с ключём "Ожидать завершения", так что следующая по списку команда будет выполнена после выхода из основного инсталлятора. Именно в эту команду и помещаем %InstallPath%\Uninstall.exe с параметром /s, что означает скрытый запуск. С точки зрения пользователя, установщик работает как "Большая красная кнопка". Задача решена, спасибо всем откликнувшимся
2
|
|
| 02.06.2015, 16:54 | |
|
Помогаю со студенческими работами здесь
2
Скорость выполнения Действий Поочередность выполнения действий Программа для выполнения действий Замедление выполнения действий в цикле Замедление выполнения действий в боте Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|