Небезопасные файлы

Для удобства новых пользователей, которые не знают, какие файлы можно, а какие нельзя включать в пакет поставки программы, компилятор выдаст сообщение об ошибке при попытке установки так называемых "небезопасных" файлов, используя секцию [Files]. Эти файлы перечислены ниже.

(Примечание: сообщение об ошибке можно отключить, используя определённый флаг в секции [Files], но делать этого крайне НЕ рекомендуется.)

Любой файл DLL из системного каталога Windows

Не следует развёртывать какие-либо DLL файлы из собственного системного каталога Windows в каталог {sys} пользователя, поскольку многие из них соответствуют строго определённой версии Windows и не будут работать при установке на другую версию. В большинстве случаев установка DLL из другой версии Windows приведёт к тому, что система пользователя перестанет загружаться. Другая причина, почему не следует пользоваться такой практикой заключается в том, что при установке программ на ваш компьютер, файлы DLL могут быть заменены другими, несовместимыми версиями, без вашего ведома. Это может привести к непредсказуемым и трудно решаемым проблемам на системах пользователей при создании новых установок.

Вместо развертывания библиотек DLL из системного каталога Windows вы должны найти версии, которые специально предназначены для "распространения". Свободно распространяемые библиотеки DLL обычно поддерживают несколько версий Windows. Чтобы найти такие версии динамических библиотек Visual Basic и Visual C ++, см. раздел справки "Часто задаваемые вопросы по Inno Setup".

Если вы абсолютно уверены, что имеющаяся у вас библиотека DLL, находящаяся в системном каталоге Windows, является свободно распространяемой, скопируйте её в исходную папку с вашим сценарием и используйте только оттуда.

ADVAPI32.DLL, COMDLG32.DLL, GDI32.DLL, KERNEL32.DLL, RICHED32.DLL, SHELL32.DLL, USER32.DLL, UXTHEME.DLL

Все эти файлы являются основными компонентами Windows и никогда не должны развёртываться при помощи программы установки. Пользователи могут получать новые версии этих библиотек только при установке новой версии Windows, пакета обновления или исправления для Windows.

COMCAT.DLL, MSVBVM50.DLL, MSVBVM60.DLL, OLEAUT32.DLL, OLEPRO32.DLL, STDOLE2.TLB (в особых случаях)

Если значение DestDir отличается от {sys} и используется флаг regserver или regtypelib, то указанные библиотеки будут считаться "небезопасными". Эти файлы никогда не должны устанавливаться и регистрироваться в другом каталоге, кроме как {sys}, поскольку все программы в системе начнут использовать их по умолчанию вместо файлов в {sys}. Также могут возникнуть проблемы, если ваши версии файлов окажутся старше, чем имеющиеся версии файлов в каталоге {sys}. Кроме того, если ваши копии файлов были удалены, то другие приложения перестанут работать.

COMCTL32.DLL

Microsoft не разрешает отдельное перераспределение COMCTL32.DLL (и это правильно - файл между платформами отличается), поэтому никогда не следует помещать COMCTL32.DLL в секцию [Files]. Однако можно направить пользователей на загрузку обновления COMCTL32 с сайта Microsoft [внешняя ссылка] или добавить обновление COMCTL32 к вашей программе.

SHDOCVW.DLL, SHLWAPI.DLL, URLMON.DLL, WININET.DLL

Эти файлы являются компонентами ядра Internet Explorer, а также используются проводником Windows. Их замена может помешать запуску проводника. Если ваше приложение зависит от этих DLL файлов или от их последней версии, то вашим пользователям нужно будет установить последнюю версию Internet Explorer, чтобы получить их.

MSCOREE.DLL

Этот файл является частью Microsoft .NET Framework. Невозможно безопасно установить или обновить .NET Framework, включив этот файл в пакет установки. Вместо этого вызовите dotnetfx.exe или направьте пользователей на его использование.