J'écris un script Powershell DSC afin que je puisse facilement configurer les environnements de développement. J'essaie d'installer Visual Studio 2012 Addons sans ouvrir l'interface graphique.Visual Studio 12 VSIXInstaller signale une exception FileNotFoundException lors de l'exécution dans le script DSC
J'ai téléchargé le fichier Specflow .vsix. Lorsque je cours
& "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSIXInstaller.exe" /q C:\Users\Public\Downloads\TechTalk.SpecFlow.Vs2010Integration.vsix
à l'invite de commande Powershell, cela fonctionne sans accroc. Mais si j'essaie de faire la même chose dans une ressource de script DSC, je rencontre des problèmes. Si vous copiez et collez la commande ci-dessus dans SetScript, VSInstaller.exe entraîne la fin de la commande.
J'ai donc essayé ce qui suit, en fonction de la cmdlet Choco Install-VSIX:
Script installSpecflowVS {
SetScript = {
$specUrl = 'https://visualstudiogallery.msdn.microsoft.com/9915524d-7fb0-43c3-bb3c-a8a14fbd40ee/file/79327/7/TechTalk.SpecFlow.Vs2010Integration.vsix'
$outfile = 'C:\Users\Public\DownloadsTechTalk.SpecFlow.Vs2010Integration.vsix'
wget $specUrl -outfile $outfile
$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName='C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSIXInstaller.exe'
$psi.Arguments="/q $outfile"
$s = [System.Diagnostics.Process]::Start($psi)
$s.WaitForExit()
return $s.ExitCode
}
TestScript = { return $False }
GetScript = { return $True }
}
Dans ce cas, la commande est terminée, mais VSIXInstall.exe génère une erreur FileNotFound que je peux voir à partir du journal créé en C: \ Windows \ Temp \
1/18/2017 10:51:51 AM - Searching for applicable products...
1/18/2017 10:51:51 AM - Found installed product - Microsoft Visual Studio Professional 2012
1/18/2017 10:51:51 AM - System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
at Microsoft.VisualStudio.Settings.ExternalSettingsManager.GetScopePaths(String applicationPath, String suffixOrName, String vsVersion, Boolean isLogged, Boolean isForIsolatedApplication)
at Microsoft.VisualStudio.Settings.ExternalSettingsManager.CreateForApplication(String applicationPath)
at VSIXInstaller.App.GetExtensionManager(SupportedVSSKU sku)
at VSIXInstaller.App.GetExtensionManagerForApplicableSKU(SupportedVSSKU supportedSKU, IInstallableExtension installableExtension, List`1 applicableSKUs)
at VSIXInstaller.App.InitializeInstall()
at VSIXInstaller.App.OnStartup(StartupEventArgs e)
Le fichier est définitivement là; si je l'offre VSInstaller avec quelque chose qui n'existe pas donne l'erreur suivante au lieu
1/18/2017 10:21:45 AM - VSIXInstaller.InvalidCommandLineException: Path to vsix file 'outfile' is invalid or you don't have required access permissions. Please check the path is valid and you have required access permissions.
Le script est en cours d'exécution au niveau local sur une machine virtuelle Windows 7 SP1 avec Powershell 5. Je l'exécuter en utilisant Powershell ISE avec l'administrateur privilèges
Il y a évidemment quelque chose de différent à propos des scripts s'exécutant via DSC Set-Script. Des idées comment réparer pour le réparer? Ou une autre façon de le faire?