Укажите полный путь для файла установки с атрибутами
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Традиционные пути DOS
Стандартный путь DOS может состоять из трех компонентов:
- Буква тома или диска, после которой следует разделитель томов ( : ).
- Имя каталога. Символ разделителя каталогов служит для разделения подкаталогов во внутренней иерархии каталога.
- Необязательное имя файла. Символ разделителя каталогов служит для разделения пути к файлу и его имени.
Если присутствуют все три компонента, путь является абсолютным. Если буква тома или диска не указана и имя каталога начинается с символа разделителя каталогов, такой путь задан относительно корня текущего диска. В противном случае путь задан относительно текущего каталога. В следующей таблице показаны некоторые возможные пути к каталогам и файлам.
Путь | Описание: |
---|---|
C:\Documents\Newsletters\Summer2018.pdf | Абсолютный путь к файлу из корня диска C: . |
\Program Files\Custom Utilities\StringFinder.exe | Абсолютный путь из корня текущего диска. |
2018\January.xlsx | Относительный путь к файлу в подкаталоге текущего каталога. |
..\Publications\TravelBrochure.pdf | Относительный путь к файлу в каталоге, начиная с текущего каталога. |
C:\Projects\apilibrary\apilibrary.sln | Абсолютный путь к файлу из корня диска C: . |
C:Projects\apilibrary\apilibrary.sln | Относительный путь из текущего каталога диска C: . |
Обратите внимание на различия между двумя последними путями. В обоих случаях задается необязательный описатель тома ( C: ), однако первый путь, в отличие от второго, начинается с корня указанного тома. В результате первый путь является абсолютным из корневого каталога диска C: , тогда как второй — относительным из текущего каталога C: . Использование второй формы пути в тех случаях, когда предполагается наличие первой, является распространенным источником ошибок, связанных с путями к файлам в Windows.
Чтобы определить, является ли путь к файлу полным (такой путь не зависит от текущего каталога и не изменяется при смене текущего каталога), можно вызвать метод Path.IsPathFullyQualified. Обратите внимание, что такой путь может включать сегменты с относительным путем к каталогу ( . и .. ), но при этом по-прежнему будет полным, если разрешенный путь всегда указывает на одно и то же место.
В приведенном ниже примере показано различие между абсолютными и относительными путями. Предполагается, что каталог D:\FY2018\ существует и вы не установили какой-либо текущий каталог для диска D:\ из командной строки перед запуском этого примера.
Если вы хотите увидеть комментарии к коду, переведенные на языки, отличные от английского, сообщите нам на странице обсуждения этой проблемы на сайте GitHub.
Соглашения об именах
Следующие фундаментальные правила позволяют приложениям создавать и обрабатывать допустимые имена файлов и каталогов независимо от файловой системы:
Используйте точку, чтобы отделить имя базового файла от расширения в имени каталога или файла.
Используйте обратную косую черту (\) для разделения компонентовпути. Обратная косая черта делит имя файла на путь к нему и одно имя каталога из другого имени каталога в пути. Обратную косую черту нельзя использовать в имени фактического файла или каталога, так как это зарезервированный символ, разделяющий имена на компоненты.
Используйте обратную косую черту в качестве части имен томов, например "C:\". в папке "C:\path\file" или "\\server\share" в "\server\share\path\file" для имен UNC. Дополнительные сведения об именах UNC см. в разделе ограничения максимальной длины пути .
Не предполагайте конфиденциальность регистра. Например, рассмотрим имена ОСКАРа, Оскара и оскара, хотя некоторые файловые системы (например, файловая система, совместимая с POSIX), могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию. Дополнительные сведения см. в разделе CreateFile.
Конструкторы томов (буквы диска) точно так же не учитывают регистр. Например, "D:\" и "d:\" ссылаться на тот же том.
Используйте любой символ в текущей кодовой странице для имени, включая символы и символы Юникода в расширенном наборе символов (128–255), за исключением следующих:
Следующие зарезервированные символы:
- < (меньше чем);
- > (больше чем);
- : (двоеточие)
- " (двойная кавычка)
- / (косая черта)
- \ (обратная косая черта)
- | (вертикальная полоса или канал)
- ? (вопросительный знак)
- * (звездочка)
Целочисленное значение ноль, иногда называемое символом NUL ASCII.
Символы, целочисленные представления которых находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, в которых разрешены эти символы. Дополнительные сведения о потоках файлов см. в разделе "Файл Потоки".
Любой другой символ, который не допускает целевая файловая система.
Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например ".\temp.txt". Дополнительные сведения см. в разделе "Пути".
Используйте два последовательных периода (.).) в качестве компонента каталога в пути для представления родительского элемента текущего каталога, например ".. \temp.txt". Дополнительные сведения см. в разделе "Пути".
Не используйте следующие зарезервированные имена для имени файла:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Кроме того, избегайте этих имен, за которым следует немедленное расширение; Например, NUL.txt не рекомендуется. Дополнительные сведения см. в разделе Пространства имен.
Не заканчивайте имя файла или каталога пробелом или точкой. Хотя базовая файловая система может поддерживать такие имена, оболочка Windows и пользовательский интерфейс не поддерживаются. Однако можно указать точку в качестве первого символа имени. Например, ".temp".
Регистр символов и файловая система Windows
Особенность файловой системы Windows заключается в том, что пользователи и разработчики, имеющие дело с другими операционными системами, могут сталкиваться с проблемами из-за того, что в именах каталогов и путях не учитывается регистр символов. Это значит, что в именах каталогов и файлов сохраняется регистр строк, используемый в момент их создания. Например, вызов метода
создает каталог с именем TeStDiReCtOrY. Если переименовать каталог или файл так, чтобы изменился регистр символов, в имени будет отражен регистр, используемый в момент переименования. Например, следующий код переименовывает файл test.txt в Test.txt:
Тем не менее при сравнении имен каталогов и файлов регистр символов не учитывается. Если выполнить поиск файла с именем "test.txt", API файловой системы .NET будут игнорировать регистр символов при сравнении. Таким образом, при поиске файла "test.txt" будут возвращены совпадения для файлов "Test.txt", "TEST.TXT", "test.TXT", а также любых других их вариантов с различным сочетанием букв в верхнем и нижнем регистре.
Смотрите также
Eonza automation software - free, open source cross-platform program for easy creation and management of scripts. Gentee script programming language - Free, open source and cross-platform programming language for automation.
Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Windows разработчики, работающие с API-интерфейсами Windows для операций ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.
Доступ к данным можно получить с дисков, устройств и сетевых ресурсов с помощью API-интерфейсов ввода-вывода файлов. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление места для получения данных независимо от того, находится ли он с диска или устройства или сетевого подключения для определенной операции.
Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также соответствуют соглашениям об именовании файлов и правилам так же, как обычный файл или каталог. Дополнительные сведения см. в разделе "Жесткие ссылки" и "Соединения" , " Точки повторного анализа" и "Операции с файлами".
Дополнительные сведения см. в следующих подразделах:
Дополнительные сведения о настройке Windows 10 для поддержки длинных путей к файлам см. в разделе "Ограничение максимальной длины пути".
Пути к устройствам DOS
В операционной системе Windows используется унифицированная объектная модель, которая указывает на все ресурсы, включая файлы. Эти пути к объектам доступны из окна консоли и предоставляются на уровень Win32 с использованием специальной папки с символьными ссылками, с которыми сопоставляются устаревшие пути DOS и UNC. Доступ к этой специальной папке осуществляется с использованием синтаксиса пути к устройству DOS, который может иметь одну из приведенных ниже форм:
Помимо использования буквы диска, вы можете указать том с помощью его GUID. Синтаксис будет иметь вид:
Путь к устройству DOS состоит из следующих компонентов:
Описатель пути к устройству ( \\.\ или \\?\ ), который идентифицирует путь как путь к устройству DOS.
Символьная ссылка на "реальный" объект устройства (C: в случае имени диска или Volume в случае GUID тома).
Первый сегмент пути к устройству DOS после описателя пути к устройству идентифицирует том или диск. (Например, \\?\C:\ и \\.\BootPartition\ .)
Для UNC-путей существует специальная ссылка, которая называется UNC . Пример:
Для UNC-путей к устройствам часть сервера или общего сетевого ресурса образует том. Например, в пути \\?\server1\e:\utilities\\filecomparer\ часть server1\utilities представляет сервер или общий сетевой ресурс. Это важно при вызове такого метода, как Path.GetFullPath(String, String) с сегментами с относительным путем к каталогу, поскольку переход дальше тома невозможен.
Пути к устройствам DOS являются полными по определению и не могут начинаться с относительным сегментом каталога ( . или .. ). Они никогда не задаются относительно текущего каталога.
GetFullPath(String)
Возвращает для указанной строки пути абсолютный путь.
Параметры
Файл или каталог, для которых нужно получить сведения об абсолютном пути.
Возвращаемое значение
Полное расположение path , например "C:\MyFile.txt".
Исключения
path — строка нулевой длины, содержит только пробелы в системах Windows или содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().
Система не может извлечь абсолютный путь.
У вызывающего объекта отсутствуют необходимые разрешения.
path имеет значение null .
path содержит двоеточие (:), которое не является частью идентификатора тома (например, "c:\").
Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.
Пространства имен файлов Win32
Префикс пространства имен Win32 и соглашения приведены в этом разделе и в следующем разделе с описанием их использования. Обратите внимание, что эти примеры предназначены для использования с функциями API Windows и не все обязательно работают с приложениями оболочки Windows, такими как Windows Explorer. По этой причине существует более широкий спектр возможных путей, чем обычно доступны в приложениях оболочки Windows, и Windows приложения, которые используют преимущества этого, можно разработать с помощью этих соглашений о пространстве имен.
Так как он отключает автоматическое расширение строки пути, префикс "\\?\" также позволяет использовать ".." и "." в именах путей, которые могут быть полезны при попытке выполнить операции с файлом с этими зарезервированными относительными описателями пути в рамках полного пути.
Многие, но не все API-интерфейсы ввода-вывода файлов поддерживают "\\?\"; Необходимо ознакомиться со справочной темой для каждого API, чтобы убедиться.
Обратите внимание, что API Юникода должны использоваться для проверки того, что префикс "\?\" позволяет превысить MAX_PATH
Опции распаковки
Укажите директорию куда будут распакованы данные файлы.
APPLICATION DATA PATH - Папка программы в Application Data.
CDROM PATH - CD или DVD диск.
CUSTOM PATH - Путь будет определен вместе с именем файла.
INSTALL PATH - Главный путь установки.
SETUP FILE PATH - Путь к запущеному файлу установки.
SYSTEM PATH - Системная директория Windows.
TEMPORARY PATH - Временная директория Windows.
WINDOWS PATH - Директория Windows.
Распаковать позднее - Вы может распаковать эти файлы в разные директории с помощью команды Распаковать файлы.
Здесь вы можете указать любую директорию для установки если вы выбрали CUSTOM PATH выше.
Что нужно делать если устанавливаемый файл уже существует.
Пропустить - не записывать файл.
Записать - переписать существующий файл.
Записать если новее - переписать существующий файл если записываемый файл новее или имеет большую версию.
Спросить - запросить у пользователя разрешение на перезапись данного файла.
Спросить если новее - запросить у пользователя разрешение на перезапись только если записываемый файл новее или имеет большую версию. В противном случае запись файла будет пропущена.
Замечание! Если файл должен быть обновлен, но он занят системой или другим приложением, то в конце инсталляции пользователю будет предложено перезагрузить компьютер. Такие файлы будут перезаписаны только после перезагрузки.
Вы можете указать условие при котором необходимо выполнить это действие. Если указанное условие будет ложно, то команда выполняться не будет. Подробнее использование условий описано в Как использовать Условие.
allfolders - присвойте этой переменной 1, если вы хотите чтобы включались директории, которе непустые, но все их файлы попали в исключения.
groupname - укажите имя группы если хотите потом распаковать данные файлы с помощью команды Распаковать файлы.
password - Вы можете защитить эти файлы дополнительным паролем.
unlog - Выбор режима управлением лог файлом деинсталляции. Текущее значение будет восстановлено после окончания работы команды. Возможные параметры: on - Включено, off - Отключено, on1 - Включено (Mode 1), on2 - Включено (Mode 2).
unlogfile - Выбор режима удаления файла при деинсталляции. Текущее значение будет восстановлено после окончания работы команды. Возможные параметры: delete - Удалять, confirm - Подтверждение пользователя, list - Добавление в список файлов на удаление.
Xfilter - установка функции-фильтра для распаковки. Смотрите Как установить фильтр при распаковке файлов.
compact - вы можете указать маски файлов для сжатия с помощью Windows программы compact. Файлы перечисляются через точку с запятой. Ищутся рекурсивно все файлы от директории распаковки, которые подходят для указанной маски. У сжатых файлов устанавливается специальный атрибут указывающий, что файл сжат встроенными средствами Windows.
Комментарий
Вы можете добавить в этом поле комментарий.
Если вы распаковываете очень много файлов, то можно скрывать путь установки и имена файлов в Диалог - Прогресс. Это позволяет существенно увеличить скорость распаковки. Для этого установите значение переменной hidefiles равной 1.
Работа с устаревшими устройствами
Если путь указывает на устаревшее устройство DOS, например CON , COM1 или LPT1 , он преобразуется в путь к устройству путем добавления перед ним последовательности \\.\ и возвращается в таком виде.
Путь, который начинается с имени устаревшего устройства, всегда интерпретируется как путь к устаревшему устройству с помощью метода Path.GetFullPath(String). Например, путь к устройству DOS CON.TXT будет выглядеть как \\.\CON , а путь к устройству DOS COM1.TXT\file1.txt будет выглядеть как \\.\COM1 .
Пропуск нормализации
Как правило, любой путь, передаваемый в API Windows передается в функцию GetFullPathName и нормализуется. Существует одно важное исключение: путь к устройству, который начинается со знака вопроса, а не с точки. Если путь не начинается с последовательности \\?\ (обратите внимание на использование канонической формы с обратной косой чертой), он нормализуется.
Зачем нужно пропускать нормализацию? Существует три основных причины:
Получение путей, которые в обычных обстоятельствах недоступны, но являются допустимыми. Например, невозможно каким-либо иным способом получить доступ к файлу или каталогу с именем hidden. .
Повышение производительности за счет пропуска нормализации в тех случаях, когда нормализация уже выполнена.
Пропуск нормализации и проверки максимальной длины пути является единственным отличием между двумя видами синтаксиса путей к устройствам. В остальных аспектах они идентичны. Пропуск нормализации следует использовать с осторожностью, поскольку в этом случае легко получить пути, при работе с которыми в обычных приложениях будут возникать трудности.
Пути, начинающиеся с последовательности \\?\ , по-прежнему нормализуются, если явно передать их в функцию GetFullPathName.
Вы можете передавать пути длиной более MAX_PATH символов в функцию GetFullPathName без \\?\ . Она поддерживает пути произвольной длины, которая ограничивается лишь максимальным размером строки, поддерживаемым в Windows.
Пространства имен устройств Win32
Префикс "\\.\" будет обращаться к пространству имен устройства Win32 вместо пространства имен файлов Win32. Таким образом, доступ к физическим дискам и томам осуществляется напрямую без прохождения файловой системы, если API поддерживает этот тип доступа. Таким образом можно получить доступ к нескольким устройствам, кроме дисков (например, с помощью функций CreateFile и DefineDosDevice ).
Например, если вы хотите открыть последовательный порт связи системы 1, можно использовать com1 в вызове функции CreateFile . Это работает потому, что COM1–COM9 является частью зарезервированных имен в пространстве имен NT, хотя при использовании префикса "\\.\" также будут работать с этими именами устройств. Для сравнения, если установлена 100-последовательная плата расширения портов и вы хотите открыть COM56, ее нельзя открыть с помощью COM56, так как для COM56 нет предопределенного пространства имен NT. Его необходимо открыть с помощью "\\.\COM56", так как "\\\.\" переходит непосредственно в пространство имен устройства, не пытаясь найти предопределенный псевдоним.
Еще одним примером использования пространства имен устройства Win32 является использование функции CreateFile с "\\.\PhysicalDriveX" (где X является допустимым целым числом) или "\\.\CdRomX". Это позволяет обращаться к этим устройствам напрямую, обходя файловую систему. Это работает потому, что эти имена устройств создаются системой по мере перечисления этих устройств, а некоторые драйверы также создают другие псевдонимы в системе. Например, драйвер устройства, реализующий имя C:\. имеет собственное пространство имен, которое также может быть файловой системой.
ИНТЕРФЕЙСы API, которые проходят через функцию CreateFile , обычно работают с префиксом "\\.\", так как CreateFile — это функция, используемая для открытия файлов и устройств в зависимости от используемых параметров.
При работе с функциями API Windows следует использовать префикс "\\.\" для доступа только к устройствам, а не к файлам.
Большинство API не поддерживают "\\.\"; Распознаются только те, которые предназначены для работы с пространством имен устройства. Всегда проверяйте справочный раздел для каждого API, чтобы убедиться.
Исходные файлы (маски) или директории
Укажите имя файла (включая полный путь) или директории на вашем компьютере, которые должны быть включены в установку. Вы можете указать их в окне выбора нажав на кнопки справа. Если будет указана директория, то она будет сжата со всеми своими файлами и потом создана в процессе установки.
Отмечен => рекурсивный поиска файлов в поддиректориях.
Отмечен => использовать указанные маски только для поиска файлов.
Отмечен => учитывать и добавлять в установку пустые директории.
Вы можете определить маски для исключаемых файлов. Маски должны разделяться через точку с запятой. Эти файлы будут игнорироваться упаковщиком. Вы можете использовать '*' и '?'.
Комментарий
Вы можете добавить в этом поле комментарий.
Применение текущего каталога
Если путь не является полным, система Windows применяет к нему текущий каталог. К UNC-путям и путям к устройствам текущий каталог не применяется. Также текущий каталог не применяется к полным путям к диску с разделителем C:\ .
Если путь начинается с одного разделителя компонентов, применяется диск текущего каталога. Например, для пути к файлу \utilities и текущего каталога C:\temp\ в результате нормализации будет получен путь C:\utilities .
Если путь начинается с буквы диска, разделителя томов и не содержит разделителя компонентов, применяется последний текущий каталог, установленный из командной оболочки. Если последний текущий каталог не был установлен, применяется диск сам по себе. Например, для пути D:sources , текущего каталога C:\Documents\ и последнего текущего каталога D:\sources\ на диске D: в результате будет получен путь D:\sources\sources . Пути, задаваемые относительно диска, являются распространенными источниками ошибок программ и логики скрипта. Предположение, что путь, начинающийся с буквы и двоеточия, не является относительным, очевидно неверно.
Если путь не начинается с разделителя, применяются текущий диск и текущий каталог. Например, для пути к файлу filecompare и текущего каталога C:\utilities\ в результате будет получен путь C:\utilities\filecompare\ .
Пространства имен
В api-интерфейсах Windows используются две основные категории соглашений о пространстве имен, которые обычно называются пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано для самого низкого уровня пространства имен, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и, по расширению, пространства имен Win32. POSIX — это еще один пример подсистемы в Windows, построенной на основе пространства имен NT. Ранние версии Windows также определили несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как последовательные и параллельные порты, и консоль отображения по умолчанию в рамках того, что теперь называется пространством имен устройств NT, и по-прежнему поддерживаются в текущих версиях Windows для обратной совместимости.
Ограничение максимальной длины пути
В выпусках Windows до Windows 10 версии 1607 максимальная длина пути равна MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows изменение раздела реестра или использование средства групповая политика требуется для удаления ограничения. Полные сведения см. в разделе об ограничении максимальной длины пути .
Канонизация разделителей
Все символы косой черты ( / ) преобразуются в стандартные разделители Windows, то есть символы обратной косой черты ( \ ). Если они присутствуют, последовательность символов косой черты после первых двух таких символов свертывается в один символ косой черты.
Имена файлов и каталогов
Все файловые системы соответствуют одинаковым общим соглашениям об именовании для отдельного файла: базовому имени файла и необязательному расширению, разделенному точкой. Однако каждая файловая система, например NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь определенные и различные правила формирования отдельных компонентов в пути к каталогу или файлу. Обратите внимание, что каталог — это просто файл с особым атрибутом, назначающим его в качестве каталога, но в противном случае должен соответствовать всем тем же правилам именования, что и обычный файл. Так как каталог терминов просто относится к специальному типу файла, насколько это касается файловой системы, некоторые справочные материалы будут использовать общий файл терминов для охвата как концепций каталогов, так и файлов данных. Из-за этого, если не указано иное, любые правила именования или использования или примеры для файла также должны применяться к каталогу. Путь к термину относится к одному или нескольким каталогам, обратным косикам и, возможно, имени тома. Дополнительные сведения см. в разделе "Пути ".
Ограничения количества символов могут отличаться и могут отличаться в зависимости от используемого формата префикса имени файловой системы и пути. Это еще больше усложняется поддержкой механизмов обратной совместимости. Например, более старая файловая система MS-DOS FAT поддерживает не более 8 символов для имени базового файла и 3 символа для расширения в общей сложности 12 символов, включая разделитель точек. Это обычно называется именем файла 8.3. Windows файловых систем FAT и NTFS не ограничиваются именами файлов 8.3, так как они поддерживают длинные имена файлов, но по-прежнему поддерживают версию 8.3 длинных имен файлов.
Пример. Способы задать ссылку на один и тот же файл
В следующем примере демонстрируются некоторые способы задать ссылку на файл с использованием API в пространстве имен System.IO. В этом примере создается экземпляр объекта FileInfo и используются его свойства Name и Length, чтобы отобразить имя и длину файла.
Примеры
В следующем примере демонстрируется GetFullPath метод на платформе настольных компьютеров на основе Windows.
UNC-пути
UNC-пути (универсальное соглашение об именовании) используются для доступа к сетевым ресурсам и имеют следующий формат:
- Имя сервера или узла, которому предшествуют символы \\ . В качестве имени сервера может выступать имя компьютера NetBIOS, а также IP-адрес или полное доменное имя (поддерживаются адреса IPv4 и IPv6).
- Имя общего ресурса, которое отделяется от имени узла символами \ . Имя сервера и имя общего ресурса в совокупности образуют том.
- Имя каталога. Символ разделителя каталогов служит для разделения подкаталогов во внутренней иерархии каталога.
- Необязательное имя файла. Символ разделителя каталогов служит для разделения пути к файлу и его имени.
Ниже приводятся некоторые примеры UNC-путей:
Path | Описание |
---|---|
\\system07\C$\ | Корневой каталог диска C: на компьютере system07 . |
\\Server2\Share\Test\Foo.txt | Файл Foo.txt в тестовом каталоге тома \\Server2\Share . |
UNC-пути всегда должны быть полными. Они могут включать сегменты с относительным путем к каталогу ( . и .. ), однако они должны быть частью полного пути. Использовать относительные пути можно только посредством сопоставления UNC-пути с буквой диска.
Идентификация пути
На первом шаге процесса нормализации осуществляется идентификация типа пути. Пути могут относиться к одной из нескольких категорий:
- Пути к устройствам: начинаются с двух разделителей и знака вопроса или точки ( \\? или \\. ).
- UNC-пути: начинаются с двух разделителей без знака вопроса или точки.
- Полные пути DOS: начинаются с буквы диска, разделителя томов и компонентов ( C:\ ).
- Пути к устаревшим устройствам ( CON , LPT1 ).
- Пути относительно корня текущего диска: начинаются с одного разделителя компонентов ( \ ).
- Пути относительно текущего каталога указанного диска: начинаются с буквы диска и разделителя томов, но не содержат разделителя компонентов ( C: ).
- Пути относительно текущего каталога: начинаются с любых других символов ( temp\testfile.txt ).
Тип пути определяет, будет ли каким-либо образом применяться текущий каталог. Кроме того, от типа пути зависит применяемый корень.
Удаление знаков
Помимо удаленных ранее разделителей и относительных сегментов во время нормализации также удаляются некоторые дополнительные знаки:
Если сегмент заканчивается одной точкой, эта точка удаляется. (Сегмент одной или двойной точки нормализован на предыдущем шаге. Сегмент из трех или более периодов не нормализован и действительно является допустимым именем файла или каталога.)
Если путь не заканчивается разделителем, удаляются все конечные точки и пробелы (U+0020). Если последний сегмент содержит только одну или две точки, к нему применяется приведенное выше правило для относительных компонентов.
Это правило устанавливает, что вы можете создать имя каталога с конечным пробелом, добавив разделитель после пробела.
Создавать имена каталогов или файлов с конечным пробелом нельзя. Наличие конечных пробелов может затруднить или исключить возможность доступа к каталогу. В связи с этим при попытке обработать каталоги или файлы, имена которых содержат конечные пробелы, происходит сбой приложения.
Полные и относительные пути
Для функций API Windows, которые управляют файлами, имена файлов часто могут быть относительными к текущему каталогу, а некоторые API требуют полного пути. Имя файла относительно текущего каталога, если оно не начинается со следующего:
- UNC-имя любого формата, которое всегда начинается с двух символов обратной косой черты ("\\"). Дополнительные сведения см. в следующем разделе.
- Конструктор дисков с обратной косой чертой, например "C:\" или "d:\".
- Одна обратная косая черта, например "\directory" или "\file.txt". Это также называется абсолютным путем.
Если имя файла начинается только с конструктора дисков, но не обратной косой черты после двоеточия, он интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть корневым каталогом в зависимости от того, что он был установлен во время последней операции изменения каталога на этом диске. Ниже приведены примеры этого формата:
- "C:tmp.txt" ссылается на файл с именем "tmp.txt" в текущем каталоге на диске C.
- "C:tempdir\tmp.txt" относится к файлу в подкаталоге к текущему каталогу на диске C.
Путь также считается относительным, если он содержит "двойные точки"; то есть два периода вместе в одном компоненте пути. Этот специальный описатель используется для обозначения каталога над текущим каталогом, который иначе называется родительским каталогом. Ниже приведены примеры этого формата:
- ".. \tmp.txt" указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
- ".. \.. \tmp.txt" указывает файл, который является двумя каталогами над текущим каталогом.
- ".. \tempdir\tmp.txt" указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который является одноранговым каталогом текущего каталога.
Относительные пути могут объединять оба примера типов, например "C. \tmp.txt". Это полезно, так как система отслеживает текущий диск вместе с текущим каталогом этого диска, он также отслеживает текущие каталоги в каждой из разных букв дисков (если в вашей системе несколько), независимо от того, какой диктор диска установлен в качестве текущего диска.
Нормализация путей
Практически все передаваемые в API Windows пути нормализуются. При нормализации в Windows выполняются следующие действия:
- Идентифицируется путь.
- Текущий каталог применяется к неполным (относительным) путям.
- Выполняется канонизация разделителей каталогов.
- Вычисляются относительные компоненты каталога ( . для текущего и .. для родительского каталога).
- Удаляются некоторые символы.
Нормализация происходит неявно, но ее можно выполнить явным образом, вызвав Path.GetFullPath метод, который создает оболочку для вызова функции жетфуллпаснаме (). Также можно вызвать функцию GetFullPathName() Windows напрямую с помощью P/Invoke.
Вычисление относительных компонентов
При обработке пути выполняется вычисление любых его компонентов или сегментов, которые состоят из одной или двух точек ( . или .. ):
Если обнаруживается одна точка, текущий сегмент удаляется, поскольку он ссылается на текущий каталог.
Если обнаруживаются две точки, удаляются текущий и родительский сегмент, поскольку в этом случае задается ссылка на родительский каталог.
Родительские каталоги удаляются только в том случае, если они не находятся после корня пути. Корень пути зависит от его типа. Это будет диск ( C:\ ) для путей DOS, сервер или общий сетевой ресурс для UNC-путей ( \\Server\Share ) и префикс пути к устройству для путей к устройствам ( \\?\ или \\.\ ).
Перегрузки
Возвращает для указанной строки пути абсолютный путь.
Возвращает абсолютный путь из относительного пути и полного базового пути.
Комментарии
Абсолютный путь включает все сведения, необходимые для поиска файла или каталога в системе.
Файл или каталог, указанный параметром path , не обязательно должен существовать. Например, если c:\tempnewdir\ является текущим каталогом, вызов GetFullPath имени файла, например test.txt возвращает c:\tempnewdir\\test.txt. Файл не должен существовать.
Если path это относительный путь, эта перегрузка возвращает полный путь, который может быть основан на текущем диске и текущем каталоге. Текущий диск и текущий каталог могут изменяться в любое время при выполнении приложения. В результате путь, возвращаемый этой перегрузкой, не может быть определен заранее. Чтобы вернуть детерминированный путь, вызовите перегрузку GetFullPath(String, String) . Вы также можете вызвать метод, IsPathFullyQualified чтобы определить, является ли путь полным или относительным, и, следовательно, требуется ли вызов GetFullPath .
Однако если path он существует, вызывающий объект должен иметь разрешение на получение сведений о пути. path Обратите внимание, что в отличие от большинства членов Path класса этот метод обращается к файловой системе.
Этот метод использует текущий каталог и сведения о текущем томе для полного определения path . Если указать только имя path файла, GetFullPath возвращает полный путь к текущему каталогу.
Если передать короткое имя файла, оно будет развернуто до длинного имени файла.
Если путь не содержит значимых символов, он является недопустимым, если он не содержит один или несколько символов ". затем он будет проанализирован как "." или "..".
.NET Core 1.1 и более поздних версий и платформа .NET Framework 4.6.2 и более поздних версий также поддерживают пути, включающие имена устройств, например "\\?\ C:\".
Дополнительные сведения о форматах пути к файлам в Windows см. в форматах пути к файлам в системах Windows. Список распространенных задач ввода-вывода см. в разделе "Общие задачи ввода-вывода".
полный путь папки с установкой BIN файлами репака и инстолятором содержит недопустимые символы ( например, кириллицу ) переместите папку репака в путь только с латинскими символами
и цифрами. помогите пжж
Путь к игре должен содержать только английские буквы и цифры, русских букв быть не должно
Путь должен выглядеть примерно так D:/Games/Prototype 2
я так и сделал но не помогло
но все ровно спасибо )
лови
коля попов, Крч у тебя папка, откуда игру ставишь, на русском языке, из-за этого не ставится. Переименуй её на английский
Ну да, то есть он ругается на то, что папка этого репака находится в папке с недопустимыми символами.
Можешь путь прописать где находится репак?
я все делал как вы говорили но нет вот файлы сами
Qwerty Uiop Мудрец (14067) коля попов, Значит это ошибка Fit Girl, скачивай от hatab`a и не будет проблем
Друг, в этой папке есть программа под загрузчиком самой игры "Verify BIN" запусти его и жди пока он не прогонит все ошибки, после заверешения будет написано complated проверяет он +- 2 минуты. И всё у тебя заработает.
Я не знаю, нашёл ли ты решение своей проблемы, но я не смог сдержаться от того, что бы не помочь. Смотри. Ошибка связана с тем, что это вина не самой папки с игрой, а папки где это игра у тебя хранится. Вот например у меня, папка с игрой хранилась на D диске в папке под названием "Игры". Надо было сменить название папки "Игры" на английский язык, и проблема решена. Надеюсь, я помог, хотя бы спустя столько времени.
Распаковать файлы в указанную директорию. Эта команда упаковывает указанные файлы в инсталляцию и затем распаковывает их в процессе установки.
При желании, вы можете указать комментарии к данной команде.
Укажите алгоритм сжатия, который будет использоваться для всех файлов текущей группы. Возможны следующие варианты:
DEFAULT - Сжатие основанное на LZ алгоритмах. Этот алгоритм позволяет производить очень быструю распаковку.
PPMD - PPMD сжатие. Этот алгоритм обеспечивает отличную степень сжатия, но время распаковки равно равновремени упаковки. Поэтому распаковка не очень быстрая. Этот алгоритм сжатия реализован и адаптирован для CreateInstall Дмитрием Шкариным.
STORE - Не сжимать файлы.
Если вы используйте DEFAULT или PPMD сжатие, то уровень сжатия может изменяться от 1 до 10. Более высокое значение означает лучшее сжатие, но большее время на упаковку.
Отмечен => Информация об уже сжатых файлов используется для сжатия следующих файлов. Это обеспечивает лучшую степень сжатия на большом количестве однородных файлов. Заметьте, что если вы используйте PPMD сжатие, то эта возможность может ухудшить сжатие на некоторых файлах.
Команда Установочные файлы
Пространства имен NT
Существуют также API, которые позволяют использовать соглашение о пространстве имен NT, но диспетчер объектов Windows делает это ненужным в большинстве случаев. Чтобы проиллюстрировать, полезно просмотреть пространства имен Windows в браузере системных объектов с помощью средства winObj Windows Sysinternals. При запуске этого средства отображается пространство имен NT, начинающееся с корневого каталога, или "\". Вложенная папка с именем "Global??" — это место расположения пространства имен Win32. Именованные объекты устройства находятся в пространстве имен NT в подкаталоге Device. Здесь также можно найти Serial0 и Serial1, объекты устройства, представляющие первые два COM-порта, если они присутствуют в системе. Объект устройства, представляющий том, будет примерно таким, как HarddiskVolume1, хотя числовой суффикс может отличаться. Имя DR0 в подкаталоге "Harddisk0" является примером объекта устройства, представляющего диск и т. д.
Чтобы сделать эти объекты устройств доступными Windows приложениями, драйверы устройств создают символьную ссылку (символьную ссылку) в пространстве имен Win32 "Global??", к соответствующим объектам устройства. Например, COM0 и COM1 в подкаталоге "Global??" — это просто символьные ссылки на Serial0 и Serial1, "C:" — это символьная ссылка на HarddiskVolume1, "Physicaldrive0" — это символьная ссылка на DR0 и т. д. Без символьного канала указанное устройство Xxx не будет доступно ни одному приложению Windows с помощью соглашений о пространстве имен Win32, как описано выше. Однако дескриптор можно открыть на этом устройстве с помощью любых API, поддерживающих абсолютный путь к пространству имен NT формата \Device\Xxx.
Благодаря добавлению поддержки нескольких пользователей через службы терминалов и виртуальные машины стало еще больше необходимо виртуализировать корневое устройство на уровне системы в пространстве имен Win32. Для этого добавьте символьную ссылку с именем GLOBALROOT в пространство имен Win32, которое можно увидеть в подкаталоге "Global??" средства браузера WinObj, описанного ранее, и сможете получить доступ через путь "\\?\GLOBALROOT". Этот префикс гарантирует, что следующий путь выглядит в истинном корневом пути диспетчера системных объектов, а не в зависимом от сеанса пути.
Члены большинства типов в пространстве имен System.IO имеют параметр path , который позволяет указать абсолютный или относительный путь к ресурсу в файловой системе. Этот путь передается в API файловой системы Windows. В этом разделе рассматриваются форматы путей к файлам, которые можно использовать в операционных системах Windows.
Короткие и длинные имена
Длинное имя файла считается любым именем файла, превышающим короткое соглашение об именовании стилей MS-DOS (также называемое 8.3). При создании длинного имени файла Windows также может создать короткую форму имени 8.3, которая называется псевдонимом 8.3 или коротким именем, а также хранить его на диске. Этот псевдоним версии 8.3 можно отключить по соображениям производительности по всей системе или для указанного тома в зависимости от конкретной файловой системы.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: псевдоним 8.3 нельзя отключить для указанных томов до Windows 7 и Windows Server 2008 R2.
Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое слишком долго соответствует правилам именования 8.3.
Не все файловые системы соответствуют соглашению о замене тильды, и системы можно настроить для отключения создания псевдонима 8.3, даже если они обычно поддерживают его. Поэтому не следует предполагать, что псевдоним 8.3 уже существует на диске.
Чтобы запросить имена файлов 8.3, длинные имена файлов или полный путь к файлу из системы, рассмотрите следующие параметры:
- Чтобы получить форму 8.3 длинного имени файла, используйте функцию GetShortPathName .
- Чтобы получить длинную версию имени файла короткого имени, используйте функцию GetLongPathName .
- Чтобы получить полный путь к файлу, используйте функцию GetFullPathName .
В более новых файловых системах, таких как NTFS, exFAT, UDFS и FAT32, Windows сохраняет длинные имена файлов на диске в Юникоде, что означает, что исходное длинное имя файла всегда сохраняется. Это верно, даже если длинное имя файла содержит расширенные символы, независимо от кодовой страницы, активной во время операции чтения или записи диска.
Файлы с длинными именами файлов можно копировать между секциями файловой системы NTFS и Windows секциями файловой системы FAT, не теряя никаких сведений об имени файла. Это может быть не так для старых файловых систем MS-DOS FAT и некоторых типов CDFS (CD-ROM) в зависимости от фактического имени файла. В этом случае короткое имя файла будет заменено, если это возможно.
Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратная косая черта), при этом каждый компонент обычно является именем каталога или именем файла, но с некоторыми заметными исключениями, рассмотренными ниже. Зачастую крайне важно интерпретировать системой путь, как выглядит начало или префикс пути. Этот префикс определяет пространство имен , используемое путем, а также специальные символы, используемые в какой позиции в пути, включая последний символ.
Если компонент пути является именем файла, он должен быть последним компонентом.
Каждый компонент пути также будет ограничен максимальной длиной, указанной для конкретной файловой системы. Как правило, эти правила делятся на две категории: короткие и длинные. Обратите внимание, что имена каталогов хранятся файловой системой как особый тип файла, но правила именования файлов также применяются к именам каталогов. Чтобы подвести итог, путь — это просто строковое представление иерархии между всеми каталогами, которые существуют для определенного файла или имени каталога.
Читайте также: