Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[MOSS 2007 SP1] - Industrialisation du fichier "docincon.xml"

5 réponses
Avatar
Houdini
Bonjour à toutes et à tous,

Lorsque l'on souhaite indexer des documents "PDF", il est nécessaire:
-d'arrêter le service de recherche
-d'installer un "filtre" sur l'indexeur (Adobe IFilter, Foxit IFilter, ....),
- de positionner quelques clés de registre,
- d'éditer le fichier "docicon.xml", d'ajouter une ligne pour l'icône à
afficher,
- de positionner les droits si il faut,
- de redémarrer le tout et d'effectuer un "full crawl"
- de contrôler que tout va bien

Il y a un certain nombre d'actions que l'on peut industrialiser simplement.
Par contre, le point qui m'inquiète c'est l'insertion automatique des
informations dans le fichier "docicon.xml".

Suis-je obligé de coder une moulinette en C#/XML pour réaliser cette tâche
ou existe-t-il un moyen autre (script PowerShell, VBS, Perl, etc) ? Dans tous
les cas, auriez-vous un lien qui puisse m'aiguiller sur la procédure à suivre
ou un exemple ?

Merci d'avance pour votre aide.
Cordialement,
Houdini

5 réponses

Avatar
Lognoul Marc [MVP]
Bonjour,

Il existe plusieurs méthodes dont:
Développer une solution (feature en fait) qui met à jour le fichier docicon
et copie l'image. Exemple: http://sharepointpdficon.codeplex.com/
Utiliser, comme vous le proposez, du script en powershell ou VBS passant par
les classes XML.

-d'arrêter le service de recherche


net sop osearch

-d'installer un "filtre" sur l'indexeur (Adobe IFilter, Foxit IFilter,
....),


Les deux supportent le mode d'instalaltion quiet/silent. Pour Foxit,
utilisez l'option /qb-! du moteur MSI.

- de positionner quelques clés de registre,


Hmm quelles clés?

- d'éditer le fichier "docicon.xml", d'ajouter une ligne pour l'icône à
afficher,


Voir plus haut
- de positionner les droits si il faut,


Quels droits?

- de redémarrer le tout et d'effectuer un "full crawl"


En Powershell, voir
http://www.codeplex.com/SharePointPSScripts/Release/ProjectReleases.aspx?ReleaseId!674

Il y a un certain nombre d'actions que l'on peut industrialiser
simplement.
Par contre, le point qui m'inquiète c'est l'insertion automatique des
informations dans le fichier "docicon.xml".


Code Snippet comme dirait Gilles:

$sysIconsPath = "C:Program FilesCommon FilesMicrosoft SharedWeb Server
Extensions12Template"
$sysIconsXMLPath = $sysIconsPath +"XMLDocIcon.xml"
$RootDSLShare = "servermesicones"
$12HivePathImages = $sysIconsPath+"Images"

$backup = $sysIconsXMLPath+".bak"
$DocIconXml = [xml](get-content $sysIconsXMLPath)
$DocIconXml.Save($backup)
$DocIconRoot = $DocIconXml.Get_DocumentElement()

# remplir une table avec la liste d'extensions et de fichiers icones à
ajouter...

foreach($Extension in $Extensions){

$srcIconFile = $RootDSLShare + "" + $Extension.CustomIconFile
$destIconFile = $12HivePathImages + "" + $Extension.CustomIconFile
if(Test-Path $srcIconFile){
Copy-Item $srcIconFile $destIconFile -Force
}

$Ext = $Extension.ExtensionName
$IsPresent = $False
$nodelist =
$DocIconXml.selectnodes("DocIcons/ByExtension/Mapping[@Key='$Ext']")

foreach ($node in $nodelist){
$IsPresent = $True
}

if ($IsPresent -eq $False){
$MappingNode = $DocIconXml.CreateElement("Mapping")
$KeyAttribute = $DocIconXml.CreateAttribute("Key")
$KeyAttribute.psbase.value = $Extension.ExtensionName
$MappingNode.SetAttributeNode($KeyAttribute)
$ValueAttribute = $DocIconXml.CreateAttribute("Value")
$ValueAttribute.psbase.value = $Extension.CustomIconFile
$MappingNode.SetAttributeNode($ValueAttribute)
[void]$DocIconRoot.ByExtension.AppendChild($MappingNode)
}else{
Write-Host "- Extension already present in DocIcon.xml"
}

Clear-Variable Ext
Clear-Variable IsPresent
Write-Host
}

