2009-01-21 7 views
7

Lors de l'installation, je souhaite éventuellement copier certains fichiers .ini de SOURCEDIR vers TARGETDIR, ce qui signifie que le fichier .msi se trouve dans le dossier de destination dans lequel l'application est configurée. J'ai fait <CopyFile Id="CopyIniFile" DestinationProperty="INSTALLDIR" SourceProperty="SOURCEDIR" SourceName="Dreem15.ini" Delete="no" /> mais il semble qu'il ne fait rien. Le fichier journal n'aide pas beaucoup.WiX: attributs CopyFile

J'ai réussi à faire un scénario beaucoup plus élaboré avec CopyFile et je suis baffelée par ce simple.

Edit: Je ces lignes dans la table MoveFile:

|FileKey  |Component  |SourceName   |SourceFolder|DestFolder|Options 
|CopyIniFile |CoAppLicAndIni|Dreem15.ini   |SOURCEDIR |INSTALLDIR|0 
|MoveDataFile|CoAppLicAndIni|Dreem10_Personal.mdf|DB_DIR10 |INSTALLDIR|0

et le second travaille. DB_DIR10 est recherché dans le registre comme celui-ci

<Property Id="DB_DIR10"> 
    <RegistrySearch Id='DbDirSearch10' Type='raw' Root='HKLM' Key='Software\$(var.CompanyName)\$(var.MsdeInstance)' Name='Dreem10_Personal' /> 
</Property>

Répondre

3

Selon les fenêtres documentation d'installation pour le sourcedir property, il pointe « le répertoire racine qui contient le fichier CAB source ou l'arborescence du fichier source du paquet d'installation ". Ainsi, vous ne saviez pas que SourceDir est une propriété de programme d'installation Windows prédéfinie ou vous essayez de copier un fichier non compressé à partir du support d'installation contenant le fichier msi. Dans ce dernier cas, il serait probablement plus logique d'installer le fichier comme un composant normal afin qu'il soit correctement désinstallé.

Editer: J'ai testé le scénario "copier depuis le support d'installation" et cela a fonctionné pour moi. En outre, j'ai installé avec

misexec /lvx* install.log /i mymsi.msi 

et le journal a montré le fichier en cours de copie. Que dit le journal dans votre cas?

Edit2: Alors que CopyFile a fonctionné pour moi, une meilleure solution est d'ajouter un support non compressé à vos wxs comme ceci:

<Media Id='2'/> 

Et puis adapter l'élément de fichier pour votre fichier de configuration personnalisable comme ceci:

<File Source='path\to\default\config.ini' Compressed='no' DiskId='2' /> 

Cela rendra le look d'installation pour config.ini dans le même dossier que le msi, combinant les avantages de personnalisation et une désinstallation propre.

+0

Exactement. Ce que je veux faire est de donner au support une chance de personnaliser l'installation en mettant un fichier ini à côté du fichier msi. Cela contiendra des paramètres par client. Évidemment, cela pourrait être fait avec une transformation (mst) pour chaque client, mais ne pensez pas que les gars de support peuvent les créer facilement. – wqw

+0

Il ne montre rien ne se passe.MoveFiles est scripté, mais plus tard, aucun FileCopy ne se produit. Comment l'avez-vous fait exactement? Fragment? – wqw

+0

Je viens de copier-coller votre extrait pour le tester et ça a fonctionné pour moi ... Mais vous pouvez essayer l'option "medium non compressé" comme je l'explique ci-dessus. –

0

Peut-on utiliser DestinationDirectory="INSTALLDIR" à la place, ou vous devez créer les propriétés à la volée ??

WIX Wiki CopyFile Element

Ce WXS, va mettre le fichier dans le MSI

<Component Id="myIni.ini" Guid="*"> 
    <File Id="myIni.ini" Name="myIni.ini" KeyPath="yes" Source="!(wix.Files)\myIni.ini"> 
    <CopyFile Id="CopyIni" DestinationProperty="TARGETDIR" /> 
    </File> 
</Component> 
+0

Sous un élément parent de fichier ou de composant? – CheGueVerra

+0

CopyFile est sous un composant parent séparé à partir de maintenant. Fera une action personnalisée si cela ne peut pas être fait facilement. – wqw