Как предотвратить Installshield от удаления файлов?
Я разрабатываю пакет с использованием Installshield 2008 Primer Edition, а тип проекта - MSI-проект Installscript.
Проблема, с которой я сталкиваюсь, заключается в том, что во время установки я устанавливаю некоторые файлы в следующую папку. C:\Program Files\Company\SystemFiles
из этого места я копирую и добавляю набор файлов в папку System32, он содержит DLL-файлы и файлы OCX, копирование в папку System32 выполняется с помощью Installscript.
Из-за этого во время удаления установленный файл удаляется из System32, потому что это другое зависимое приложение, которому требуется тот же набор DLL, перестало работать.
Я обратился к Installscript, чтобы скопировать файлы из ProgramFiles в папку System32, а не использовать встроенные параметры, потому что у нас есть проблема во время обновления, чтобы избежать использования Installscript.
Даже я пробовал несколько обходных путей, таких как установка атрибутов файла после копирования файлов в System32 с использованием Installscript, напримерFILE_ATTR_SYSTEM, который устанавливает системный атрибут, но при удалении файлы по-прежнему удаляются.
Любая идея, как дать атрибуты файла как постоянный или SHARED; Поможет ли это, и если да, то как мне установить его с помощью Installscript?
2 ответа
У меня есть 2 идеи 1) Я думаю, что вы можете использовать опцию SHARED, так как это не удалит файлы при удалении.
2) Также, когда я столкнулся с подобной проблемой, я поместил все необходимые файлы в сам каталог установки, чтобы при удалении удалялись только установленные файлы (я знаю, что это не лучшее решение)
(ПРИМЕЧАНИЕ: я работал над установкой щита около 6 лет назад, поэтому помню только некоторые вещи)
Вы также можете отключить ведение журнала из Install Script. Это заставит установщик "забыть", что он установил определенные файлы групп или функций.
Обязательно включите ведение журнала еще раз после того, как вы скопировали файлы, которые хотите навсегда оставить в системе.
Если вы не помните, чтобы включить ведение журнала после его отключения, процесс удаления может работать неправильно.
Синтаксис выглядит следующим образом: Отключить (LOGGING);
// Добавить код для копирования ваших постоянных файлов здесь Enable(LOGGING);
Я вижу, это старый вопрос, но я только что наткнулся на него. Вроде бы обычная проблема. Одно из хороших решений - поместить файлы в частный каталог, в основном программные файлы, а затем выполнить настраиваемое действие для копирования и регистрации (ocx и т. Д.). Installshield запоминает, что скопировал, поэтому старается их удалить. Больше ничего не тревожьте, например, ведение журнала (моя рекомендация). Задайте условия для настраиваемого действия, чтобы оно не запускалось во время удаления. Хотя когда-то назад я сделал еще одну странную реализацию, которую привыкли делать только программисты... Упаковал файлы как ресурсы и создал свой собственный код для извлечения и развертывания (что-то вроде инструмента Process Explorer). Были определенные варианты использования, которые требовали такой реализации. Но, опять же, это сложно и, очевидно, заново изобретает колесо.Если вы не разбираетесь в C/C++ и Windows API, это будет сложно. Я все же предлагаю вам держаться подальше от такого рода реализации, потому что это также считается "опасным поведением". Тем не менее, до сих пор я не получал предупреждений от продуктов защиты от вредоносных программ.
Для проектов InstallScript: Чтобы предотвратить удаление файлов определенного компонента во время удаления: 1-Выберите представление "Компоненты" в папке "Организация". 2-Выберите компонент, содержащий файлы, которые вы не хотите удалять во время удаления. 3-Измените свойство "Удалить" на правой панели на значение "Нет".
Для проектов MSI: Чтобы предотвратить удаление файлов определенного компонента во время удаления: 1-Выберите представление "Компоненты" в папке "Организация". 2-Выберите компонент, содержащий файлы, которые вы не хотите удалять во время удаления. 3-Измените свойство "Постоянно" на правой панели на значение "Да".