Question

Je voudrais lire une valeur à partir d'un fichier INI dans un installateur WIX. Je viens d'essayer d'utiliser InifileSearch, mais cela recherche un fichier INI ou un chemin spécifié dans un fichier INI (la documentation n'est pas claire), elle ne Lire une valeur à partir d'un fichier INI.

Ai-je besoin d'un coustomAction pour ce faire? Et si oui, que suggéreraient les gens? Cela semble très étrange si Wix n'a pas cela, cependant!

Code que j'utilise:

<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>

Fichier INI:

[ServicePack] 
Version=1 

J'ai essayé avec et sans la recherche de répertoire et de fichier (en utilisant le chemin complet dans 'Name'), et j'ai essayé de type = "brut", "fichier" et "répertoire".

Était-ce utile?

La solution

Essayez ceci dans une action personnalisée DTF:Lecteur de fichiers INI en C #

Autres conseils

La Documentation de l'installateur Windows indique que le fichier .ini doit être présent dans le répertoire Microsoft Windows par défaut.

C'est un peu déroutant car Filesearch et DirectorySearch sont des enfants Wix valides, mais je pense que c'est pour rechercher un fichier ou un répertoire spécifié dans le fichier INI lui-même. Vous remarquerez que les trois types de valeurs que vous pouvez rechercher dans un fichier INI sont le répertoire, le fichier et le brut.

C'est une limitation de l'installateur Windows, pas de Wix. Les interfaces Microsoft pour la lecture des fichiers INI (par exemple Getprivateprofilestring) Regarde dans le dossier Windows si un chemin n'est pas spécifié. Je suppose que l'équipe d'installation de Windows a décidé de ne pas simplifier les choses et de prendre uniquement en charge les fichiers INI dans le dossier Windows en n'autorisant pas un chemin dynamique.

I know this is an old thread, but I was hoping to save someone from the same pain I went through....

This does read a value from an ini file, at least so far as my tests with Wix3.5 and 3.6 beta. i.e.

<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>

With the corresponding ini file saved in C:\windows\myConfigFile.ini (Windows 7) :

[section1]
name=testing

However, I burned many hours trying to figure out why this appeared to not work before realising that the ini file must be ANSI and not UTF8! An ANSI encoded .ini file in the correct location i.e. c:\Windows\some.ini will work.

UTF8 files are just not read, no error occurs, the property assignment just doesn't happen.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top