В основном я пытаюсь создать WIX msi, которая может запускать devcon.exe (версия командной строки для Windows Hardware Manager), чтобы определить, установлена ли конкретная часть оборудования.Если это так, то установите msi A, иначе установите msi B (A и B уже существуют как отдельные пакеты msi, нам нужна автоматическая выборочная установка в зависимости от оборудования).
В настоящее время я установил WIX SDK исоздали проект WIX, который правильно создает MSI.Я могу делать простые вещи, такие как выполнение CustomActions, чтобы открыть notepad.exe, такие простые вещи.
1-я проблема: у меня проблемы с поиском, как упаковать файл в установщик, который не собираетсябыть установленным в каталог.Я нашел ссылки на это, но нигде не говорится, как это сделать.Мне не нужно помещать его в теги 'Directory', если он не будет установлен на диск хоста, верно?
2-я проблема: devcon.exe нет (из того, что я могу сказать,поправьте меня, если я ошибаюсь), кажется, изменяет его возвращаемое значение в зависимости от того, что он находит, возможно потому, что он делает так много вещей и не ограничен тем, существует ли аппаратное устройство или нет.Так что, если я смогу встроить его и запустить, то мне нужно каким-то образом взять то, что он выводит, в стандартный поток вывода, а затем проанализировать его для конкретных значений, которые я ищу.
OfКонечно, было бы немного проще, потому что у меня уже есть пакетный файл, который может выполнить синтаксический анализ и установить переменную окружения, которая скажет мне то, что мне нужно знать, но, если я смогу внедрить их оба, как мне получитьпакетный файл для ссылки на встроенный devcon.exe, а затем заставить WIX прочитать переменную, или, может быть, я могу установить один (или свойство) в WIX, а затем установить его из пакетного файла?
Может быть, яследует вместо этого создать собственное действие DLL?Можно ли запустить встроенный исполняемый файл из пользовательских действий DLL?Затем я могу запустить devcon.exe и выполнить там весь анализ, а затем просто установить переменную Wix или свойство, чтобы выбрать, что делать дальше.
3-я проблема: возможность запуска одной msi из другой.Я еще не совсем до этого, но я нашел (http://softwareinstall.blogspot.com/2008/06/fun-with-msiembeddedchainer.html), что выглядит многообещающе, хотя я еще не все это прочитал. Одна проблема за раз, мне, конечно, уже достаточно:)