Получить значение файла INI с Wix
Вопрос
Я хотел бы прочитать значение из файла INI в установщике Wix. Я только что пытался использовать Inifilesearch, но он ищет файл INI или путь, указанный в файле INI (документация неясна), он не Прочитайте значение из файла INI.
Мне нужно это сделать на заказ? И если да, то люди предложили? Кажется, очень странно, если у Wix этого нет!
Код, который я использую:
<Property Id="SP">
<IniFileSearch Id="SearchSPVersion" Name="sp.ini" Section="ServicePack"
Key="Version" Type="raw">
<DirectorySearch Id="SPIniFilePath" Path="[CFGPATH]">
<FileSearch Id="SPIniFile" Name="sp.ini"/>
</DirectorySearch>
</IniFileSearch>
</Property>
INI -файл:
[ServicePack]
Version=1
Я пытался с поиском каталога и без него (используя полный путь в «Имя»), и я попробовал type = "RAW", "файл" и "Directory".
Решение
Попробуйте это в пользовательском действии DTF:Ini файловой считыватель в C#
Другие советы
А Документация по установке Windows утверждает, что файл .ini должен присутствовать в каталоге Microsoft Windows по умолчанию.
Это немного сбивает с толку, так как FileSearch и DirectorySearch являются действительными детьми Wix, однако я считаю, что это для поиска файла или указанного каталога в пределах Сам файл INI. Вы заметите, что три типа значений, которые вы можете найти в файле INI, являются каталогами, файлом и RAW.
Это ограничение установщика Windows, а не Wix. Интерфейсы Microsoft для чтения файлов INI (например, GetPrivateProfileString) Взгляд в папку Windows, если путь не указан. Я полагаю, что команда установщиков Windows решила не упростить вещи и поддерживать только файлы INI в папке Windows, не допустив динамического пути.
Я знаю, что это старая ветка, но я надеялся спасти кого -то от той же боли, которую я пережил ...
Это читает ценность Из файла INI, по крайней мере, в том, что в моих тестах с Wix3.5 и 3.6 бета. т.е.
<Property Id="MY_PROPERTY">
<IniFileSearch Id="myIniSearch" Name="myConfigFile.ini" Section="section1" Key="name" Type="raw" />
</Property>
<Condition Message="myconfigfile not def.">MY_PROPERTY</Condition>
С соответствующим файлом INI, сохраненным в C: Windows MyConfigfile.ini (Windows 7):
[section1]
name=testing
Тем не менее, я сгорел много часов, пытаясь выяснить, почему это не работает, прежде чем понять, что файл INI должен быть Анси И не utf8! Кодированный файл ANSI .INI в правильном месте, т.е. Windows ask.ini будет работать.
Файлы UTF8 просто не читаются, никакой ошибки не происходит, назначение свойств просто не происходит.