Вопрос

Я хотел бы прочитать значение из файла 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 просто не читаются, никакой ошибки не происходит, назначение свойств просто не происходит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top