Многие страницы в Интернете и книги об установщике Windows ссылаются на следующую страницу Microsoft ROOTDRIVE для:
Если ROOTDRIVE не задан в командной строке или не создан вВ таблице свойств установщик устанавливает это свойство.Во время административной установки программа установки устанавливает ROOTDRIVE на первый подключенный сетевой диск, на который он может записать данные.Если это не административная установка или установщик не может найти сетевые диски, установщик устанавливает ROOTDRIVE на локальный диск, для которого можно записать максимально свободное пространство .
На компьютере моего клиента C:
имеет больше свободного места, чем Y:
, но приложение устанавливается в Y:\MyApp
вместо C:\Program Files (x86)\MyApp
.Конечно, структура WiX и Каталога выполнены в стандартном стиле:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="$(var.CompanyName)">
<Directory Id="MyAppFolder" Name="MyApp" />
</Directory>
</Directory>
</Directory>
Так что ничего особенного.На других машинах он устанавливается в папку Program Files
, как и ожидалось.
Исходя из моего повседневного опыта, правило с «самым свободным пространством» не может быть верным, поскольку на многих машинах, с которыми я имею дело, имеется довольно маленький SSD, как C:
локальный диск инамного, намного больший диск данных D:
с терабайтами свободного места, чем C:
.Если бы это правило подходило, то в настоящее время большинство компьютеров (все) имеют свои приложения, установленные в их корневой каталог Data Drive (например, D:\
), а не в специально защищенных папках %ProgramFiles%
/ %ProgramFiles (x86)%
.На всех моих машинах с конфигурацией небольшой SSD или жесткий диск с большими данными с большим пространством все эти материалы устанавливаются в мои ожидаемые папки Program Files
в C:
.Таким образом, правило "самого свободного места" определенно НЕ ИСТИНА !!!И MSI не особо определяют любое свойство TARGETDIR
или ROOTDIR
для C:\
в командной строке и таблицу MSI в любом случае!
Так что должно быть другое правило оценки.Который из них?Кто может объяснить странное поведение?
РЕДАКТИРОВАТЬ
Благодаря Стейну я внимательно посмотрел журналы и обнаружил, что ROOTDRIVE
на самом деле указывает на большие локальные диски, ноиз-за более высокого приоритета Свойства системной папки она всегда устанавливается в нужное место на Системный диск .Файл журнала, который я также изучал, задавая вопрос, был файлом Dell Data Protection, который явно должен был установить ROOTDRIVE
на C:\
или системный диск.Таким образом, правило ROOTDRIVE
от MSDN кажется верным, но в большинстве случаев оно не оказывает никакого влияния.
Когда я сам посмотрел на проблемный компьютер, то увидел, что Y: был сетевой диск, затем я искал слово ADMIN et voilà: это была административная установка, хотя мой клиент сказал мне, что он просто дважды щелкнул MSIи Y: был местный двигатель => моя провокационная жалоба в этом году на фестиваль будет состоять в том, что никогда не следует верить тому, что говорит и клянется клиент; -)