$DocIconXml.Save($sysIconsXMLPath)

Encore un peu de patience et je publierai en FR+EN un guide complet
d'industrialisation de l'installation de MOSS sur mon blog... Tout cela en
fera partie

--
Marc [MCSE, MCTS, MVP]
[Heureux celui qui a pu pénétrer les causes secrètes des choses]
[Blog: http://www.marc-antho-etc.net/blog/]
Avatar
Houdini
Bonjour Marc,

Merci pour tous ces renseignements. J'en ai profité également pour lire les
informations sur le site du MVP Emmanuel Bergerat sur l'industrialisation de
MOSS 2007. Il n'est pas tout-à-fait complet, mais c'est déjà un très sérieux
travail.

Après l'installation du "IFilter" de Foxit, il faut positionner quelques
clés de registre comme indiqué dans le fichier "manuel.txt" livré avec sinon
cela ne fonctionne pas.

Les droits, dont je parle, concernent le fichier ".GIF" de l'icône PDF. Dans
mon cas, il faut que je positionne "Full Control" pour le groupe "Local
Administrators", sinon cela ne fonctionne pas dans nos infrastructures.

Cordialement,
Houdini
---------------------------------

"Lognoul Marc [MVP]" a écrit :

Bonjour,

Il existe plusieurs méthodes dont:
Développer une solution (feature en fait) qui met à jour le fichier docicon
et copie l'image. Exemple: http://sharepointpdficon.codeplex.com/
Utiliser, comme vous le proposez, du script en powershell ou VBS passant par
les classes XML.

> -d'arrêter le service de recherche
net sop osearch

> -d'installer un "filtre" sur l'indexeur (Adobe IFilter, Foxit IFilter,
> ....),
Les deux supportent le mode d'instalaltion quiet/silent. Pour Foxit,
utilisez l'option /qb-! du moteur MSI.

> - de positionner quelques clés de registre,
Hmm quelles clés?

> - d'éditer le fichier "docicon.xml", d'ajouter une ligne pour l'icône à
> afficher,
Voir plus haut
> - de positionner les droits si il faut,
Quels droits?

> - de redémarrer le tout et d'effectuer un "full crawl"
En Powershell, voir
http://www.codeplex.com/SharePointPSScripts/Release/ProjectReleases.aspx?ReleaseId!674

> Il y a un certain nombre d'actions que l'on peut industrialiser
> simplement.
> Par contre, le point qui m'inquiète c'est l'insertion automatique des
> informations dans le fichier "docicon.xml".
Code Snippet comme dirait Gilles:

$sysIconsPath = "C:Program FilesCommon FilesMicrosoft SharedWeb Server
Extensions12Template"
$sysIconsXMLPath = $sysIconsPath +"XMLDocIcon.xml"
$RootDSLShare = "servermesicones"
$12HivePathImages = $sysIconsPath+"Images"

$backup = $sysIconsXMLPath+".bak"
$DocIconXml = [xml](get-content $sysIconsXMLPath)
$DocIconXml.Save($backup)
$DocIconRoot = $DocIconXml.Get_DocumentElement()

# remplir une table avec la liste d'extensions et de fichiers icones à
ajouter...

foreach($Extension in $Extensions){

$srcIconFile = $RootDSLShare + "" + $Extension.CustomIconFile
$destIconFile = $12HivePathImages + "" + $Extension.CustomIconFile
if(Test-Path $srcIconFile){
Copy-Item $srcIconFile $destIconFile -Force
}

$Ext = $Extension.ExtensionName
$IsPresent = $False
$nodelist =
$DocIconXml.selectnodes("DocIcons/ByExtension/Mapping[@Key='$Ext']")

foreach ($node in $nodelist){
$IsPresent = $True
}

if ($IsPresent -eq $False){
$MappingNode = $DocIconXml.CreateElement("Mapping")
$KeyAttribute = $DocIconXml.CreateAttribute("Key")
$KeyAttribute.psbase.value = $Extension.ExtensionName
$MappingNode.SetAttributeNode($KeyAttribute)
$ValueAttribute = $DocIconXml.CreateAttribute("Value")
$ValueAttribute.psbase.value = $Extension.CustomIconFile
$MappingNode.SetAttributeNode($ValueAttribute)
[void]$DocIconRoot.ByExtension.AppendChild($MappingNode)
}else{
Write-Host "- Extension already present in DocIcon.xml"
}

Clear-Variable Ext
Clear-Variable IsPresent
Write-Host
}

$DocIconXml.Save($sysIconsXMLPath)

Encore un peu de patience et je publierai en FR+EN un guide complet
d'industrialisation de l'installation de MOSS sur mon blog... Tout cela en
fera partie

--
Marc [MCSE, MCTS, MVP]
[Heureux celui qui a pu pénétrer les causes secrètes des choses]
[Blog: http://www.marc-antho-etc.net/blog/]




Avatar
Houdini
Bonjour Marc,

Merci pour tous ces renseignements. J'en ai profité également pour lire les
informations sur le site du MVP Emmanuel Bergerat sur l'industrialisation de
MOSS 2007. Il n'est pas tout-à-fait complet, mais c'est déjà un très sérieux
travail.

Après l'installation du "IFilter" de Foxit, il faut positionner quelques
clés de registre comme indiqué dans le fichier "manuel.txt" livré avec sinon
cela ne fonctionne pas.

Les droits, dont je parle, concernent le fichier ".GIF" de l'icône PDF. Dans
mon cas, il faut que je positionne "Full Control" pour le groupe "Local
Administrators", sinon cela ne fonctionne pas dans nos infrastructures.

Cordialement,
Houdini
---------------------------------

"Lognoul Marc [MVP]" a écrit :

Bonjour,

Il existe plusieurs méthodes dont:
Développer une solution (feature en fait) qui met à jour le fichier docicon
et copie l'image. Exemple: http://sharepointpdficon.codeplex.com/
Utiliser, comme vous le proposez, du script en powershell ou VBS passant par
les classes XML.

> -d'arrêter le service de recherche
net sop osearch

> -d'installer un "filtre" sur l'indexeur (Adobe IFilter, Foxit IFilter,
> ....),
Les deux supportent le mode d'instalaltion quiet/silent. Pour Foxit,
utilisez l'option /qb-! du moteur MSI.

> - de positionner quelques clés de registre,
Hmm quelles clés?

> - d'éditer le fichier "docicon.xml", d'ajouter une ligne pour l'icône à
> afficher,
Voir plus haut
> - de positionner les droits si il faut,
Quels droits?

> - de redémarrer le tout et d'effectuer un "full crawl"
En Powershell, voir
http://www.codeplex.com/SharePointPSScripts/Release/ProjectReleases.aspx?ReleaseId!674

> Il y a un certain nombre d'actions que l'on peut industrialiser
> simplement.
> Par contre, le point qui m'inquiète c'est l'insertion automatique des
> informations dans le fichier "docicon.xml".
Code Snippet comme dirait Gilles:

$sysIconsPath = "C:Program FilesCommon FilesMicrosoft SharedWeb Server
Extensions12Template"
$sysIconsXMLPath = $sysIconsPath +"XMLDocIcon.xml"
$RootDSLShare = "servermesicones"
$12HivePathImages = $sysIconsPath+"Images"

$backup = $sysIconsXMLPath+".bak"
$DocIconXml = [xml](get-content $sysIconsXMLPath)
$DocIconXml.Save($backup)
$DocIconRoot = $DocIconXml.Get_DocumentElement()

# remplir une table avec la liste d'extensions et de fichiers icones à
ajouter...

foreach($Extension in $Extensions){

$srcIconFile = $RootDSLShare + "" + $Extension.CustomIconFile
$destIconFile = $12HivePathImages + "" + $Extension.CustomIconFile
if(Test-Path $srcIconFile){
Copy-Item $srcIconFile $destIconFile -Force
}

$Ext = $Extension.ExtensionName
$IsPresent = $False
$nodelist =
$DocIconXml.selectnodes("DocIcons/ByExtension/Mapping[@Key='$Ext']")

foreach ($node in $nodelist){
$IsPresent = $True
}

if ($IsPresent -eq $False){
$MappingNode = $DocIconXml.CreateElement("Mapping")
$KeyAttribute = $DocIconXml.CreateAttribute("Key")
$KeyAttribute.psbase.value = $Extension.ExtensionName
$MappingNode.SetAttributeNode($KeyAttribute)
$ValueAttribute = $DocIconXml.CreateAttribute("Value")
$ValueAttribute.psbase.value = $Extension.CustomIconFile
$MappingNode.SetAttributeNode($ValueAttribute)
[void]$DocIconRoot.ByExtension.AppendChild($MappingNode)
}else{
Write-Host "- Extension already present in DocIcon.xml"
}

Clear-Variable Ext
Clear-Variable IsPresent
Write-Host
}

$DocIconXml.Save($sysIconsXMLPath)

Encore un peu de patience et je publierai en FR+EN un guide complet
d'industrialisation de l'installation de MOSS sur mon blog... Tout cela en
fera partie

--
Marc [MCSE, MCTS, MVP]
[Heureux celui qui a pu pénétrer les causes secrètes des choses]
[Blog: http://www.marc-antho-etc.net/blog/]




Avatar
Lognoul Marc [MVP]
Bonjour,

Après l'installation du "IFilter" de Foxit, il faut positionner quelques
clés de registre comme indiqué dans le fichier "manuel.txt" livré avec
sinon
cela ne fonctionne pas.


A ma connaissance, le seul moment ou cela s'avère nécessaire, c'est lors de
l'installation d'un MAJ SharePoint.
Les MAJ écrasant la section du registre gérant les iFilter, il faut la
restaurer (ou réinstaller l'IFilter)

Les droits, dont je parle, concernent le fichier ".GIF" de l'icône PDF.
Dans
mon cas, il faut que je positionne "Full Control" pour le groupe "Local
Administrators", sinon cela ne fonctionne pas dans nos infrastructures.



Très étrange comme comportment. Dans une installation standard, les
administrateurs héritent automatiquement des permissions Full Control.
Est-ce une installation de Windows/WSS/MOSS particulière?

--
Marc [MCSE, MCTS, MVP]
[Heureux celui qui a pu pénétrer les causes secrètes des choses]
[Blog: http://www.marc-antho-etc.net/blog/]
Avatar
Houdini
Bonjour Marc,

Nous avons essayé plusieurs méthodes pour le IFilter et le support IFilter
nous a conforté dans cette démarche ... donc si le support l'a dit ....

Quant aux permissions, on n'applique que ce qui est nécessaire, ce qui
parfois donne quelques surprises ...

Cordialement,
Houdini
----------------------------------------
"Lognoul Marc [MVP]" a écrit :

Bonjour,

> Après l'installation du "IFilter" de Foxit, il faut positionner quelques
> clés de registre comme indiqué dans le fichier "manuel.txt" livré avec
> sinon
> cela ne fonctionne pas.
A ma connaissance, le seul moment ou cela s'avère nécessaire, c'est lors de
l'installation d'un MAJ SharePoint.
Les MAJ écrasant la section du registre gérant les iFilter, il faut la
restaurer (ou réinstaller l'IFilter)

> Les droits, dont je parle, concernent le fichier ".GIF" de l'icône PDF.
> Dans
> mon cas, il faut que je positionne "Full Control" pour le groupe "Local
> Administrators", sinon cela ne fonctionne pas dans nos infrastructures.

Très étrange comme comportment. Dans une installation standard, les
administrateurs héritent automatiquement des permissions Full Control.
Est-ce une installation de Windows/WSS/MOSS particulière?

--
Marc [MCSE, MCTS, MVP]
[Heureux celui qui a pu pénétrer les causes secrètes des choses]
[Blog: http://www.marc-antho-etc.net/blog/]