В Wix-файлах, что означает Name= "SourceDir"?



WiX файлы всегда, кажется, включают в себя эту строку:



<Directory Id="TARGETDIR" Name="SourceDir">


что такое "SourceDir"? Для чего он используется? Это не настоящее имя каталога. Это какая-то магическая ценность?

610   3  

3 ответов:

от: http://robmensching.com/blog/posts/2010/1/26/StackOverflow-what-does-NameSourceDir-refer-to

честно говоря, это то, что мы должны были скрыты от разработчика, но не. К сожалению. Правда в том, что установщик Windows ожидает, что дерево каталогов всегда будет укоренено в строке каталога, где первичный ключ (каталог/@Id) является "TARGETDIR", а столбец DefaultDir (каталог/@Name) - "SourceDir".

в ходе установите, TARGETDIR будет по умолчанию для самого большого диска на машине. Исходный_каталог будет установлено место, где выполняется MSI. Теперь SourceDir сложно после начальной установки, потому что он не будет установлен, если не будет вызвано действие ResolveSource. Однако вы не хотите явно вызывать действие ResolveSource, потому что оно, вероятно, предложит вам предоставить исходный исходный носитель (aka: вставьте компакт-диск, пожалуйста).

Что мы должны были сделать в WiX набор инструментов устраняет необходимость указывать пару TARGETDIR / SourceDir и говорит: "Любой элемент каталога, у которого нет родителя, автоматически будет родительским для TARGETDIR, потому что это то, что говорит MSI SDK.- Вместо этого ты должен сделать это сам... и некоторые разработчики задаются вопросом, что все это значит.

от wix.документация по chm, раздел "Как добавить файл в установщик":

элемент с идентификатором TARGETDIR является требуется установщиком Windows и является корнем всех каталогов конструкции для установки

согласно документации MSDN TARGETDIR и

корневой каталог назначения для установка

также согласно MSDN, Исходный_каталог и

корневой каталог, содержащий исходный файл кабинета или исходный файл дерево установочного пакета

таким образом, свойство SourceDir указывает на реальный каталог: тот, где находится ваш MSI-файл. Вы можете увидеть это в журнале установки при установке с msiexec /lvx* installer.log installer.msi.

однако по какой-то причине SourceDir полностью игнорируется при разрешении TARGETDIR. TARGETDIR должен быть либо установлен явно (например, в командной строке) или же он разрешает ROOTDRIVE. Если ROOTDRIVE не задан явно, то это корень диска с наибольшим свободным пространством.

быстрый тест показывает, что установка компонента в TARGETDIR действительно помещает файлы в корень моего диска D:\ вместо папки, в которой находится MSI.

ничего из этого не было действительно полезно для меня. Я нашел этот поток, задаваясь вопросом, как сделать отладочную сборку, где мои исходные файлы (те, которые идут в установщике) могут быть извлечены из "Release" build dir или "Debug" build dir проекта, для которого я пытаюсь сделать установщик.

после некоторого grepping, я нашел фактический путь в файле wixproj, там SourceDir определяется как:

<SourceDir>$(SolutionDir)distribution\Release</SourceDir>

который на самом деле не имеет ничего общего с установочными файлами и файл проекта. Я смог добавить еще одну группу свойств, которая отражала группу выпуска, которая теперь указывала на мои отладочные файлы:

<SourceDir>$(SolutionDir)distribution\Debug</SourceDir>

надеюсь, это кому-то поможет. Я знаю, что это немного не по теме, но, надеюсь, это поможет кому-то в будущем. Не знаете, почему плагин project не предоставляет это значение? Или мне этого не хватает?

Comments

    Ничего не найдено.