После прерывания установки, если я пытаюсь установить снова, программа установки все еще указывает на старый путь
Я пытаюсь установить установщик, разработанный с использованием InstallShield 2008. При установке после выбора пути назначения я отменяю установку.
Когда я пытаюсь установить снова по умолчанию, он выбирает путь назначения как ранее указанный путь, который был указан перед прерыванием установки.
И также это не позволяет мне устанавливать по другому пути.
Например:
* Шаг 1: установка начинается
Шаг 2: Путь назначения как C:\Installer
Шаг 3: Нажмите "Далее" и прервите установку
Шаг 4: Запустите установку снова
Шаг 5: Укажите другой путь назначения как C:\Installer1*
Здесь установка не удалась. Потому что пункт назначения все еще указывает на шаг 2
Мой вопрос, откуда установщик берет старый путь.
1 ответ
Постоянный путь: технические детали кажутся относительно простыми: старый путь считывается либо из реестра, либо с диска каждый раз, когда запускается установка, а настраиваемое действие в последовательности графического интерфейса установки должно сохранять путь "где-то" во время Первый запуск (это ошибочный дизайн, см. технический комментарий ниже). Считать значение можно с помощью AppSearch (встроенная функция MSI) или с помощью специального действия.
Реестр / диск: как найти значение, из которого читается значение. Проще всего будет сначала выполнить поиск в реестре по буквальному пути. Просто открой regedit.exe
и искать путь там. Вы также можете найти пользовательское действие, которое выполняет сохранение (или AppSearch или пользовательское действие, которое выполняет поиск) и посмотреть, является ли это сценарий с кодом, который вы можете увидеть - тогда вы сможете увидеть, где он сохранил путь, Используйте Orca или аналогичный инструмент для просмотра таблицы пользовательских действий. Настраиваемое действие также может быть скомпилировано и не расшифровано. У вас есть источник установки? Путь также может быть сохранен на диске, но чаще всего используется реестр. Не забудьте искать оба HKCU
а также HKLM
,
Включенная отладка: я не могу понять, почему вы это сделаете, но также можно использовать ProcMon.exe, чтобы отслеживать, какие разделы реестра читает и / или записывает ваш MSI. Это связано с отладкой и никогда не должно понадобиться для чего-то такого простого. Просто упомяну это как технический вариант. Вообще в крайнем случае мы должны выяснить самые странные проблемы.
Технический комментарий: Установки MSI не должны записывать что-либо в реестр или диск из последовательности пользовательского интерфейса установки (диалоговые окна установки). Все изменения должны быть сделаны из последовательности установки (InstallExecuteSequence
), который также обычно работает с повышенными правами - пользовательский интерфейс обычно работает с правами пользователя. это InstallExecuteSequence
последовательность запускается из последнего диалогового окна в последовательности графического интерфейса и выполняет операции копирования файлов и изменения системы. Затем Control возвращается к последовательности графического интерфейса, чтобы отобразить диалоги завершения установки. Также можно запустить установку без вывода сообщений, в этом случае InstallUISequence
никогда не запускается и все пользовательские действия, вставленные в него, не запускаются Соответственно, пользовательские действия должны присутствовать в InstallExecuteSequence
так же хорошо как InstallUISequence
если они должны работать в беззвучном режиме. Этот потенциальный недостаток проекта является очень распространенной ошибкой развертывания в режиме без вывода сообщений, которая возникает, когда установки не спроектированы должным образом для работы без вывода сообщений. Помните, что все корпоративное развертывание выполняется без вывода сообщений. Настройка GUI сильно переоценена (на мой взгляд - "факт", который может измениться в будущем).
Для установки MSI все еще возможно записать в реестр или диск с InstallUISequence
используя пользовательское действие для этого. Такое настраиваемое действие обычно не имеет доступа к записи в HKLM или к защищенным частям диска - если только вся установка не выполняется с повышенными правами, поскольку она была запущена из командной строки с повышенными правами (например) или запущена администратором, который повышает его с помощью подсказка UAC.
Другими словами: эта установка плохо спроектирована, но я думаю, это уже понятно.