Un temps de veille plus long pourrait-il être la solution en cas d'échec d'une mise à jour ?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/37446

  •  09-12-2019
  •  | 
  •  

Question

J'ai un problème avec une mise à jour d'une solution sur farm.Nous avons donc modifié certaines fonctionnalités et ajouté deux fonctionnalités.Les principales modifications ont été apportées à la fonctionnalité principale de la solution.

Sur notre cloud de test, cela fonctionne bien.Sur notre environnement de test, cela fonctionne bien au début, mais après un redéploiement, cela ne fonctionne plus.Les fonctionnalités mises à jour n'ont pas été complètement installées.Cela se produit également dans l'environnement client et certains autres déploiements de tests ont le même problème.

Nous avons donc modifié le script de mise à jour que nous avons fourni.À ce stade, nous avons un temps de veille entre la commande Update-SPSolution et la mise à niveau de toutes les fonctionnalités déployées.Nous avons augmenté le temps de sommeil de 20 secondes à 5 minutes.

Une nouvelle mise à jour s'est maintenant bien déroulée, mais nous voulions recréer l'ancien état et réinstaller la solution avec l'ancien fichier de mise à jour, mais cela fonctionne également bien ;-).(ouais, c'est une situation pire)

Le processus de mise à jour important ressemble à ceci :

Update-SPSolution -LiteralPath $wspFile -Identity $fileName -Force -GACDeployment -ErrorAction:Stop -ErrorVariable:updateError -Confirm:$false
Start-Sleep -Seconds $sleep
$site = Get-SPSite $SiteUrl
$siteFeatureToUpgrade = $site.QueryFeatures("Site", $true);
foreach($f in $siteFeatureToUpgrade)
{
    $f.Upgrade($false);
}

La valeur du sommeil est une fois 20 et une fois 300.Quoi qu'il en soit, se pourrait-il que ce temps de veille résolve le problème de mise à jour ?Parce que je ne le pense pas.

Merci beaucoup.

Était-ce utile?

La solution

Le Update-SPSolution l'appel est asynchrone.Plus précisément, cette commande crée uniquement un travail de minuterie qui sera éventuellement exécuté.

Vous pouvez utiliser cette fonction pour attendre la fin de l'exécution du job :

function Wait-SPSolutionDeploymentJobToFinish
{
    param
    (
        [Parameter(Mandatory=$true)]
        [string]$SolutionFileName
    )
    process {
        $JobName = "*solution-deployment*$SolutionFileName*"
        $job = Get-SPTimerJob | ?{ $_.Name -like $JobName }
        if ($job -eq $null) 
        {
            Write-Host 'Timer job not found'
        }
        else
        {
            $JobFullName = $job.Name
            Write-Host -NoNewLine "Waiting to finish job $JobFullName"

            while ((Get-SPTimerJob $JobFullName) -ne $null) 
            {
                Write-Host -NoNewLine .
                Start-Sleep -Seconds 2
            }
            Write-Host  "Finished waiting for job.."
        }
    }
}

Update-SPSolution -LiteralPath $wspFile -Identity $fileName -Force -GACDeployment -ErrorAction:Stop -ErrorVariable:updateError -Confirm:$false


#Start-Sleep -Seconds $sleep
Wait-SPSolutionDeploymentJobToFinish $fileName

$site = Get-SPSite $SiteUrl
$siteFeatureToUpgrade = $site.QueryFeatures("Site", $true);
foreach($f in $siteFeatureToUpgrade)
{
    $f.Upgrade($false);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top