diff --git a/Tools/Autowaiver.csv b/Tools/Autowaiver.csv new file mode 100644 index 0000000000000..b09750a38bf19 --- /dev/null +++ b/Tools/Autowaiver.csv @@ -0,0 +1,410 @@ +"PackageIdentifier","ManifestValue","ManifestKey","RemoveLabel" +"115.115Chrome","115.115Chrome","PackageIdentifier","Policy-Test-1.2" +"3d-io.Exr-IO","3d-io.Exr-IO","PackageIdentifier","Validation-No-Executables" +"ABC.ABCEBankAssistant","ABC.ABCEBankAssistant","PackageIdentifier","Policy-Test-1.8" +"abelhadigital.HostsMan","softpedia-secure-download.com","InstallerUrl","Validation-Domain" +"abgox.InputTip","github.com","InstallerUrl","Validation-Domain" +"AdGuard.AdGuard","agrd.io","InstallerUrl","Validation-Domain" +"AdGuard.AdGuard.Nightly","agrd.io","InstallerUrl","Validation-Domain" +"AdGuard.AdGuardVPN","agrd.io","InstallerUrl","Validation-Domain" +"AdGuard.AdGuardVPN.Nightly","agrd.io","InstallerUrl","Validation-Domain" +"Agretis.SmartInstallMaker","Agretis.SmartInstallMaker","PackageIdentifier","Policy-Test-1.2" +"Airspy.SDRSharp.DotNet9","Airspy.SDRSharp.DotNet9","PackageIdentifier","Policy-Test-2.9" +"AlexanderSeeligerSoftware.BackupServiceHome","download.bdightbits.de","InstallerUrl","Validation-Domain" +"Alibaba.UCCloudDrive","Alibaba.UCCloudDrive","PackageIdentifier","Validation-No-Executables" +"Amazon.AthenaODBCDriver.1","Amazon.AthenaODBCDriver.1","PackageIdentifier","Validation-No-Executables" +"Amazon.AthenaODBCDriver.2","Amazon.AthenaODBCDriver.2","PackageIdentifier","Validation-No-Executables" +"Amazon.KindlePreviewer","Amazon.KindlePreviewer","PackageIdentifier","Policy-Test-1.2" +"Amazon.KindlePreviewer","d2bzeorukaqrvt.cloudfront.net","InstallerUrl","Validation-Domain" +"Amazon.NoSQLWorkbench","Amazon.NoSQLWorkbench","PackageIdentifier","Validation-No-Executables" +"Amazon.NoSQLWorkbench","dy9cqqaswpltd.cloudfront.net","InstallerUrl","Validation-Domain" +"AmyXun.AxGlyph","download.s21i.co99.net","InstallerUrl","Validation-Domain" +"AmyXun.AxMath","download.s21i.co99.net","InstallerUrl","Validation-Domain" +"AndyFul.ConfigureDefender","raw.githubusercontent.com","InstallerUrl","Validation-domain" +"Anysphere.Cursor","download.todesktop.com","InstallerUrl","Validation-Domain" +"AnyTXT.AnyTXTSearcher","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"APIDocumentation.Scalar","download.todesktop.com","InstallerUrl","Validation-Domain" +"Appeon.PowerServerToolkit2022R3-MR03","Appeon.PowerServerToolkit2022R3-MR03","PackageIdentifier","Policy-Test-1.2" +"Appest.Dida","Appest.Dida","PackageIdentifier","Policy-Test-1.8" +"ArtisticStyle.ArtisticStyle","sourceforge.net","InstallerUrl","Validation-Domain" +"ASGARDEXMaintainers.ASGARDEX","github.com","InstallerUrl","Validation-Domain" +"Atos.emotachDirect","www.fzhsw.bazg.admin.ch","InstallerUrl","Validation-Domain" +"Audient.iD","d9w4fhj63j193.cloudfront.net","InstallerUrl","Validation-Domain" +"AuraMarker.Lattics","media.zine.la","InstallerUrl","Validation-Domain" +"Baidu.BaiduWenku","Baidu.BaiduWenku","PackageIdentifier","Validation-No-Executables" +"Balsamiq.Wireframes","build_archives.s3.amazonaws.com","InstallerUrl","Validation-Domain" +"Beanbag.RBTools","downloads.reviewboard.org","InstallerUrl","Validation-Domain" +"BellSoft.LibericaJDK.24.Full","download.bell-sw.com","InstallerUrl","Validation-Domain" +"BellSoft.LibericaJRE.22","download.bell-sw.com","InstallerUrl","Validation-Domain" +"BellSoft.LibericaJRE.23.Full","download.bell-sw.com","InstallerUrl","Validation-Domain" +"BellSoft.LibericaJRE.24.Full","download.bell-sw.com","InstallerUrl","Validation-Domain" +"Bilibili.Bcut","boss.hdslb.com","InstallerUrl","Validation-Domain" +"BioSilico.EssayWriter","download.fasteressays.com","InstallerUrl","Validation-Domain" +"Bitvise.SSH.Client","Bitvise.SSH.Client","PackageIdentifier","Policy-Test-2.7" +"BreakPointSoftware.HexWorkshop","www.bpsoft.com","InstallerUrl","Validation-Domain" +"BrightSign.BAconnected","downloads.bsn.cloud","InstallerUrl","Validation-Domain" +"BrinkSoftware.IbisVoorInfra","2804826.fs1.hubspotusercontent-na1.net","InstallerUrl","Validation-Domain" +"Brinno.BrinnoVideoPlayer","Brinno.BrinnoVideoPlayer","PackageIdentifier","Validation-Domain" +"Buanzo.FFmpegforAudacity","Buanzo.FFmpegforAudacity","PackageIdentifier","Validation-No-Executables" +"Bunny-Wabbit.ISOCreator","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"ByteDance.FeiLian","cdn.isealsuite.com","InstallerUrl","Validation-Domain" +"Calibrite.PROFILER","Calibrite.PROFILER","PackageIdentifier","Policy-Test-1.2" +"canghaicheng.ZhuoMianShiJie","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"CareScribe.CaptionEd","storage.googleapis.com","InstallerUrl","Validation-domain" +"CareScribe.TalkType","storage.googleapis.com","InstallerUrl","Validation-Domain" +"Carrier.BlockLoad","www.shareddocs.com","InstallerUrl","Validation-Domain" +"Carrier.BuildingSystemOptimizer","www.shareddocs.com","InstallerUrl","Validation-Domain" +"Carrier.EngineeringEconomicAnalysis","www.shareddocs.com","InstallerUrl","Validation-Domain" +"Carrier.HourlyAnalysisProgram","www.shareddocs.com","InstallerUrl","Validation-Domain" +"Carrier.PLVPro","www.shareddocs.com","InstallerUrl","Validation-Domain" +"Carrier.SystemDesignLoad","www.shareddocs.com","InstallerUrl","Validation-Domain" +"Castr.Castr","download.todesktop.com","InstallerUrl","Validation-Domain" +"CedricLouvrier.Pinga","css-ig.net","InstallerUrl","Validation-Domain" +"Chainguard.chainctl","dl.enforce.dev","InstallerUrl","Validation-Domain" +"ChrisLong.EZSignIt","www.ssesetup.com","InstallerUrl","Validation-Domain" +"ChrisLong.NTFSHiddenDataFinder","ChrisLong.NTFSHiddenDataFinder","PackageIdentifier","Policy-Test-1.2" +"ChrisPirih.SkiFree","ski.ihoc.net","InstallerUrl","Validation-Domain" +"ChristianThoeing.PasswordTech","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Chromium.ChromeDriver","storage.googleapis.com","InstallerUrl","Validation-Domain" +"Cisco.ChezScheme","Cisco.ChezScheme","PackageIdentifier","Policy-Test-2.7" +"Cisco.JabberVDIAgent","binaries.webex.com","InstallerUrl","Validation-Domain" +"CISDI.Qingtui","qtstatic.oss-cn-hangzhou.aliyuncs.com","InstallerUrl","Validation-Domain" +"CISDI.Qingtui","CISDI.Qingtui","PackageIdentifier","Policy-Test-1.2" +"Clevertouch.Clevershare","saharaplc.s3.eu-west-2.amazonaws.com","InstallerUrl","Validation-Domain" +"Clevertouch.Clevershare.EXE","saharaplc.s3.eu-west-2.amazonaws.com","InstallerUrl","Validation-Domain" +"ClickUp.ClickUp","download.todesktop.com","InstallerUrl","Validation-Domain" +"CloudImperiumGames.RSILauncher","install.robertsspaceindustries.com","InstallerUrl","Validation-Domain" +"cmlanche.lightningvine","sdtpub.s3.bitiful.net","InstallerUrl","Validation-Domain" +"CMU.CLAN","dali.talkbank.org","InstallerUrl","Validation-Domain" +"CMU.CLAN","CMU.CLAN","PackageIdentifier","Policy-Test-1.8" +"CodeBlocks.CodeBlocks","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"CodeBlocks.CodeBlocks.MinGW","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"CologneCodeCompany.XYplorer","CologneCodeCompany.XYplorer","PackageIdentifier","Policy-Test-2.7" +"CologneCodeCompany.XYplorerPortable","CologneCodeCompany.XYplorerPortable","PackageIdentifier","Policy-Test-2.7" +"Comfy.ComfyUI-Desktop","download.todesktop.com","InstallerUrl","Validation-Domain" +"ContourDesign.ContourShuttle","cdn.shopify.com","InstallerUrl","Validation-Domain" +"Convertilla.Convertilla","Convertilla.Convertilla","PackageIdentifier","Policy-Test-1.2" +"Corel.MindManager.23","download.mindjet.com","InstallerUrl","Validation-Domain" +"CrossPlusA.Balabolka","www.cross-plus-a.com","InstallerUrl","Validation-Domain" +"Crucial.StorageExecutive","Crucial.StorageExecutive","PackageIdentifier","Policy-Test-1.2" +"CrystalDewWorld.CrystalMarkRetro","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"CTerm.CTerm","gitee.com","InstallerUrl","Validation-Domain" +"CurveSeries.CurveSeries","www.c3excel.com","InstallerUrl","Validation-Domain" +"DanielGehriger.MSI2XML","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Dedoose.Dedoose","downloads.ctfassets.net","InstallerUrl","Validation-Domain" +"Delinea.DelineaConnectionManager","downloads.cm.thycotic.com","InstallerUrl","Validation-Domain" +"Delinea.PrivilegeManagerAgents","tmsnuget.thycotic.com","InstallerUrl","Validation-Domain" +"Delinea.ThycoticDirectoryServicesAgent","Delinea.ThycoticDirectoryServicesAgent","PackageIdentifier","Validation-No-Executables" +"Delinea.ThycoticLocalSecurityAgent","Delinea.ThycoticLocalSecurityAgent","PackageIdentifier","Validation-No-Executables" +"DelineaInc.ThycoticLocalSecurityAgent","DelineaInc.ThycoticLocalSecurityAgent","PackageIdentifier","Validation-No-Executables" +"DeltaChat.DeltaChat","download.delta.chat","InstallerUrl","Validation-Domain" +"Dialpad.DialpadMeetings","storage.googleapis.com","InstallerUrl","Validation-Domain" +"DigitalScience.Papers","update.readcube.com","InstallerUrl","Validation-Domain" +"DirkJansen.MailCheck2","www.d-jan.de","InstallerUrl","Validation-Domain" +"DisplayLink.GraphicsDriver.HotDesking","DisplayLink.GraphicsDriver.HotDesking","PackageIdentifier","Policy-Test-2.7" +"DistroaAV.DistroAV","DistroaAV.DistroAV","PackageIdentifier","Validation-No-Executables" +"DNAGenics.DNAKitStudio","dgadmixstorage.blob.core.windows.net","InstallerUrl","Validation-Domain" +"DocuSign.DocusignEdit","tools.springcm.com","InstallerUrl","Validation-Domain" +"dougcunha.VsExtensionsTool","dougcunha.VsExtensionsTool","PackageIdentifier","Policy-Test-2.7" +"Doxim.StriataReader.EXE","Doxim.StriataReader.EXE","PackageIdentifier","Validation-No-Executables" +"drsaint.WixTool.Red","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"drsaint.WixTool.Yellow","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Dutchview.Flexwhere","s3.eu-central-1.amazonaws.com","InstallerUrl","Validation-Domain" +"DWANGO.SeirenVoice.yukari.Trial","sv-packed-release.s3.ap-northeast-1.amazonaws.com","InstallerUrl","Validation-Domain" +"Dynare.Dynare","Dynare.Dynare","PackageIdentifier","policy-Test-1.8" +"EasternGraphics.pCon-basket","downloads.pcon-solutions.com","InstallerUrl","Validation-Domain" +"EasternGraphics.pCon-planner.ME","downloads.pcon-solutions.com","InstallerUrl","Validation-Domain" +"EasternGraphics.pCon-planner.Pro","downloads.pcon-solutions.com","InstallerUrl","Validation-Domain" +"EasternGraphics.pCon-planner.STD","downloads.pcon-solutions.com","InstallerUrl","Validation-Domain" +"EastMoney.EastMoney","EastMoney.EastMoney","PackageIdentifier","Policy-Test-2.9" +"EastMoney.EastmoneySpeciality","EastMoney.EastmoneySpeciality","PackageIdentifier","Policy-Test-2.9" +"Easybits.MagicDesktop.Kiosk","Easybits.MagicDesktop.Kiosk","PackageIdentifier","Policy-Test-2.9" +"EclipseFoundation.EclipseIDEforJavaDevelopers","ftp.halifax.rwth-aachen.de","InstallerUrl","Validation-domain" +"EDPB.WebsiteAuditTool","code.europa.eu","InstallerUrl","Validation-Domain" +"ElectronCommunity.ElectronFiddle","github.com","InstallerUrl","Validation-Forbidden-URL-Error" +"Element.Element","packages.element.io","InstallerUrl","URL-Validation-Error" +"ESET.Nod32","ESET.Nod32","PackageIdentifier","Policy-Test-1.2" +"ESET.Security.SmallBusiness","ESET.Security.SmallBusiness","PackageIdentifier","Policy-Test-1.2" +"EuSoft.Dehelper","static.frdic.com","InstallerUrl","Validation-Domain" +"EuSoft.Eshelper","static.frdic.com","InstallerUrl","Validation-Domain" +"EuSoft.Frhelper","static.frdic.com","InstallerUrl","Validation-Domain" +"Fathom.Fathom","storage.googleapis.com","InstallerUrl","Validation-Domain" +"FlightGear.FlightGear","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"FlowJo.FlowJo","fjinstallers.s3.amazonaws.com","InstallerUrl","Validation-Domain" +"flyingpie.windows-terminal-quake.prerelease","flyingpie.windows-terminal-quake.prerelease","PackageIdentifier","Policy-Test-2.9" +"FreedomScientific.Fusion.2024","software.vfo.digital","InstallerUrl","Validation-Domain" +"FreedomScientific.Fusion.2025","software.vfo.digital","InstallerUrl","Validation-Domain" +"FreedomScientific.JAWS.2025","software.vfo.digital","InstallerUrl","Validation-Domain" +"FxSound.FxSound","FxSound.FxSound","PackageIdentifier","Policy-Test-1.2" +"GAI.GAI","webpath.iche2.com","InstallerUrl","Validation-Domain" +"GamaPlatform.Gama","GamaPlatform.Gama","PackageIdentifier","Policy-Test-2.7" +"GameSir.GameSirConnect","xjdl.bigeyes.com","InstallerUrl","Validation-Domain" +"GameSir.GameSirT4kApp","xjdl.bigeyes.com","InstallerUrl","Validation-Domain" +"GauzyTech.NeatConverter","neat-reader.yuezhi.ink","InstallerUrl","Validation-Domain" +"GauzyTech.NeatReader","neat-reader-release.oss-cn-hongkong.aliyuncs.com","InstallerUrl","Validation-Domain" +"Geeks3D.FurMark.2","gpumagick.com","InstallerUrl","Validation-Domain" +"GeoDa.GeoDa","GeoDa.GeoDa","PackageIdentifier","Policy-Test-2.7" +"Glodon.CADReader.CN","yuntu-f.kuaicad.com","InstallerUrl","URL-Validation-Error" +"GnuCash.GnuCash","GnuCash.GnuCash","PackageIdentifier","Policy-Test-1.8" +"GnuWin32.Flex","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"GnuWin32.Patch","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"GOG.Galaxy","cdn.gog.com","InstallerUrl","Validation-Forbidden-URL-Error" +"GovernmentOfThePRC.GuangdongProvince.YueZhengYi","dldir1.qq.com","InstallerUrl","Validation-Domain" +"GovernmentOfThePRC.HeNan.ZhengZhou.ZhengZhengDing","zwdd-zhegnzhou.oss-cn-beijing.aliyuncs.com","InstallerUrl","Validation-Domain" +"GovernmentOfThePRC.SAT.ETB.WithholdingSide","file.etax.chinatax.gov.cn","InstallerUrl","Validation-Domain" +"GPSoftware.DirectoryOpus","cdn2.gpsoft.com.au","InstallerUrl","Validation-Domain" +"gretl.gretl","gretl.gretl","PackageIdentifier","Validation-Unapproved-URL" +"h3poteto.whalebird-desktop","github.com","InstallerUrl","URL-Validation-Error" +"HaiYing.OfficeAI","downloadcdn.office-ai.cn","InstallerUrl","Validation-Domain" +"Hasleo.BackupSuiteFree","www.easyuefi.com","InstallerUrl","Validation-Domain" +"HeartbeatChat.Heartbeat","download.todesktop.com","InstallerUrl","Validation-Domain" +"HMCL.HMCL.Dev","HMCL.HMCL.Dev","PackageIdentifier","Possible-Duplicate" +"HMCL.HMCL.Dev.Maven","HMCL.HMCL.Dev.Maven","PackageIdentifier","Possible-Duplicate" +"HMCL.HMCL.Dev.Maven.TencentCloudMirror","mirrors.cloud.tencent.com","InstallerUrl","Validation-Domain" +"HMCL.HMCL.Dev.Maven.TencentCloudMirror","HMCL.HMCL.Dev.Maven.TencentCloudMirror","PackageIdentifier","Possible-Duplicate" +"HMCL.HMCL.Stable","github.com","InstallerUrl","Validation-Domain" +"HMCL.HMCL.Stable.Maven","HMCL.HMCL.Stable.Maven","PackageIdentifier","Possible-Duplicate" +"HMCL.HMCL.Stable.Maven.TencentCloudMirror","mirrors.cloud.tencent.com","InstallerUrl","Validation-Domain" +"HomeDev.PatchCleanerPortable","deac-riga.dl.sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"HP.ConnectivityKit","updates.moravia-consulting.com","InstallerUrl","Validation-Domain" +"HP.PrimeVirtualCalculator","updates.moravia-consulting.com","InstallerUrl","Validation-Domain" +"HuoHuaSiWei.HuoHuaBianCheng","img.txqn.huohua.cn","InstallerUrl","Validation-Domain" +"HuoHuaSiWei.HuoHuaSiWei","pkm-01.classpodcdn.com","InstallerUrl","Validation-Domain" +"HydrologicEngineeringCenter.HEC-MetVue","www.hec.usace.army.mil","InstallerUrl","Validation-Domain" +"Ideamerit.GalaxyModeler","www.datensen.com","InstallerUrl","Validation-Domain" +"Ideamerit.LunaModeler","www.datensen.com","InstallerUrl","Validation-Domain" +"Ideamerit.MeteorModeler","www.datensen.com","InstallerUrl","Validation-Domain" +"Ideamerit.MoonModeler","www.datensen.com","InstallerUrl","Validation-Domain" +"IDMComputerSolutions,Inc.UEStudio","downloads.ultraedit.com","InstallerUrl","Validation-Domain" +"J2S3.MerciApp","p-merci-windows-adapter.s3.eu-west-3.amazonaws.com","InstallerUrl","Validation-Domain" +"jgaa.WarSetup","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"JiriPolasek.MediaControlsforCommandPalette","JiriPolasek.MediaControlsforCommandPalette","PackageIdentifier","Policy-Test-2.7" +"JustArchiNET.ArchiSteamFarm","JustArchiNET.ArchiSteamFarm","PackageIdentifier","Policy-Test-2.7" +"JustArchiNET.ArchiSteamFarm","JustArchiNET.ArchiSteamFarm","PackageIdentifier","Policy-Test-2.7" +"kangfenmao.CherryStudio","kangfenmao.CherryStudio","PackageIdentifier","Policy-Test-2.7" +"kangyu-california.PersistentWindows","kangyu-california.PersistentWindows","PackageIdentifier","Policy-Test-2.5" +"KaringX.Karing","KaringX.Karing","PackageIdentifier","Policy-Test-1.2" +"KDE.KStars","www.indilib.org","InstallerUrl","Validation-Domain" +"KDE.Parley","KDE.Parley","PackageIdentifier","Policy-Test-2.7" +"KeeperSecurity.KeeperDesktop","KeeperSecurity.KeeperDesktop","PackageIdentifier","Policy-Test-2.8" +"KeeyaiSoft.Flame","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Kenkun.AviUtlExEdit2","spring-fragrance.mints.ne.jp","InstallerUrl","Validation-Domain" +"kevinberger-ch.SafePDFViewer","gitlab.com","InstallerUrl","Validation-Domain" +"KindaBrazy.LynxHub","KindaBrazy.LynxHub","PackageIdentifier","Policy-Test-2.9" +"KindaBrazy.LynxHub","KindaBrazy.LynxHub","PackageIdentifier","Policy-Test-1.2" +"Kingsoft.PowerWord","download.iciba.com","InstallerUrl","Validation-Domain" +"KRTirtho.Flemozi","KRTirtho.Flemozi","PackageIdentifier","Validation-Installation-Error" +"Kubus.BCFManager.Revit.2022","download.bimcollab.com","InstallerUrl","Validation-Domain" +"Kubus.BCFManager.Revit.2023","download.bimcollab.com","InstallerUrl","Validation-Domain" +"Kubus.BCFManager.Revit.2024","download.bimcollab.com","InstallerUrl","Validation-Domain" +"Kubus.BCFManager.Revit.2025","download.bimcollab.com","InstallerUrl","Validation-Domain" +"Kubus.BCFManager.Standalone","download.bimcollab.com","InstallerUrl","Validation-Domain" +"KurtZimmermann.RegCool","KurtZimmermann.RegCool","PackageIdentifier","Validation-No-Executables" +"Lazarus.Lazarus","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Lebo.Lebo","download.mirrorcast.cn","InstallerUrl","Validation-Domain" +"LEERINA.ShanaEncoder","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"LeNgocKhoa.Laragon","github.com","InstallerUrl","URL-Validation-Error" +"LeoKlaus.HeadsetControl-GUI","LeoKlaus.HeadsetControl-GUI","PackageIdentifier","Policy-Test-1.2" +"LifeAt.LifeAt","download.todesktop.com","InstallerUrl","Validation-Domain" +"LinearOrbit.Linear","download.todesktop.com","InstallerUrl","Validation-Domain" +"Logitech.OnboardMemoryManager","download01.logi.com","InstallerUrl","Validation-Domain" +"Logitech.Sync","Logitech.Sync","PackageIdentifier","Policy-Test-2.5" +"LukasHermann.stagetimer-io","storage.googleapis.com","InstallerUrl","Validation-Domain" +"LuxTrust.LuxTrustMiddleware","gitlab.com","InstallerUrl","Validation-Domain" +"Macabacus.Macabacus","Macabacus.Macabacus","PackageIdentifier","Policy-Test-1.8" +"Macabacus.Macabacus","softwarecdn.blob.core.windows.net","InstallerUrl","Validation-Domain" +"Macabacus.Macabacus","Macabacus.Macabacus","PackageIdentifier","Validation-No-Executables" +"MacmillanLearning.iClickerCloud","artifactory.reef-education.com","InstallerUrl","Validation-Domain" +"Magnate.SpeedManager","file2.speedtest.cn","InstallerUrl","Validation-Domain" +"Magnate.SpeedManager.Pro","file2.speedtest.cn","InstallerUrl","Validation-Domain" +"MAILPLUGInc.MAILPLUGMessengerDesktop","chat.mailplug.com","InstallerUrl","URL-Validation-Error" +"Makeblock.xToolCreativeSpace","storage-us.atomm.com","InstallerUrl","Validation-Domain" +"MartiCliment.UniGetUI","github.com","InstallerUrl","Validation-Domain" +"MartiCliment.UniGetUI","MartiCliment.UniGetUI.Pre-Release","PackageIdentifier","Validation-No-Executables" +"MartiCliment.UniGetUI.Pre-Release","MartiCliment.UniGetUI.Pre-Release","PackageIdentifier","Validation-No-Executables" +"MaxCut.MaxCut","s3.amazonaws.com","InstallerUrl","Validation-Domain" +"MAXHUB.MAXHUBShare","ifpserver.com","InstallerUrl","Validation-Domain" +"MAXHUB.MAXHUBShare.CN","static.cvte.com","InstallerUrl","Validation-Domain" +"mendelson.AS2","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Mergiraf.Mergiraf","codeberg.org","InstallerUrl","Validation-Domain" +"MeshIntelligentTechnologies.PiecesCLI","storage.googleapis.com","InstallerUrl","Validation-Domain" +"mesonbuild.meson","mesonbuild.meson","PackageIdentifier","Policy-Test-2.5" +"MicroDicom.DICOMViewer","MicroDicom.DICOMViewer","PackageIdentifier","Policy-Test-1.2" +"MicroDicom.ShellExtension","MicroDicom.ShellExtension","PackageIdentifier","Validation-No-Executables" +"Microsoft.DotNet.UninstallTool","Microsoft.DotNet.UninstallTool","PackageIdentifier","Validation-No-Executables" +"Microsoft.Office.2010.FilterPacks","Microsoft.Office.2010.FilterPacks","PackageIdentifier","Validation-No-Executables" +"Microsoft.RemoteDesktopClient","Microsoft.Skype","PackageIdentifier","Policy-Test-2.5" +"Microsoft.RemoteDesktopClient","res.cdn.office.net","InstallerUrl","Validation-Domain" +"Microsoft.RemoteDesktopMMRService","intstreamreleases.z22.web.core.windows.net","InstallerUrl","Validation-Domain" +"Microsoft.ServerSpeechPlatformRuntime","Microsoft.ServerSpeechPlatformRuntime","PackageIdentifier","Validation-No-Executables" +"Microsoft.ServiceFabricRuntime","Microsoft.ServiceFabricRuntime","PackageIdentifier","Validation-No-Executables" +"Microsoft.Skype","download.skype.com","InstallerUrl","Validation-Domain" +"Microsoft.Skype","Microsoft.Skype","PackageIdentifier","Policy-Test-2.5" +"Microsoft.WindowsAppRuntime.1.6","aka.ms","InstallerUrl","Validation-Domain" +"MinistryOfEducationOfThePRC.SmartSchools","download.ykt.cbern.com.cn","InstallerUrl","Validation-Domain" +"MintplexLabs.AnythingLLM","cdn.useanything.com","InstallerUrl","Validation-Domain" +"Mitel.MitelConnect","upgrade01.sky.shoretel.com","InstallerUrl","Validation-Domain" +"mmozeiko.wcap","raw.githubusercontent.com","InstallerUrl","Validation-Domain" +"Modyfi.Modyfi","download.todesktop.com","InstallerUrl","Validation-Domain" +"Moises.Moises","download.todesktop.com","InstallerUrl","Validation-Domain" +"monkeyWie.Gopeed","monkeyWie.Gopeed","PackageIdentifier","Policy-Test-2.7" +"monkeyWie.Gopeed.Web","monkeyWie.Gopeed.Web","PackageIdentifier","Policy-Test-2.7" +"Morgen.Morgen","download.todesktop.com","InstallerUrl","Validation-Domain" +"Morningstar.MorningstarDirectPrerequisite","Morningstar.MorningstarDirectPrerequisite","PackageIdentifier","Validation-No-Executables" +"Mossmouth.SpelunkyClassic","www.derekyu.com","InstallerUrl","Validation-Domain" +"mpv.mpv","nightly.link","InstallerUrl","Validation-Domain" +"NAVERWEBTOONLtd.SeriesComicViewer","appdown.pstatic.net","InstallerUrl","Validation-Domain" +"Navratovi.RemoteBoulderTimer","download.navrat.name","InstallerUrl","Validation-Domain" +"NDI.NDIRuntime","NDI.NDIRuntime","PackageIdentifier","Validation-No-Executables" +"NelsonNumericalSoftware.Nelson","NelsonNumericalSoftware.Nelson","PackageIdentifier","Policy-Test-2.7" +"NetEase.CloudMusicXStudio","NetEase.CloudMusicXStudio","PackageIdentifier","Validation-No-Executables" +"NewBreedSoftware.TuxPaint","sourceforge.net","InstallerUrl","Validation-unapproved-URL" +"Newforma.Konekt.Addin.Autodesk","cdn.bimtrackapp.co","InstallerUrl","Validation-Domain" +"NICESoftware.AmazonDCVClient","d1uj6qtbmh3dt5.cloudfront.net","InstallerUrl","Validation-Domain" +"NICESoftware.AmazonDCVServer","d1uj6qtbmh3dt5.cloudfront.net","InstallerUrl","Validation-Domain" +"NICESoftware.AmazonDCVSessionManagerAgent","d1uj6qtbmh3dt5.cloudfront.net","InstallerUrl","Validation-Domain" +"NICESoftware.AmazonDCVVirtualDisplay","d1uj6qtbmh3dt5.cloudfront.net","InstallerUrl","Validation-Domain" +"NirSoft.UninstallView","NirSoft.UninstallView","PackageIdentifier","Validation-No-Executables" +"nkdAgility.AzureDevOpsMigrationTools","nkdAgility.AzureDevOpsMigrationTools","PackageIdentifier","Policy-Test-2.7" +"nkdAgility.AzureDevOpsMigrationTools.Preview","nkdAgility.AzureDevOpsMigrationTools.Preview","PackageIdentifier","Policy-Test-2.7" +"NoMachine.NoMachine","NoMachine.NoMachine","PackageIdentifier","Policy-Test-2.5" +"NoMachine.NoMachine.CloudServer","NoMachine.NoMachine.CloudServer","PackageIdentifier","Policy-Test-2.5" +"NoMachine.NoMachine.EnterpriseClient","NoMachine.NoMachine.EnterpriseClient","PackageIdentifier","Policy-Test-2.5" +"NoMachine.NoMachine.EnterpriseCloudServer","NoMachine.NoMachine.EnterpriseCloudServer","PackageIdentifier","Policy-Test-2.5" +"NoMachine.NoMachine.EnterpriseCloudServerCluster","NoMachine.NoMachine.EnterpriseCloudServerCluster","PackageIdentifier","Policy-Test-2.5" +"NoMachine.NoMachine.EnterpriseDesktop","NoMachine.NoMachine.EnterpriseDesktop","PackageIdentifier","Policy-Test-2.5" +"NoMachine.NoMachine.SmallBusinessCloudServer","NoMachine.NoMachine.SmallBusinessCloudServer","PackageIdentifier","Policy-Test-2.5" +"Notion.NotionCalendar","download.todesktop.com","InstallerUrl","Validation-Domain" +"NovationDMS.LaunchkeyMK4Cubase","NovationDMS.LaunchkeyMK4Cubase","PackageIdentifier","Validation-No-Executables" +"NovationDMS.LaunchkeyMK4Cubase","fael-downloads-prod.focusrite.com","InstallerUrl","Validation-Domain" +"Nuclino.Nuclino","s3-eu-central-1.amazonaws.com","InstallerUrl","Validation-Domain" +"Nutstore.EO2","dc-pkg-cdn.jianguoyun.com","InstallerUrl","Validation-Domain" +"Objective.Trapeze","s3-ap-southeast-2.amazonaws.com","InstallerUrl","Validation-Domain" +"obot-platform.obot","obot-platform.obot","PackageIdentifier","Policy-Test-2.7" +"OctopusData.Octoparse","OctopusData.Octoparse","PackageIdentifier","Policy-Test-2.7" +"OctopusData.Octoparse.CN","download.bazhuayu.com","InstallerUrl","validation-domain" +"OctopusData.Octoparse.CN","OctopusData.Octoparse.CN","PackageIdentifier","Policy-Test-2.7" +"ODA.ODADrawingsExplorer","www.opendesign.com","InstallerUrl","Validation-Domain" +"ODA.ODADrawingsExplorer","ODA.ODADrawingsExplorer","PackageIdentifier","Policy-Test-2.7" +"ODA.ODAFileConverter","www.opendesign.com","InstallerUrl","Validation-Domain" +"ODA.ODAViewer","www.opendesign.com","InstallerUrl","Validation-Domain" +"OK1DIX.VUSC4WIN","www.ok2kkw.com","InstallerUrl","Validation-Domain" +"OliverSchwendener.ueli","github.com","InstallerUrl","URL-Validation-Error" +"OpenSourcePhysics.Tracker","physlets.org","InstallerUrl","Validation-Domain" +"Orica.SHOTPlus","downloads.blastiq.com","InstallerUrl","Validation-Domain" +"Orica.SHOTPlus.Tunnel","downloads.blastiq.com","InstallerUrl","Validation-Domain" +"Orica.SHOTPlus.Underground","downloads.blastiq.com","InstallerUrl","Validation-Domain" +"OSGeo.QGIS_LTR","qgis.org","InstallerUrl","URL-Validation-Error" +"OWASP.ThreatDragon","OWASP.ThreatDragon","PackageIdentifier","Policy-Test-2.8" +"paolosalvatori.ServiceBusExplorer","paolosalvatori.ServiceBusExplorer","PackageIdentifier","Policy-Test-2.7" +"PCTI.OrphanRehomer.Scotland","apps.docman.com","InstallerUrl","Validation-Domain" +"Pexip.Pexip.Service","static.videxio.net","InstallerUrl","Validation-Domain" +"Philips.SmartControl","gz-dlsw.tpv-tech.com","InstallerUrl","Validation-Domain" +"Philips.SpeechLive","speech-desktop-app-update.speech.com","InstallerUrl","Validation-Domain" +"Philips.SpeechLive.MSI","speech-desktop-app-update.speech.com","InstallerUrl","Validation-Domain" +"Pinnacle21.Pinnacle21.Community","dthfq9xldm1jq.cloudfront.net","InstallerUrl","Validation-Domain" +"Piriform.CCleaner.Slim","bits.avcdn.net","InstallerUrl","Validation-Domain" +"pljones.s3pe","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"PostgreSQL.PostgreSQL.13","get.enterprisedb.com","InstallerUrl","Validation-Domain" +"PostgreSQL.PostgreSQL.14","get.enterprisedb.com","InstallerUrl","Validation-Domain" +"PostgreSQL.PostgreSQL.15","get.enterprisedb.com","InstallerUrl","Validation-Domain" +"PostgreSQL.PostgreSQL.17","get.enterprisedb.com","InstallerUrl","Validation-Domain" +"ProjectLibre.ProjectLibre","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Psi.Psi","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"PulseHD.PulseHD","storage.googleapis.com","InstallerUrl","Validation-Domain" +"Qingfeng.HeyboxChat","macc.max-c.com","InstallerUrl","Validation-Domain" +"RaisingTheFloor.Morphic","d23vryjv7k8eyb.cloudfront.net","InstallerUrl","Validation-Domain" +"Rakuten.Viber","Rakuten.Viber","PackageIdentifier","Policy-Test-2.5" +"RayHinchliffe.SIV","delivery2.filecroco.com","InstallerUrl","Validation-Domain" +"RedisInsight.RedisInsight","s3.amazonaws.com","InstallerUrl","Validation-Domain" +"RHash.RHash","downloads.sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Ringler.SnapformViewer","mirror1.steuersoftware.ch","InstallerUrl","Validation-Domain" +"RoxyBrowser.RoxyBrowser","lumibrowser-hk.oss-cn-hongkong.aliyuncs.com","InstallerUrl","Validation-Domain" +"RystadEnergy.CubeBrowser","RystadEnergy.CubeBrowser","PackageIdentifier","Validation-Domain" +"Schrodinger.PyMOL","storage.googleapis.com","InstallerUrl","Validation-Domain" +"Seafile.Seadrive","s3.eu-central-1.amazonaws.com","InstallerUrl","Validation-domain" +"Shemeshg.MidiRouterClient","downloads.sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"ShiningLight.OpenSSL","slproweb.com","InstallerUrl","Validation-Domain" +"ShiningLight.OpenSSL.Dev","slproweb.com","InstallerUrl","Validation-Domain" +"SignerLabs.Klee.CPU ","dvnr1hi9fanyr.cloudfront.net","InstallerUrl","Validation-Domain" +"SignerLabs.Klee.CUDA","dvnr1hi9fanyr.cloudfront.net","InstallerUrl","Validation-Domain" +"SimpleTex.SimpleTex","gitee.com","InstallerUrl","Validation-Domain" +"sixspot.freescan","drive.google.com","InstallerUrl","Validation-Domain" +"Slite.Slite","download.todesktop.com","InstallerUrl","Validation-Domain" +"SmartBear.ReadyAPI","dl.eviware.com","InstallerUrl","Validation-Domain" +"SmartBear.ReadyAPILoadUIAgent","dl.eviware.com","InstallerUrl","Validation-Domain" +"SmartBear.ReadyAPIVirtServer","dl.eviware.com","InstallerUrl","Validation-Domain" +"Snowflake.SnowflakeCLI","Snowflake.SnowflakeCLI","PackageIdentifier","Policy-Test-2.7" +"Softpcapps.MaximizeAlways","www.4dots-software.com","InstallerUrl","Validation-Domain" +"Solidigm.StorageTool","sdmsdfwdriver.blob.core.windows.net","InstallerUrl","Validation-Domain" +"Sony.XperiaCompanion","Sony.XperiaCompanion","PackageIdentifier","Policy-Test-1.2" +"SouthRiverTechnologies.WebDrive","srtcdnstorage.blob.core.windows.net","InstallerUrl","Validation-Domain" +"Sparkol.VideoScribe","s3.amazonaws.com","InstallerUrl","Validation-Domain" +"Steady.Steady","download.todesktop.com","InstallerUrl","Validation-Domain" +"Stevenaaus.ScidvsPC","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"StevenMayall.MusicBee","StevenMayall.MusicBee","PackageIdentifier","Validation-No-Executables" +"Summa.ColigoConnectConfigurationTool","downloadcloudcti.blob.core.windows.net","InstallerUrl","Validation-Domain" +"Summay.Sunsama","download.todesktop.com","InstallerUrl","Validation-Domain" +"SURF.LetsConnectClient","codeberg.org","InstallerUrl","Validation-Domain" +"Surfshark.Surfshark","Surfshark.Surfshark","PackageIdentifier","Policy-Test-2.3" +"SUSE.openSUSE.Leap.15.6","publicwsldistros.blob.core.windows.net","InstallerUrl","Validation-Domain" +"SUSE.openSUSE.Tumbleweed","publicwsldistros.blob.core.windows.net","InstallerUrl","Validation-Domain" +"SUSE.SUSE.15SP6","publicwsldistros.blob.core.windows.net","InstallerUrl","Validation-Domain" +"SylvainRougeaux.Echosync","api.luminescence-software.org","InstallerUrl","Validation-Domain" +"SylvainRougeaux.Metatogger","api.luminescence-software.org","InstallerUrl","Validation-Domain" +"SyncTERM.SyncTERM","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Tandem.Tandem","download.todesktop.com","InstallerUrl","Validation-Domain" +"TASKING.winIDEA","www.isystem.com","InstallerUrl","Validation-Domain" +"Technelysium.Chromas","Technelysium.Chromas","PackageIdentifier","Policy-Test-1.8" +"Technelysium.Chromas.Pro","Technelysium.Chromas.Pro","PackageIdentifier","Policy-Test-1.8" +"Tencent.FanLive","d3g.qq.com","InstallerUrl","Validation-Domain" +"Tencent.ima-copilot","ima-app.image.myqcloud.com","InstallerUrl","Validation-Domain" +"Thales.SafeNetAuthenticationClient","www.digicert.com","InstallerUrl","Validation-Domain" +"TheBlind.T-Shell","gitee.com","InstallerUrl","Validation-Domain" +"tibbo.ioninja","tibbo.ioninja","PackageIdentifier","Policy-Test-2.5" +"TigerVNC.TigerVNC","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"TORTUSAI.TORTUS","storage.googleapis.com","InstallerUrl","Validation-Domain" +"Trimble.SketchUpViewer","Trimble.SketchUpViewer","PackageIdentifier","Policy-Test-1.2" +"Typst.Typst","Typst.Typst","PackageIdentifier","Policy-Test-1.2" +"Ubiquiti.IdentityDesktop.Endpoint","fw-download.ubnt.com","InstallerUrl","Validation-Domain" +"Ubiquiti.IdentityDesktop.Enterprise","fw-download.ubnt.com","InstallerUrl","Validation-Domain" +"Ubiquiti.UniFiNetworkServer","dl.ui.com","InstallerUrl","Validation-Domain" +"Ubisoft.Chroma","raw.githubusercontent.com","InstallerUrl","Validation-Domain" +"Ubisoft.Connect","static3.cdn.ubi.com","InstallerUrl","Validation-Domain" +"undergroundwires.privacy.sexy","undergroundwires.privacy.sexy","PackageIdentifier","Policy-Test-2.7" +"UweSieber.ComPortInfo","UweSieber.ComPortInfo","PackageIdentifier","Policy-Test-2.7" +"UweSieber.ComPortInfo","UweSieber.ComPortInfo","PackageIdentifier","Policy-Test-1.2" +"UweSieber.UsbDriveInfo","UweSieber.UsbDriveInfo","PackageIdentifier","Policy-Test-2.7" +"Vector35.BinaryNinja","Vector35.BinaryNinja","PackageIdentifier","Policy-Test-2.5" +"Wagnardsoft.DisplayDriverUninstaller","Wagnardsoft.DisplayDriverUninstaller","PackageIdentifier","Validation-No-Executables" +"wanou067.MazeLauncher","mazecity.eu","InstallerUrl","Validation-Domain" +"WesternDigital.Kitfox","downloads.wdc.com","InstallerUrl","Validation-Domain" +"WetOtter44.StrawberryMusicPlayer.MinGW","codeberg.org","InstallerUrl","Validation-Domain" +"WetOtter44.StrawberryMusicPlayer.MSVC","codeberg.org","InstallerUrl","Validation-Domain" +"Wibu-Systems.CodeMeterRuntimeKit","www.wibu.com","InstallerUrl","Validation-Domain" +"WikimediaProject.AutoWikiBrowser","deac-riga.dl.sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"WinEdtTeam.WinEdt","WinEdtTeam.WinEdt","PackageIdentifier","Policy-Test-1.2" +"WinUAE.WinUAE","download.abime.net","InstallerUrl","Validation-Domain" +"WiresharkFoundation.Stratoshark","1.na.dl.wireshark.org","InstallerUrl","Validation-Domain" +"Wondershare.Mockitt.CN","cdn-release.modao.cc","InstallerUrl","Validation-Domain" +"Wondershare.Mockitt.CN","Wondershare.Mockitt.CN","PackageIdentifier","Validation-No-Executables" +"wpdos.PDFtoPrinter","mendelson.org","InstallerUrl","Validation-Domain" +"wpdos.PDFtoPrinter","wpdos.PDFtoPrinter","PackageIdentifier","Policy-Test-2.9" +"Xersin.Sumsie","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Xerxes-2.ClewdR","Xerxes-2.ClewdR","PackageIdentifier","Policy-Test-2.7" +"Xiaocai.MiniCADDraw","clientdown.appol.com","InstallerUrl","Validation-Domain" +"Xiaocai.MiniCADSee","clientdown.appol.com","InstallerUrl","Validation-Domain" +"XnSoft.XnConvert","XnSoft.XnConvert","PackageIdentifier","Policy-Test-1.2" +"XnSoft.XnConvert","download.xnview.com","InstallerUrl","Validation-Domain" +"XnSoft.XnResize","download.xnview.com","InstallerUrl","Validation-Domain" +"XTLS.Xray-core","XTLS.Xray-core","PackageIdentifier","Policy-Test-2.7" +"YABE.YetAnotherBacnetExplorer","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"Yealink.YealinkUSBConnect.CN","resource.ymcs.ylcloud.com","InstallerUrl","Validation-Domain" +"Youda008.DoomRunner","Youda008.DoomRunner","PackageIdentifier","Policy-Test-1.2" +"YouXiao.YXFile","zhcy.oss-cn-hangzhou.aliyuncs.com","InstallerUrl","Validation-Domain" +"Yuanfudao.Yuanfudao","apphub.fbcontent.cn","InstallerUrl","Validation-Domain" +"Yubico.YubiKeySmartCardMinidriver","Yubico.YubiKeySmartCardMinidriver","PackageIdentifier","Validation-No-Executables" +"Z-DBackup.Z-Cron","z-download.de","InstallerUrl","Validation-Domain" +"zadjii.ObsidianNotesExtension","zadjii.ObsidianNotesExtension","PackageIdentifier","Policy-Test-2.7" +"zelenkov.WixTrim","sourceforge.net","InstallerUrl","Validation-Unapproved-URL" +"ZivverB.V.ZivverOfficePlugin","ZivverB.V.ZivverOfficePlugin","PackageIdentifier","Validation-No-Executables" diff --git a/Tools/ExitCodes.csv b/Tools/ExitCodes.csv new file mode 100644 index 0000000000000..95cbf312fe492 --- /dev/null +++ b/Tools/ExitCodes.csv @@ -0,0 +1,3935 @@ +"Hex","Dec","InvDec","Symbol","Description" +"00000000","0","-4294967296","ERROR_SUCCESS","The operation completed successfully." +"00000001","1","-4294967295","ERROR_INVALID_FUNCTION","Incorrect function." +"00000002","2","-4294967294","ERROR_FILE_NOT_FOUND","The system cannot find the file specified." +"00000003","3","-4294967293","ERROR_PATH_NOT_FOUND","The system cannot find the path specified." +"00000004","4","-4294967292","ERROR_TOO_MANY_OPEN_FILES","The system cannot open the file." +"00000005","5","-4294967291","ERROR_ACCESS_DENIED","Access is denied." +"00000006","6","-4294967290","ERROR_INVALID_HANDLE","The handle is invalid." +"00000007","7","-4294967289","ERROR_ARENA_TRASHED","The storage control blocks were destroyed." +"00000008","8","-4294967288","ERROR_NOT_ENOUGH_MEMORY","Not enough memory resources are available to process this command." +"00000009","9","-4294967287","ERROR_INVALID_BLOCK","The storage control block address is invalid." +"0000000A","10","-4294967286","ERROR_BAD_ENVIRONMENT","The environment is incorrect." +"0000000B","11","-4294967285","ERROR_BAD_FORMAT","An attempt was made to load a program with an incorrect format." +"0000000C","12","-4294967284","ERROR_INVALID_ACCESS","The access code is invalid." +"0000000D","13","-4294967283","ERROR_INVALID_DATA","The data is invalid." +"0000000E","14","-4294967282","ERROR_OUTOFMEMORY","Not enough storage is available to complete this operation." +"0000000F","15","-4294967281","ERROR_INVALID_DRIVE","The system cannot find the drive specified." +"00000010","16","-4294967280","ERROR_CURRENT_DIRECTORY","The directory cannot be removed." +"00000011","17","-4294967279","ERROR_NOT_SAME_DEVICE","The system cannot move the file to a different disk drive." +"00000012","18","-4294967278","ERROR_NO_MORE_FILES","There are no more files." +"00000013","19","-4294967277","ERROR_WRITE_PROTECT","The media is write protected." +"00000014","20","-4294967276","ERROR_BAD_UNIT","The system cannot find the device specified." +"00000015","21","-4294967275","ERROR_NOT_READY","The device is not ready." +"00000016","22","-4294967274","ERROR_BAD_COMMAND","The device does not recognize the command." +"00000017","23","-4294967273","ERROR_CRC","Data error" +"00000018","24","-4294967272","ERROR_BAD_LENGTH","The program issued a command but the command length is incorrect." +"00000019","25","-4294967271","ERROR_SEEK","The drive cannot locate a specific area or track on the disk." +"0000001A","26","-4294967270","ERROR_NOT_DOS_DISK","The specified disk or diskette cannot be accessed." +"0000001B","27","-4294967269","ERROR_SECTOR_NOT_FOUND","The drive cannot find the sector requested." +"0000001C","28","-4294967268","ERROR_OUT_OF_PAPER","The printer is out of paper." +"0000001D","29","-4294967267","ERROR_WRITE_FAULT","The system cannot write to the specified device." +"0000001E","30","-4294967266","ERROR_READ_FAULT","The system cannot read from the specified device." +"0000001F","31","-4294967265","ERROR_GEN_FAILURE","A device attached to the system is not functioning." +"00000020","32","-4294967264","ERROR_SHARING_VIOLATION","The process cannot access the file because it is being used by another process." +"00000021","33","-4294967263","ERROR_LOCK_VIOLATION","The process cannot access the file because another process has locked a portion of the file." +"00000022","34","-4294967262","ERROR_WRONG_DISK","The wrong diskette is in the drive. Insert %2" +"00000024","36","-4294967260","ERROR_SHARING_BUFFER_EXCEEDED","Too many files opened for sharing." +"00000026","38","-4294967258","ERROR_HANDLE_EOF","Reached the end of the file." +"00000027","39","-4294967257","ERROR_HANDLE_DISK_FULL","The disk is full." +"00000032","50","-4294967246","ERROR_NOT_SUPPORTED","The request is not supported." +"00000033","51","-4294967245","ERROR_REM_NOT_LIST","Windows cannot find the network path. Verify that the network path is correct and the destination computer is not busy or turned off. If Windows still cannot find the network path - contact your network administrator." +"00000034","52","-4294967244","ERROR_DUP_NAME","You were not connected because a duplicate name exists on the network. If joining a domain - go to System in Control Panel to change the computer name and try again. If joining a workgroup - choose another workgroup name." +"00000035","53","-4294967243","ERROR_BAD_NETPATH","The network path was not found." +"00000036","54","-4294967242","ERROR_NETWORK_BUSY","The network is busy." +"00000037","55","-4294967241","ERROR_DEV_NOT_EXIST","The specified network resource or device is no longer available." +"00000038","56","-4294967240","ERROR_TOO_MANY_CMDS","The network BIOS command limit has been reached." +"00000039","57","-4294967239","ERROR_ADAP_HDW_ERR","A network adapter hardware error occurred." +"0000003A","58","-4294967238","ERROR_BAD_NET_RESP","The specified server cannot perform the requested operation." +"0000003B","59","-4294967237","ERROR_UNEXP_NET_ERR","An unexpected network error occurred." +"0000003C","60","-4294967236","ERROR_BAD_REM_ADAP","The remote adapter is not compatible." +"0000003D","61","-4294967235","ERROR_PRINTQ_FULL","The printer queue is full." +"0000003E","62","-4294967234","ERROR_NO_SPOOL_SPACE","Space to store the file waiting to be printed is not available on the server." +"0000003F","63","-4294967233","ERROR_PRINT_CANCELLED","Your file waiting to be printed was deleted." +"00000040","64","-4294967232","ERROR_NETNAME_DELETED","The specified network name is no longer available." +"00000041","65","-4294967231","ERROR_NETWORK_ACCESS_DENIED","Network access is denied." +"00000042","66","-4294967230","ERROR_BAD_DEV_TYPE","The network resource type is not correct." +"00000043","67","-4294967229","ERROR_BAD_NET_NAME","The network name cannot be found." +"00000044","68","-4294967228","ERROR_TOO_MANY_NAMES","The name limit for the local computer network adapter card was exceeded." +"00000045","69","-4294967227","ERROR_TOO_MANY_SESS","The network BIOS session limit was exceeded." +"00000046","70","-4294967226","ERROR_SHARING_PAUSED","The remote server has been paused or is in the process of being started." +"00000047","71","-4294967225","ERROR_REQ_NOT_ACCEP","No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept." +"00000048","72","-4294967224","ERROR_REDIR_PAUSED","The specified printer or disk device has been paused." +"00000050","80","-4294967216","ERROR_FILE_EXISTS","The file exists." +"00000052","82","-4294967214","ERROR_CANNOT_MAKE","The directory or file cannot be created." +"00000053","83","-4294967213","ERROR_FAIL_I24","Fail on INT 24." +"00000054","84","-4294967212","ERROR_OUT_OF_STRUCTURES","Storage to process this request is not available." +"00000055","85","-4294967211","ERROR_ALREADY_ASSIGNED","The local device name is already in use." +"00000056","86","-4294967210","ERROR_INVALID_PASSWORD","The specified network password is not correct." +"00000057","87","-4294967209","ERROR_INVALID_PARAMETER","The parameter is incorrect." +"00000058","88","-4294967208","ERROR_NET_WRITE_FAULT","A write fault occurred on the network." +"00000059","89","-4294967207","ERROR_NO_PROC_SLOTS","The system cannot start another process at this time." +"00000064","100","-4294967196","ERROR_TOO_MANY_SEMAPHORES","Cannot create another system semaphore." +"00000065","101","-4294967195","ERROR_EXCL_SEM_ALREADY_OWNED","The exclusive semaphore is owned by another process." +"00000066","102","-4294967194","ERROR_SEM_IS_SET","The semaphore is set and cannot be closed." +"00000067","103","-4294967193","ERROR_TOO_MANY_SEM_REQUESTS","The semaphore cannot be set again." +"00000068","104","-4294967192","ERROR_INVALID_AT_INTERRUPT_TIME","Cannot request exclusive semaphores at interrupt time." +"00000069","105","-4294967191","ERROR_SEM_OWNER_DIED","The previous ownership of this semaphore has ended." +"0000006A","106","-4294967190","ERROR_SEM_USER_LIMIT","Insert the diskette for drive %1." +"0000006B","107","-4294967189","ERROR_DISK_CHANGE","The program stopped because an alternate diskette was not inserted." +"0000006C","108","-4294967188","ERROR_DRIVE_LOCKED","The disk is in use or locked by another process." +"0000006D","109","-4294967187","ERROR_BROKEN_PIPE","The pipe has been ended." +"0000006E","110","-4294967186","ERROR_OPEN_FAILED","The system cannot open the device or file specified." +"0000006F","111","-4294967185","ERROR_BUFFER_OVERFLOW","The file name is too long." +"00000070","112","-4294967184","ERROR_DISK_FULL","There is not enough space on the disk." +"00000071","113","-4294967183","ERROR_NO_MORE_SEARCH_HANDLES","No more internal file identifiers available." +"00000072","114","-4294967182","ERROR_INVALID_TARGET_HANDLE","The target internal file identifier is incorrect." +"00000075","117","-4294967179","ERROR_INVALID_CATEGORY","The IOCTL call made by the application program is not correct." +"00000076","118","-4294967178","ERROR_INVALID_VERIFY_SWITCH","The verify-on-write switch parameter value is not correct." +"00000077","119","-4294967177","ERROR_BAD_DRIVER_LEVEL","The system does not support the command requested." +"00000078","120","-4294967176","ERROR_CALL_NOT_IMPLEMENTED","This function is not supported on this system." +"00000079","121","-4294967175","ERROR_SEM_TIMEOUT","The semaphore timeout period has expired." +"0000007A","122","-4294967174","ERROR_INSUFFICIENT_BUFFER","The data area passed to a system call is too small." +"0000007B","123","-4294967173","ERROR_INVALID_NAME","The filename - directory name - or volume label syntax is incorrect." +"0000007C","124","-4294967172","ERROR_INVALID_LEVEL","The system call level is not correct." +"0000007D","125","-4294967171","ERROR_NO_VOLUME_LABEL","The disk has no volume label." +"0000007E","126","-4294967170","ERROR_MOD_NOT_FOUND","The specified module could not be found." +"0000007F","127","-4294967169","ERROR_PROC_NOT_FOUND","The specified procedure could not be found." +"00000080","128","-4294967168","ERROR_WAIT_NO_CHILDREN","There are no child processes to wait for." +"00000081","129","-4294967167","ERROR_CHILD_NOT_COMPLETE","The %1 application cannot be run in Win32 mode." +"00000082","130","-4294967166","ERROR_DIRECT_ACCESS_HANDLE","Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O." +"00000083","131","-4294967165","ERROR_NEGATIVE_SEEK","An attempt was made to move the file pointer before the beginning of the file." +"00000084","132","-4294967164","ERROR_SEEK_ON_DEVICE","The file pointer cannot be set on the specified device or file." +"00000085","133","-4294967163","ERROR_IS_JOIN_TARGET","A JOIN or SUBST command cannot be used for a drive that contains previously joined drives." +"00000086","134","-4294967162","ERROR_IS_JOINED","An attempt was made to use a JOIN or SUBST command on a drive that has already been joined." +"00000087","135","-4294967161","ERROR_IS_SUBSTED","An attempt was made to use a JOIN or SUBST command on a drive that has already been substituted." +"00000088","136","-4294967160","ERROR_NOT_JOINED","The system tried to delete the JOIN of a drive that is not joined." +"00000089","137","-4294967159","ERROR_NOT_SUBSTED","The system tried to delete the substitution of a drive that is not substituted." +"0000008A","138","-4294967158","ERROR_JOIN_TO_JOIN","The system tried to join a drive to a directory on a joined drive." +"0000008B","139","-4294967157","ERROR_SUBST_TO_SUBST","The system tried to substitute a drive to a directory on a substituted drive." +"0000008C","140","-4294967156","ERROR_JOIN_TO_SUBST","The system tried to join a drive to a directory on a substituted drive." +"0000008D","141","-4294967155","ERROR_SUBST_TO_JOIN","The system tried to SUBST a drive to a directory on a joined drive." +"0000008E","142","-4294967154","ERROR_BUSY_DRIVE","The system cannot perform a JOIN or SUBST at this time." +"0000008F","143","-4294967153","ERROR_SAME_DRIVE","The system cannot join or substitute a drive to or for a directory on the same drive." +"00000090","144","-4294967152","ERROR_DIR_NOT_ROOT","The directory is not a subdirectory of the root directory." +"00000091","145","-4294967151","ERROR_DIR_NOT_EMPTY","The directory is not empty." +"00000092","146","-4294967150","ERROR_IS_SUBST_PATH","The path specified is being used in a substitute." +"00000093","147","-4294967149","ERROR_IS_JOIN_PATH","Not enough resources are available to process this command." +"00000094","148","-4294967148","ERROR_PATH_BUSY","The path specified cannot be used at this time." +"00000095","149","-4294967147","ERROR_IS_SUBST_TARGET","An attempt was made to join or substitute a drive for which a directory on the drive is the target of a previous substitute." +"00000096","150","-4294967146","ERROR_SYSTEM_TRACE","System trace information was not specified in your CONFIG.SYS file - or tracing is disallowed." +"00000097","151","-4294967145","ERROR_INVALID_EVENT_COUNT","The number of specified semaphore events for DosMuxSemWait is not correct." +"00000098","152","-4294967144","ERROR_TOO_MANY_MUXWAITERS","DosMuxSemWait did not execute; too many semaphores are already set." +"00000099","153","-4294967143","ERROR_INVALID_LIST_FORMAT","The DosMuxSemWait list is not correct." +"0000009A","154","-4294967142","ERROR_LABEL_TOO_LONG","The volume label you entered exceeds the label character limit of the target file system." +"0000009B","155","-4294967141","ERROR_TOO_MANY_TCBS","Cannot create another thread." +"0000009C","156","-4294967140","ERROR_SIGNAL_REFUSED","The recipient process has refused the signal." +"0000009D","157","-4294967139","ERROR_DISCARDED","The segment is already discarded and cannot be locked." +"0000009E","158","-4294967138","ERROR_NOT_LOCKED","The segment is already unlocked." +"0000009F","159","-4294967137","ERROR_BAD_THREADID_ADDR","The address for the thread ID is not correct." +"000000A0","160","-4294967136","ERROR_BAD_ARGUMENTS","One or more arguments are not correct." +"000000A1","161","-4294967135","ERROR_BAD_PATHNAME","The specified path is invalid." +"000000A2","162","-4294967134","ERROR_SIGNAL_PENDING","A signal is already pending." +"000000A4","164","-4294967132","ERROR_MAX_THRDS_REACHED","No more threads can be created in the system." +"000000A7","167","-4294967129","ERROR_LOCK_FAILED","Unable to lock a region of a file." +"000000AA","170","-4294967126","ERROR_BUSY","The requested resource is in use." +"000000AB","171","-4294967125","ERROR_DEVICE_SUPPORT_IN_PROGRESS","Device's command support detection is in progress." +"000000AD","173","-4294967123","ERROR_CANCEL_VIOLATION","A lock request was not outstanding for the supplied cancel region." +"000000AE","174","-4294967122","ERROR_ATOMIC_LOCKS_NOT_SUPPORTED","The file system does not support atomic changes to the lock type." +"000000B4","180","-4294967116","ERROR_INVALID_SEGMENT_NUMBER","The system detected a segment number that was not correct." +"000000B6","182","-4294967114","ERROR_INVALID_ORDINAL","The operating system cannot run %1." +"000000B7","183","-4294967113","ERROR_ALREADY_EXISTS","Cannot create a file when that file already exists." +"000000BA","186","-4294967110","ERROR_INVALID_FLAG_NUMBER","The flag passed is not correct." +"000000BB","187","-4294967109","ERROR_SEM_NOT_FOUND","The specified system semaphore name was not found." +"000000BC","188","-4294967108","ERROR_INVALID_STARTING_CODESEG","The operating system cannot run %1." +"000000BD","189","-4294967107","ERROR_INVALID_STACKSEG","The operating system cannot run %1." +"000000BE","190","-4294967106","ERROR_INVALID_MODULETYPE","The operating system cannot run %1." +"000000BF","191","-4294967105","ERROR_INVALID_EXE_SIGNATURE","Cannot run %1 in Win32 mode." +"000000C0","192","-4294967104","ERROR_EXE_MARKED_INVALID","The operating system cannot run %1." +"000000C1","193","-4294967103","ERROR_BAD_EXE_FORMAT","%1 is not a valid Win32 application." +"000000C2","194","-4294967102","ERROR_ITERATED_DATA_EXCEEDS_64k","The operating system cannot run %1." +"000000C3","195","-4294967101","ERROR_INVALID_MINALLOCSIZE","The operating system cannot run %1." +"000000C4","196","-4294967100","ERROR_DYNLINK_FROM_INVALID_RING","The operating system cannot run this application program." +"000000C5","197","-4294967099","ERROR_IOPL_NOT_ENABLED","The operating system is not presently configured to run this application." +"000000C6","198","-4294967098","ERROR_INVALID_SEGDPL","The operating system cannot run %1." +"000000C7","199","-4294967097","ERROR_AUTODATASEG_EXCEEDS_64k","The operating system cannot run this application program." +"000000C8","200","-4294967096","ERROR_RING2SEG_MUST_BE_MOVABLE","The code segment cannot be greater than or equal to 64K." +"000000C9","201","-4294967095","ERROR_RELOC_CHAIN_XEEDS_SEGLIM","The operating system cannot run %1." +"000000CA","202","-4294967094","ERROR_INFLOOP_IN_RELOC_CHAIN","The operating system cannot run %1." +"000000CB","203","-4294967093","ERROR_ENVVAR_NOT_FOUND","The system could not find the environment option that was entered." +"000000CD","205","-4294967091","ERROR_NO_SIGNAL_SENT","No process in the command subtree has a signal handler." +"000000CE","206","-4294967090","ERROR_FILENAME_EXCED_RANGE","The filename or extension is too long." +"000000CF","207","-4294967089","ERROR_RING2_STACK_IN_USE","The ring 2 stack is in use." +"000000D0","208","-4294967088","ERROR_META_EXPANSION_TOO_LONG","The global filename characters - * or ? - are entered incorrectly or too many global filename characters are specified." +"000000D1","209","-4294967087","ERROR_INVALID_SIGNAL_NUMBER","The signal being posted is not correct." +"000000D2","210","-4294967086","ERROR_THREAD_1_INACTIVE","The signal handler cannot be set." +"000000D4","212","-4294967084","ERROR_LOCKED","The segment is locked and cannot be reallocated." +"000000D6","214","-4294967082","ERROR_TOO_MANY_MODULES","Too many dynamic-link modules are attached to this program or dynamic-link module." +"000000D7","215","-4294967081","ERROR_NESTING_NOT_ALLOWED","Cannot nest calls to LoadModule." +"000000D8","216","-4294967080","ERROR_EXE_MACHINE_TYPE_MISMATCH","This version of %1 is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher." +"000000D9","217","-4294967079","ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY","The image file %1 is signed - unable to modify." +"000000DA","218","-4294967078","ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY","The image file %1 is strong signed - unable to modify." +"000000DC","220","-4294967076","ERROR_FILE_CHECKED_OUT","This file is checked out or locked for editing by another user." +"000000DD","221","-4294967075","ERROR_CHECKOUT_REQUIRED","The file must be checked out before saving changes." +"000000DE","222","-4294967074","ERROR_BAD_FILE_TYPE","The file type being saved or retrieved has been blocked." +"000000DF","223","-4294967073","ERROR_FILE_TOO_LARGE","The file size exceeds the limit allowed and cannot be saved." +"000000E0","224","-4294967072","ERROR_FORMS_AUTH_REQUIRED","Access Denied. Before opening files in this location - you must first add the web site to your trusted sites list - browse to the web site - and select the option to login automatically." +"000000E1","225","-4294967071","ERROR_VIRUS_INFECTED","Operation did not complete successfully because the file contains a virus or potentially unwanted software." +"000000E2","226","-4294967070","ERROR_VIRUS_DELETED","This file contains a virus or potentially unwanted software and cannot be opened. Due to the nature of this virus or potentially unwanted software - the file has been removed from this location." +"000000E5","229","-4294967067","ERROR_PIPE_LOCAL","The pipe is local." +"000000E6","230","-4294967066","ERROR_BAD_PIPE","The pipe state is invalid." +"000000E7","231","-4294967065","ERROR_PIPE_BUSY","All pipe instances are busy." +"000000E8","232","-4294967064","ERROR_NO_DATA","The pipe is being closed." +"000000E9","233","-4294967063","ERROR_PIPE_NOT_CONNECTED","No process is on the other end of the pipe." +"000000EA","234","-4294967062","ERROR_MORE_DATA","More data is available." +"000000F0","240","-4294967056","ERROR_VC_DISCONNECTED","The session was canceled." +"000000FE","254","-4294967042","ERROR_INVALID_EA_NAME","The specified extended attribute name was invalid." +"000000FF","255","-4294967041","ERROR_EA_LIST_INCONSISTENT","The extended attributes are inconsistent." +"00000102","258","-4294967038","WAIT_TIMEOUT","The wait operation timed out." +"00000103","259","-4294967037","ERROR_NO_MORE_ITEMS","No more data is available." +"0000010A","266","-4294967030","ERROR_CANNOT_COPY","The copy functions cannot be used." +"0000010B","267","-4294967029","ERROR_DIRECTORY","The directory name is invalid." +"00000113","275","-4294967021","ERROR_EAS_DIDNT_FIT","The extended attributes did not fit in the buffer." +"00000114","276","-4294967020","ERROR_EA_FILE_CORRUPT","The extended attribute file on the mounted file system is corrupt." +"00000115","277","-4294967019","ERROR_EA_TABLE_FULL","The extended attribute table file is full." +"00000116","278","-4294967018","ERROR_INVALID_EA_HANDLE","The specified extended attribute handle is invalid." +"0000011A","282","-4294967014","ERROR_EAS_NOT_SUPPORTED","The mounted file system does not support extended attributes." +"00000120","288","-4294967008","ERROR_NOT_OWNER","Attempt to release mutex not owned by caller." +"0000012A","298","-4294966998","ERROR_TOO_MANY_POSTS","Too many posts were made to a semaphore." +"0000012B","299","-4294966997","ERROR_PARTIAL_COPY","Only part of a ReadProcessMemory or WriteProcessMemory request was completed." +"0000012C","300","-4294966996","ERROR_OPLOCK_NOT_GRANTED","The oplock request is denied." +"0000012D","301","-4294966995","ERROR_INVALID_OPLOCK_PROTOCOL","An invalid oplock acknowledgment was received by the system." +"0000012E","302","-4294966994","ERROR_DISK_TOO_FRAGMENTED","The volume is too fragmented to complete this operation." +"0000012F","303","-4294966993","ERROR_DELETE_PENDING","The file cannot be opened because it is in the process of being deleted." +"00000130","304","-4294966992","ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING","Short name settings may not be changed on this volume due to the global registry setting." +"00000131","305","-4294966991","ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME","Short names are not enabled on this volume." +"00000132","306","-4294966990","ERROR_SECURITY_STREAM_IS_INCONSISTENT","The security stream for the given volume is in an inconsistent state. Please run CHKDSK on the volume." +"00000133","307","-4294966989","ERROR_INVALID_LOCK_RANGE","A requested file lock operation cannot be processed due to an invalid byte range." +"00000134","308","-4294966988","ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT","The subsystem needed to support the image type is not present." +"00000135","309","-4294966987","ERROR_NOTIFICATION_GUID_ALREADY_DEFINED","The specified file already has a notification GUID associated with it." +"00000136","310","-4294966986","ERROR_INVALID_EXCEPTION_HANDLER","An invalid exception handler routine has been detected." +"00000137","311","-4294966985","ERROR_DUPLICATE_PRIVILEGES","Duplicate privileges were specified for the token." +"00000138","312","-4294966984","ERROR_NO_RANGES_PROCESSED","No ranges for the specified operation were able to be processed." +"00000139","313","-4294966983","ERROR_NOT_ALLOWED_ON_SYSTEM_FILE","Operation is not allowed on a file system internal file." +"0000013A","314","-4294966982","ERROR_DISK_RESOURCES_EXHAUSTED","The physical resources of this disk have been exhausted." +"0000013B","315","-4294966981","ERROR_INVALID_TOKEN","The token representing the data is invalid." +"0000013C","316","-4294966980","ERROR_DEVICE_FEATURE_NOT_SUPPORTED","The device does not support the command feature." +"0000013D","317","-4294966979","ERROR_MR_MID_NOT_FOUND","The system cannot find message text for message number 00000%1 in the message file for %2." +"0000013E","318","-4294966978","ERROR_SCOPE_NOT_FOUND","The scope specified was not found." +"0000013F","319","-4294966977","ERROR_UNDEFINED_SCOPE","The Central Access Policy specified is not defined on the target machine." +"00000140","320","-4294966976","ERROR_INVALID_CAP","The Central Access Policy obtained from Active Directory is invalid." +"00000141","321","-4294966975","ERROR_DEVICE_UNREACHABLE","The device is unreachable." +"00000142","322","-4294966974","ERROR_DEVICE_NO_RESOURCES","The target device has insufficient resources to complete the operation." +"00000143","323","-4294966973","ERROR_DATA_CHECKSUM_ERROR","A data integrity checksum error occurred. Data in the file stream is corrupt." +"00000144","324","-4294966972","ERROR_INTERMIXED_KERNEL_EA_OPERATION","An attempt was made to modify both a KERNEL and normal Extended Attribute" +"00000146","326","-4294966970","ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED","Device does not support file-level TRIM." +"00000147","327","-4294966969","ERROR_OFFSET_ALIGNMENT_VIOLATION","The command specified a data offset that does not align to the device's granularity/alignment." +"00000148","328","-4294966968","ERROR_INVALID_FIELD_IN_PARAMETER_LIST","The command specified an invalid field in its parameter list." +"00000149","329","-4294966967","ERROR_OPERATION_IN_PROGRESS","An operation is currently in progress with the device." +"0000014A","330","-4294966966","ERROR_BAD_DEVICE_PATH","An attempt was made to send down the command via an invalid path to the target device." +"0000014B","331","-4294966965","ERROR_TOO_MANY_DESCRIPTORS","The command specified a number of descriptors that exceeded the maximum supported by the device." +"0000014C","332","-4294966964","ERROR_SCRUB_DATA_DISABLED","Scrub is disabled on the specified file." +"0000014D","333","-4294966963","ERROR_NOT_REDUNDANT_STORAGE","The storage device does not provide redundancy." +"0000014E","334","-4294966962","ERROR_RESIDENT_FILE_NOT_SUPPORTED","An operation is not supported on a resident file." +"0000014F","335","-4294966961","ERROR_COMPRESSED_FILE_NOT_SUPPORTED","An operation is not supported on a compressed file." +"00000150","336","-4294966960","ERROR_DIRECTORY_NOT_SUPPORTED","An operation is not supported on a directory." +"00000151","337","-4294966959","ERROR_NOT_READ_FROM_COPY","The specified copy of the requested data could not be read." +"0000015E","350","-4294966946","ERROR_FAIL_NOACTION_REBOOT","No action was taken as a system reboot is required." +"0000015F","351","-4294966945","ERROR_FAIL_SHUTDOWN","The shutdown operation failed." +"00000160","352","-4294966944","ERROR_FAIL_RESTART","The restart operation failed." +"00000161","353","-4294966943","ERROR_MAX_SESSIONS_REACHED","The maximum number of sessions has been reached." +"00000190","400","-4294966896","ERROR_THREAD_MODE_ALREADY_BACKGROUND","The thread is already in background processing mode." +"00000191","401","-4294966895","ERROR_THREAD_MODE_NOT_BACKGROUND","The thread is not in background processing mode." +"00000192","402","-4294966894","ERROR_PROCESS_MODE_ALREADY_BACKGROUND","The process is already in background processing mode." +"00000193","403","-4294966893","ERROR_PROCESS_MODE_NOT_BACKGROUND","The process is not in background processing mode." +"000001E7","487","-4294966809","ERROR_INVALID_ADDRESS","Attempt to access invalid address." +"000001F4","500","-4294966796","ERROR_USER_PROFILE_LOAD","User profile cannot be loaded." +"00000216","534","-4294966762","ERROR_ARITHMETIC_OVERFLOW","Arithmetic result exceeded 32 bits." +"00000217","535","-4294966761","ERROR_PIPE_CONNECTED","There is a process on other end of the pipe." +"00000218","536","-4294966760","ERROR_PIPE_LISTENING","Waiting for a process to open the other end of the pipe." +"00000219","537","-4294966759","ERROR_VERIFIER_STOP","Application verifier has found an error in the current process." +"0000021A","538","-4294966758","ERROR_ABIOS_ERROR","An error occurred in the ABIOS subsystem." +"0000021B","539","-4294966757","ERROR_WX86_WARNING","A warning occurred in the WX86 subsystem." +"0000021C","540","-4294966756","ERROR_WX86_ERROR","An error occurred in the WX86 subsystem." +"0000021D","541","-4294966755","ERROR_TIMER_NOT_CANCELED","An attempt was made to cancel or set a timer that has an associated APC and the subject thread is not the thread that originally set the timer with an associated APC routine." +"0000021E","542","-4294966754","ERROR_UNWIND","Unwind exception code." +"0000021F","543","-4294966753","ERROR_BAD_STACK","An invalid or unaligned stack was encountered during an unwind operation." +"00000220","544","-4294966752","ERROR_INVALID_UNWIND_TARGET","An invalid unwind target was encountered during an unwind operation." +"00000221","545","-4294966751","ERROR_INVALID_PORT_ATTRIBUTES","Invalid Object Attributes specified to NtCreatePort or invalid Port Attributes specified to NtConnectPort" +"00000223","547","-4294966749","ERROR_INVALID_QUOTA_LOWER","An attempt was made to lower a quota limit below the current usage." +"00000224","548","-4294966748","ERROR_DEVICE_ALREADY_ATTACHED","An attempt was made to attach to a device that was already attached to another device." +"00000225","549","-4294966747","ERROR_INSTRUCTION_MISALIGNMENT","An attempt was made to execute an instruction at an unaligned address and the host system does not support unaligned instruction references." +"00000226","550","-4294966746","ERROR_PROFILING_NOT_STARTED","Profiling not started." +"00000227","551","-4294966745","ERROR_PROFILING_NOT_STOPPED","Profiling not stopped." +"00000228","552","-4294966744","ERROR_COULD_NOT_INTERPRET","The passed ACL did not contain the minimum required information." +"00000229","553","-4294966743","ERROR_PROFILING_AT_LIMIT","The number of active profiling objects is at the maximum and no more may be started." +"0000022A","554","-4294966742","ERROR_CANT_WAIT","Used to indicate that an operation cannot continue without blocking for I/O." +"0000022B","555","-4294966741","ERROR_CANT_TERMINATE_SELF","Indicates that a thread attempted to terminate itself by default" +"0000022C","556","-4294966740","ERROR_UNEXPECTED_MM_CREATE_ERR","If an MM error is returned which is not defined in the standard FsRtl filter - it is converted to one of the following errors which is guaranteed to be in the filter. In this case information is lost - however - the filter correctly handles the exception." +"0000022D","557","-4294966739","ERROR_UNEXPECTED_MM_MAP_ERROR","If an MM error is returned which is not defined in the standard FsRtl filter - it is converted to one of the following errors which is guaranteed to be in the filter. In this case information is lost - however - the filter correctly handles the exception." +"0000022E","558","-4294966738","ERROR_UNEXPECTED_MM_EXTEND_ERR","If an MM error is returned which is not defined in the standard FsRtl filter - it is converted to one of the following errors which is guaranteed to be in the filter. In this case information is lost - however - the filter correctly handles the exception." +"0000022F","559","-4294966737","ERROR_BAD_FUNCTION_TABLE","A malformed function table was encountered during an unwind operation." +"00000230","560","-4294966736","ERROR_NO_GUID_TRANSLATION","Indicates that an attempt was made to assign protection to a file system file or directory and one of the SIDs in the security descriptor could not be translated into a GUID that could be stored by the file system. This causes the protection attempt to fail - which may cause a file creation attempt to fail." +"00000231","561","-4294966735","ERROR_INVALID_LDT_SIZE","Indicates that an attempt was made to grow an LDT by setting its size - or that the size was not an even number of selectors." +"00000233","563","-4294966733","ERROR_INVALID_LDT_OFFSET","Indicates that the starting value for the LDT information was not an integral multiple of the selector size." +"00000234","564","-4294966732","ERROR_INVALID_LDT_DESCRIPTOR","Indicates that the user supplied an invalid descriptor when trying to set up Ldt descriptors." +"00000235","565","-4294966731","ERROR_TOO_MANY_THREADS","Indicates a process has too many threads to perform the requested action. For example - assignment of a primary token may only be performed when a process has zero or one threads." +"00000236","566","-4294966730","ERROR_THREAD_NOT_IN_PROCESS","An attempt was made to operate on a thread within a specific process - but the thread specified is not in the process specified." +"00000237","567","-4294966729","ERROR_PAGEFILE_QUOTA_EXCEEDED","Page file quota was exceeded." +"00000238","568","-4294966728","ERROR_LOGON_SERVER_CONFLICT","The Netlogon service cannot start because another Netlogon service running in the domain conflicts with the specified role." +"00000239","569","-4294966727","ERROR_SYNCHRONIZATION_REQUIRED","The SAM database on a Windows Server is significantly out of synchronization with the copy on the Domain Controller. A complete synchronization is required." +"0000023A","570","-4294966726","ERROR_NET_OPEN_FAILED","The NtCreateFile API failed. This error should never be returned to an application - it is a place holder for the Windows Lan Manager Redirector to use in its internal error mapping routines." +"0000023B","571","-4294966725","ERROR_IO_PRIVILEGE_FAILED","{Privilege Failed} The I/O permissions for the process could not be changed." +"0000023C","572","-4294966724","ERROR_CONTROL_C_EXIT","{Application Exit by CTRL+C} The application terminated as a result of a CTRL+C." +"0000023D","573","-4294966723","ERROR_MISSING_SYSTEMFILE","{Missing System File} The required system file %hs is bad or missing." +"0000023E","574","-4294966722","ERROR_UNHANDLED_EXCEPTION","{Application Error} The exception %s" +"0000023F","575","-4294966721","ERROR_APP_INIT_FAILURE","{Application Error} The application was unable to start correctly" +"00000240","576","-4294966720","ERROR_PAGEFILE_CREATE_FAILED","{Unable to Create Paging File} The creation of the paging file %hs failed" +"00000241","577","-4294966719","ERROR_INVALID_IMAGE_HASH","Windows cannot verify the digital signature for this file. A recent hardware or software change might have installed a file that is signed incorrectly or damaged - or that might be malicious software from an unknown source." +"00000242","578","-4294966718","ERROR_NO_PAGEFILE","{No Paging File Specified} No paging file was specified in the system configuration." +"00000243","579","-4294966717","ERROR_ILLEGAL_FLOAT_CONTEXT","{EXCEPTION} A real-mode application issued a floating-point instruction and floating-point hardware is not present." +"00000244","580","-4294966716","ERROR_NO_EVENT_PAIR","An event pair synchronization operation was performed using the thread specific client/server event pair object - but no event pair object was associated with the thread." +"00000245","581","-4294966715","ERROR_DOMAIN_CTRLR_CONFIG_ERROR","A Windows Server has an incorrect configuration." +"00000246","582","-4294966714","ERROR_ILLEGAL_CHARACTER","An illegal character was encountered. For a multi-byte character set this includes a lead byte without a succeeding trail byte. For the Unicode character set this includes the characters 00000FFFF and 00000FFFE." +"00000247","583","-4294966713","ERROR_UNDEFINED_CHARACTER","The Unicode character is not defined in the Unicode character set installed on the system." +"00000248","584","-4294966712","ERROR_FLOPPY_VOLUME","The paging file cannot be created on a floppy diskette." +"00000249","585","-4294966711","ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT","The system BIOS failed to connect a system interrupt to the device or bus for which the device is connected." +"0000024A","586","-4294966710","ERROR_BACKUP_CONTROLLER","This operation is only allowed for the Primary Domain Controller of the domain." +"0000024B","587","-4294966709","ERROR_MUTANT_LIMIT_EXCEEDED","An attempt was made to acquire a mutant such that its maximum count would have been exceeded." +"0000024C","588","-4294966708","ERROR_FS_DRIVER_REQUIRED","A volume has been accessed for which a file system driver is required that has not yet been loaded." +"0000024D","589","-4294966707","ERROR_CANNOT_LOAD_REGISTRY_FILE","{Registry File Failure} The registry cannot load the hive" +"0000024E","590","-4294966706","ERROR_DEBUG_ATTACH_FAILED","{Unexpected Failure in DebugActiveProcess} An unexpected failure occurred while processing a DebugActiveProcess API request. You may choose OK to terminate the process - or Cancel to ignore the error." +"0000024F","591","-4294966705","ERROR_SYSTEM_PROCESS_TERMINATED","{Fatal System Error} The %hs system process terminated unexpectedly with a status of 00000%08x" +"00000250","592","-4294966704","ERROR_DATA_NOT_ACCEPTED","{Data Not Accepted} The TDI client could not handle the data received during an indication." +"00000251","593","-4294966703","ERROR_VDM_HARD_ERROR","NTVDM encountered a hard error." +"00000252","594","-4294966702","ERROR_DRIVER_CANCEL_TIMEOUT","{Cancel Timeout} The driver %hs failed to complete a cancelled I/O request in the allotted time." +"00000253","595","-4294966701","ERROR_REPLY_MESSAGE_MISMATCH","{Reply Message Mismatch} An attempt was made to reply to an LPC message - but the thread specified by the client ID in the message was not waiting on that message." +"00000254","596","-4294966700","ERROR_LOST_WRITEBEHIND_DATA","{Delayed Write Failed} Windows was unable to save all the data for the file %hs. The data has been lost. This error may be caused by a failure of your computer hardware or network connection. Please try to save this file elsewhere." +"00000255","597","-4294966699","ERROR_CLIENT_SERVER_PARAMETERS_INVALID","The parameter(s) passed to the server in the client/server shared memory window were invalid. Too much data may have been put in the shared memory window." +"00000256","598","-4294966698","ERROR_NOT_TINY_STREAM","The stream is not a tiny stream." +"00000257","599","-4294966697","ERROR_STACK_OVERFLOW_READ","The request must be handled by the stack overflow code." +"00000258","600","-4294966696","ERROR_CONVERT_TO_LARGE","Internal OFS status codes indicating how an allocation operation is handled. Either it is retried after the containing onode is moved or the extent stream is converted to a large stream." +"00000259","601","-4294966695","ERROR_FOUND_OUT_OF_SCOPE","The attempt to find the object found an object matching by ID on the volume but it is out of the scope of the handle used for the operation." +"0000025A","602","-4294966694","ERROR_ALLOCATE_BUCKET","The bucket array must be grown. Retry transaction after doing so." +"0000025B","603","-4294966693","ERROR_MARSHALL_OVERFLOW","The user/kernel marshalling buffer has overflowed." +"0000025C","604","-4294966692","ERROR_INVALID_VARIANT","The supplied variant structure contains invalid data." +"0000025D","605","-4294966691","ERROR_BAD_COMPRESSION_BUFFER","The specified buffer contains ill-formed data." +"0000025E","606","-4294966690","ERROR_AUDIT_FAILED","{Audit Failed} An attempt to generate a security audit failed." +"0000025F","607","-4294966689","ERROR_TIMER_RESOLUTION_NOT_SET","The timer resolution was not previously set by the current process." +"00000260","608","-4294966688","ERROR_INSUFFICIENT_LOGON_INFO","There is insufficient account information to log you on." +"00000261","609","-4294966687","ERROR_BAD_DLL_ENTRYPOINT","{Invalid DLL Entrypoint} The dynamic link library %hs is not written correctly. The stack pointer has been left in an inconsistent state. The entrypoint should be declared as WINAPI or STDCALL. Select YES to fail the DLL load. Select NO to continue execution. Selecting NO may cause the application to operate incorrectly." +"00000262","610","-4294966686","ERROR_BAD_SERVICE_ENTRYPOINT","{Invalid Service Callback Entrypoint} The %hs service is not written correctly. The stack pointer has been left in an inconsistent state. The callback entrypoint should be declared as WINAPI or STDCALL. Selecting OK will cause the service to continue operation. However - the service process may operate incorrectly." +"00000263","611","-4294966685","ERROR_IP_ADDRESS_CONFLICT1","There is an IP address conflict with another system on the network." +"00000264","612","-4294966684","ERROR_IP_ADDRESS_CONFLICT2","There is an IP address conflict with another system on the network." +"00000265","613","-4294966683","ERROR_REGISTRY_QUOTA_LIMIT","{Low On Registry Space} The system has reached the maximum size allowed for the system part of the registry. Additional storage requests will be ignored." +"00000266","614","-4294966682","ERROR_NO_CALLBACK_ACTIVE","A callback return system service cannot be executed when no callback is active." +"00000267","615","-4294966681","ERROR_PWD_TOO_SHORT","The password provided is too short to meet the policy of your user account. Please choose a longer password." +"00000268","616","-4294966680","ERROR_PWD_TOO_RECENT","The policy of your user account does not allow you to change passwords too frequently. This is done to prevent users from changing back to a familiar - but potentially discovered - password. If you feel your password has been compromised then please contact your administrator immediately to have a new one assigned." +"00000269","617","-4294966679","ERROR_PWD_HISTORY_CONFLICT","You have attempted to change your password to one that you have used in the past. The policy of your user account does not allow this. Please select a password that you have not previously used." +"0000026A","618","-4294966678","ERROR_UNSUPPORTED_COMPRESSION","The specified compression format is unsupported." +"0000026B","619","-4294966677","ERROR_INVALID_HW_PROFILE","The specified hardware profile configuration is invalid." +"0000026C","620","-4294966676","ERROR_INVALID_PLUGPLAY_DEVICE_PATH","The specified Plug and Play registry device path is invalid." +"0000026D","621","-4294966675","ERROR_QUOTA_LIST_INCONSISTENT","The specified quota list is internally inconsistent with its descriptor." +"0000026E","622","-4294966674","ERROR_EVALUATION_EXPIRATION","{Windows Evaluation Notification} The evaluation period for this installation of Windows has expired. This system will shutdown in 1 hour. To restore access to this installation of Windows - please upgrade this installation using a licensed distribution of this product." +"0000026F","623","-4294966673","ERROR_ILLEGAL_DLL_RELOCATION","{Illegal System DLL Relocation} The system DLL %hs was relocated in memory. The application will not run properly. The relocation occurred because the DLL %hs occupied an address range reserved for Windows system DLLs. The vendor supplying the DLL should be contacted for a new DLL." +"00000270","624","-4294966672","ERROR_DLL_INIT_FAILED_LOGOFF","{DLL Initialization Failed} The application failed to initialize because the window station is shutting down." +"00000271","625","-4294966671","ERROR_VALIDATE_CONTINUE","The validation process needs to continue on to the next step." +"00000272","626","-4294966670","ERROR_NO_MORE_MATCHES","There are no more matches for the current index enumeration." +"00000273","627","-4294966669","ERROR_RANGE_LIST_CONFLICT","The range could not be added to the range list because of a conflict." +"00000274","628","-4294966668","ERROR_SERVER_SID_MISMATCH","The server process is running under a SID different than that required by client." +"00000275","629","-4294966667","ERROR_CANT_ENABLE_DENY_ONLY","A group marked use for deny only cannot be enabled." +"00000276","630","-4294966666","ERROR_FLOAT_MULTIPLE_FAULTS","{EXCEPTION} Multiple floating point faults." +"00000277","631","-4294966665","ERROR_FLOAT_MULTIPLE_TRAPS","{EXCEPTION} Multiple floating point traps." +"00000278","632","-4294966664","ERROR_NOINTERFACE","The requested interface is not supported." +"00000279","633","-4294966663","ERROR_DRIVER_FAILED_SLEEP","{System Standby Failed} The driver %hs does not support standby mode. Updating this driver may allow the system to go to standby mode." +"0000027A","634","-4294966662","ERROR_CORRUPT_SYSTEM_FILE","The system file %1 has become corrupt and has been replaced." +"0000027B","635","-4294966661","ERROR_COMMITMENT_MINIMUM","{Virtual Memory Minimum Too Low} Your system is low on virtual memory. Windows is increasing the size of your virtual memory paging file. During this process - memory requests for some applications may be denied. For more information - see Help." +"0000027C","636","-4294966660","ERROR_PNP_RESTART_ENUMERATION","A device was removed so enumeration must be restarted." +"0000027D","637","-4294966659","ERROR_SYSTEM_IMAGE_BAD_SIGNATURE","{Fatal System Error} The system image %s is not properly signed. The file has been replaced with the signed file. The system has been shut down." +"0000027E","638","-4294966658","ERROR_PNP_REBOOT_REQUIRED","Device will not start without a reboot." +"0000027F","639","-4294966657","ERROR_INSUFFICIENT_POWER","There is not enough power to complete the requested operation." +"00000280","640","-4294966656","ERROR_MULTIPLE_FAULT_VIOLATION","ERROR_MULTIPLE_FAULT_VIOLATION" +"00000282","642","-4294966654","ERROR_PORT_NOT_SET","An attempt to remove a processes DebugPort was made - but a port was not already associated with the process." +"00000283","643","-4294966653","ERROR_DS_VERSION_CHECK_FAILURE","This version of Windows is not compatible with the behavior version of directory forest - domain or domain controller." +"00000284","644","-4294966652","ERROR_RANGE_NOT_FOUND","The specified range could not be found in the range list." +"00000286","646","-4294966650","ERROR_NOT_SAFE_MODE_DRIVER","The driver was not loaded because the system is booting into safe mode." +"00000287","647","-4294966649","ERROR_FAILED_DRIVER_ENTRY","The driver was not loaded because it failed its initialization call." +"00000288","648","-4294966648","ERROR_DEVICE_ENUMERATION_ERROR","The ""%hs"" encountered an error while applying power or reading the device configuration. This may be caused by a failure of your hardware or by a poor connection." +"00000289","649","-4294966647","ERROR_MOUNT_POINT_NOT_RESOLVED","The create operation failed because the name contained at least one mount point which resolves to a volume to which the specified device object is not attached." +"0000028A","650","-4294966646","ERROR_INVALID_DEVICE_OBJECT_PARAMETER","The device object parameter is either not a valid device object or is not attached to the volume specified by the file name." +"0000028B","651","-4294966645","ERROR_MCA_OCCURED","A Machine Check Error has occurred. Please check the system eventlog for additional information." +"0000028C","652","-4294966644","ERROR_DRIVER_DATABASE_ERROR","There was error [%2] processing the driver database." +"0000028D","653","-4294966643","ERROR_SYSTEM_HIVE_TOO_LARGE","System hive size has exceeded its limit." +"0000028E","654","-4294966642","ERROR_DRIVER_FAILED_PRIOR_UNLOAD","The driver could not be loaded because a previous version of the driver is still in memory." +"0000028F","655","-4294966641","ERROR_VOLSNAP_PREPARE_HIBERNATE","{Volume Shadow Copy Service} Please wait while the Volume Shadow Copy Service prepares volume %hs for hibernation." +"00000290","656","-4294966640","ERROR_HIBERNATION_FAILURE","The system has failed to hibernate" +"00000291","657","-4294966639","ERROR_PWD_TOO_LONG","The password provided is too long to meet the policy of your user account. Please choose a shorter password." +"00000299","665","-4294966631","ERROR_FILE_SYSTEM_LIMITATION","The requested operation could not be completed due to a file system limitation." +"0000029C","668","-4294966628","ERROR_ASSERTION_FAILURE","An assertion failure has occurred." +"0000029D","669","-4294966627","ERROR_ACPI_ERROR","An error occurred in the ACPI subsystem." +"0000029E","670","-4294966626","ERROR_WOW_ASSERTION","WOW Assertion Error." +"0000029F","671","-4294966625","ERROR_PNP_BAD_MPS_TABLE","A device is missing in the system BIOS MPS table. This device will not be used. Please contact your system vendor for system BIOS update." +"000002A0","672","-4294966624","ERROR_PNP_TRANSLATION_FAILED","A translator failed to translate resources." +"000002A1","673","-4294966623","ERROR_PNP_IRQ_TRANSLATION_FAILED","A IRQ translator failed to translate resources." +"000002A2","674","-4294966622","ERROR_PNP_INVALID_ID","Driver %2 returned invalid ID for a child device" +"000002A3","675","-4294966621","ERROR_WAKE_SYSTEM_DEBUGGER","{Kernel Debugger Awakened} the system debugger was awakened by an interrupt." +"000002A4","676","-4294966620","ERROR_HANDLES_CLOSED","{Handles Closed} Handles to objects have been automatically closed as a result of the requested operation." +"000002A5","677","-4294966619","ERROR_EXTRANEOUS_INFORMATION","{Too Much Information} The specified access control list" +"000002A6","678","-4294966618","ERROR_RXACT_COMMIT_NECESSARY","This warning level status indicates that the transaction state already exists for the registry sub-tree - but that a transaction commit was previously aborted. The commit has NOT been completed - but has not been rolled back either" +"000002A7","679","-4294966617","ERROR_MEDIA_CHECK","{Media Changed} The media may have changed." +"000002A8","680","-4294966616","ERROR_GUID_SUBSTITUTION_MADE","{GUID Substitution} During the translation of a global identifier" +"000002A9","681","-4294966615","ERROR_STOPPED_ON_SYMLINK","The create operation stopped after reaching a symbolic link." +"000002AA","682","-4294966614","ERROR_LONGJUMP","A long jump has been executed." +"000002AB","683","-4294966613","ERROR_PLUGPLAY_QUERY_VETOED","The Plug and Play query operation was not successful." +"000002AC","684","-4294966612","ERROR_UNWIND_CONSOLIDATE","A frame consolidation has been executed." +"000002AD","685","-4294966611","ERROR_REGISTRY_HIVE_RECOVERED","{Registry Hive Recovered} Registry hive" +"000002AE","686","-4294966610","ERROR_DLL_MIGHT_BE_INSECURE","The application is attempting to run executable code from the module %hs. This may be insecure. An alternative - %hs - is available. Should the application use the secure module %hs?" +"000002B1","689","-4294966607","ERROR_DBG_REPLY_LATER","Debugger will reply later." +"000002B2","690","-4294966606","ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE","Debugger cannot provide handle." +"000002B3","691","-4294966605","ERROR_DBG_TERMINATE_THREAD","Debugger terminated thread." +"000002B4","692","-4294966604","ERROR_DBG_TERMINATE_PROCESS","Debugger terminated process." +"000002B5","693","-4294966603","ERROR_DBG_CONTROL_C","Debugger got control C." +"000002B6","694","-4294966602","ERROR_DBG_PRINTEXCEPTION_C","Debugger printed exception on control C." +"000002B7","695","-4294966601","ERROR_DBG_RIPEXCEPTION","Debugger received RIP exception." +"000002B8","696","-4294966600","ERROR_DBG_CONTROL_BREAK","Debugger received control break." +"000002B9","697","-4294966599","ERROR_DBG_COMMAND_EXCEPTION","Debugger command communication exception." +"000002BA","698","-4294966598","ERROR_OBJECT_NAME_EXISTS","{Object Exists} An attempt was made to create an object and the object name already existed." +"000002BB","699","-4294966597","ERROR_THREAD_WAS_SUSPENDED","{Thread Suspended} A thread termination occurred while the thread was suspended. The thread was resumed - and termination proceeded." +"000002BC","700","-4294966596","ERROR_IMAGE_NOT_AT_BASE","{Image Relocated} An image file could not be mapped at the address specified in the image file. Local fixups must be performed on this image." +"000002BD","701","-4294966595","ERROR_RXACT_STATE_CREATED","This informational level status indicates that a specified registry sub-tree transaction state did not yet exist and had to be created." +"000002BE","702","-4294966594","ERROR_SEGMENT_NOTIFICATION","{Segment Load} A virtual DOS machine" +"000002BF","703","-4294966593","ERROR_BAD_CURRENT_DIRECTORY","{Invalid Current Directory} The process cannot switch to the startup current directory %hs. Select OK to set current directory to %hs - or select CANCEL to exit." +"000002C0","704","-4294966592","ERROR_FT_READ_RECOVERY_FROM_BACKUP","{Redundant Read} To satisfy a read request - the NT fault-tolerant file system successfully read the requested data from a redundant copy. This was done because the file system encountered a failure on a member of the fault-tolerant volume - but was unable to reassign the failing area of the device." +"000002C1","705","-4294966591","ERROR_FT_WRITE_RECOVERY","{Redundant Write} To satisfy a write request - the NT fault-tolerant file system successfully wrote a redundant copy of the information. This was done because the file system encountered a failure on a member of the fault-tolerant volume - but was not able to reassign the failing area of the device." +"000002C2","706","-4294966590","ERROR_IMAGE_MACHINE_TYPE_MISMATCH","{Machine Type Mismatch} The image file %hs is valid - but is for a machine type other than the current machine. Select OK to continue - or CANCEL to fail the DLL load." +"000002C3","707","-4294966589","ERROR_RECEIVE_PARTIAL","{Partial Data Received} The network transport returned partial data to its client. The remaining data will be sent later." +"000002C4","708","-4294966588","ERROR_RECEIVE_EXPEDITED","{Expedited Data Received} The network transport returned data to its client that was marked as expedited by the remote system." +"000002C5","709","-4294966587","ERROR_RECEIVE_PARTIAL_EXPEDITED","{Partial Expedited Data Received} The network transport returned partial data to its client and this data was marked as expedited by the remote system. The remaining data will be sent later." +"000002C6","710","-4294966586","ERROR_EVENT_DONE","{TDI Event Done} The TDI indication has completed successfully." +"000002C7","711","-4294966585","ERROR_EVENT_PENDING","{TDI Event Pending} The TDI indication has entered the pending state." +"000002C8","712","-4294966584","ERROR_CHECKING_FILE_SYSTEM","Checking file system on %wZ." +"000002C9","713","-4294966583","ERROR_FATAL_APP_EXIT","{Fatal Application Exit} %hs." +"000002CA","714","-4294966582","ERROR_PREDEFINED_HANDLE","The specified registry key is referenced by a predefined handle." +"000002CB","715","-4294966581","ERROR_WAS_UNLOCKED","{Page Unlocked} The page protection of a locked page was changed to 'No Access' and the page was unlocked from memory and from the process." +"000002CC","716","-4294966580","ERROR_SERVICE_NOTIFICATION","%hs" +"000002CE","718","-4294966578","ERROR_LOG_HARD_ERROR","Application popup: %1 : %2" +"000002D1","721","-4294966575","ERROR_NO_YIELD_PERFORMED","A yield execution was performed and no thread was available to run." +"000002D2","722","-4294966574","ERROR_TIMER_RESUME_IGNORED","The resumable flag to a timer API was ignored." +"000002D3","723","-4294966573","ERROR_ARBITRATION_UNHANDLED","The arbiter has deferred arbitration of these resources to its parent." +"000002D4","724","-4294966572","ERROR_CARDBUS_NOT_SUPPORTED","The inserted CardBus device cannot be started because of a configuration error on ""%hs""." +"000002D5","725","-4294966571","ERROR_MP_PROCESSOR_MISMATCH","The CPUs in this multiprocessor system are not all the same revision level. To use all processors the operating system restricts itself to the features of the least capable processor in the system. Should problems occur with this system - contact the CPU manufacturer to see if this mix of processors is supported." +"000002D6","726","-4294966570","ERROR_HIBERNATED","The system was put into hibernation." +"000002D7","727","-4294966569","ERROR_RESUME_HIBERNATION","The system was resumed from hibernation." +"000002D8","728","-4294966568","ERROR_FIRMWARE_UPDATED","Windows has detected that the system firmware" +"000002D9","729","-4294966567","ERROR_DRIVERS_LEAKING_LOCKED_PAGES","A device driver is leaking locked I/O pages causing system degradation. The system has automatically enabled tracking code in order to try and catch the culprit." +"000002DA","730","-4294966566","ERROR_WAKE_SYSTEM","The system has awoken." +"000002DB","731","-4294966565","ERROR_WAIT_1","ERROR_WAIT_1" +"000002E5","741","-4294966555","ERROR_REPARSE","A reparse should be performed by the Object Manager since the name of the file resulted in a symbolic link." +"000002E6","742","-4294966554","ERROR_OPLOCK_BREAK_IN_PROGRESS","An open/create operation completed while an oplock break is underway." +"000002E7","743","-4294966553","ERROR_VOLUME_MOUNTED","A new volume has been mounted by a file system." +"000002E8","744","-4294966552","ERROR_RXACT_COMMITTED","This success level status indicates that the transaction state already exists for the registry sub-tree - but that a transaction commit was previously aborted. The commit has now been completed." +"000002E9","745","-4294966551","ERROR_NOTIFY_CLEANUP","This indicates that a notify change request has been completed due to closing the handle which made the notify change request." +"000002EA","746","-4294966550","ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED","{Connect Failure on Primary Transport} An attempt was made to connect to the remote server %hs on the primary transport - but the connection failed. The computer WAS able to connect on a secondary transport." +"000002EB","747","-4294966549","ERROR_PAGE_FAULT_TRANSITION","Page fault was a transition fault." +"000002EC","748","-4294966548","ERROR_PAGE_FAULT_DEMAND_ZERO","Page fault was a demand zero fault." +"000002ED","749","-4294966547","ERROR_PAGE_FAULT_COPY_ON_WRITE","Page fault was a demand zero fault." +"000002EE","750","-4294966546","ERROR_PAGE_FAULT_GUARD_PAGE","Page fault was a demand zero fault." +"000002EF","751","-4294966545","ERROR_PAGE_FAULT_PAGING_FILE","Page fault was satisfied by reading from a secondary storage device." +"000002F0","752","-4294966544","ERROR_CACHE_PAGE_LOCKED","Cached page was locked during operation." +"000002F1","753","-4294966543","ERROR_CRASH_DUMP","Crash dump exists in paging file." +"000002F2","754","-4294966542","ERROR_BUFFER_ALL_ZEROS","Specified buffer contains all zeros." +"000002F3","755","-4294966541","ERROR_REPARSE_OBJECT","A reparse should be performed by the Object Manager since the name of the file resulted in a symbolic link." +"000002F4","756","-4294966540","ERROR_RESOURCE_REQUIREMENTS_CHANGED","The device has succeeded a query-stop and its resource requirements have changed." +"000002F5","757","-4294966539","ERROR_TRANSLATION_COMPLETE","The translator has translated these resources into the global space and no further translations should be performed." +"000002F6","758","-4294966538","ERROR_NOTHING_TO_TERMINATE","A process being terminated has no threads to terminate." +"000002F7","759","-4294966537","ERROR_PROCESS_NOT_IN_JOB","The specified process is not part of a job." +"000002F8","760","-4294966536","ERROR_PROCESS_IN_JOB","The specified process is part of a job." +"000002F9","761","-4294966535","ERROR_VOLSNAP_HIBERNATE_READY","{Volume Shadow Copy Service} The system is now ready for hibernation." +"000002FA","762","-4294966534","ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY","A file system or file system filter driver has successfully completed an FsFilter operation." +"000002FB","763","-4294966533","ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED","The specified interrupt vector was already connected." +"000002FC","764","-4294966532","ERROR_INTERRUPT_STILL_CONNECTED","The specified interrupt vector is still connected." +"000002FD","765","-4294966531","ERROR_WAIT_FOR_OPLOCK","An operation is blocked waiting for an oplock." +"000002FE","766","-4294966530","ERROR_DBG_EXCEPTION_HANDLED","Debugger handled exception." +"000002FF","767","-4294966529","ERROR_DBG_CONTINUE","Debugger continued." +"00000300","768","-4294966528","ERROR_CALLBACK_POP_STACK","An exception occurred in a user mode callback and the kernel callback frame should be removed." +"00000301","769","-4294966527","ERROR_COMPRESSION_DISABLED","Compression is disabled for this volume." +"00000302","770","-4294966526","ERROR_CANTFETCHBACKWARDS","The data provider cannot fetch backwards through a result set." +"00000303","771","-4294966525","ERROR_CANTSCROLLBACKWARDS","The data provider cannot scroll backwards through a result set." +"00000304","772","-4294966524","ERROR_ROWSNOTRELEASED","The data provider requires that previously fetched data is released before asking for more data." +"00000305","773","-4294966523","ERROR_BAD_ACCESSOR_FLAGS","The data provider was not able to interpret the flags set for a column binding in an accessor." +"00000306","774","-4294966522","ERROR_ERRORS_ENCOUNTERED","One or more errors occurred while processing the request." +"00000307","775","-4294966521","ERROR_NOT_CAPABLE","The implementation is not capable of performing the request." +"00000308","776","-4294966520","ERROR_REQUEST_OUT_OF_SEQUENCE","The client of a component requested an operation which is not valid given the state of the component instance." +"00000309","777","-4294966519","ERROR_VERSION_PARSE_ERROR","A version number could not be parsed." +"0000030A","778","-4294966518","ERROR_BADSTARTPOSITION","The iterator's start position is invalid." +"0000030B","779","-4294966517","ERROR_MEMORY_HARDWARE","The hardware has reported an uncorrectable memory error." +"0000030C","780","-4294966516","ERROR_DISK_REPAIR_DISABLED","The attempted operation required self healing to be enabled." +"0000030D","781","-4294966515","ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE","The Desktop heap encountered an error while allocating session memory. There is more information in the system event log." +"0000030E","782","-4294966514","ERROR_SYSTEM_POWERSTATE_TRANSITION","The system power state is transitioning from %2 to %3." +"0000030F","783","-4294966513","ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION","The system power state is transitioning from %2 to %3 but could enter %4." +"00000310","784","-4294966512","ERROR_MCA_EXCEPTION","A thread is getting dispatched with MCA EXCEPTION because of MCA." +"00000311","785","-4294966511","ERROR_ACCESS_AUDIT_BY_POLICY","Access to %1 is monitored by policy rule %2." +"00000312","786","-4294966510","ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY","Access to %1 has been restricted by your Administrator by policy rule %2." +"00000313","787","-4294966509","ERROR_ABANDON_HIBERFILE","A valid hibernation file has been invalidated and should be abandoned." +"00000314","788","-4294966508","ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED","{Delayed Write Failed} Windows was unable to save all the data for the file %hs; the data has been lost. This error may be caused by network connectivity issues. Please try to save this file elsewhere." +"00000315","789","-4294966507","ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR","{Delayed Write Failed} Windows was unable to save all the data for the file %hs; the data has been lost. This error was returned by the server on which the file exists. Please try to save this file elsewhere." +"00000316","790","-4294966506","ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR","{Delayed Write Failed} Windows was unable to save all the data for the file %hs; the data has been lost. This error may be caused if the device has been removed or the media is write-protected." +"00000317","791","-4294966505","ERROR_BAD_MCFG_TABLE","The resources required for this device conflict with the MCFG table." +"00000318","792","-4294966504","ERROR_DISK_REPAIR_REDIRECTED","The volume repair could not be performed while it is online. Please schedule to take the volume offline so that it can be repaired." +"00000319","793","-4294966503","ERROR_DISK_REPAIR_UNSUCCESSFUL","The volume repair was not successful." +"0000031A","794","-4294966502","ERROR_CORRUPT_LOG_OVERFULL","One of the volume corruption logs is full. Further corruptions that may be detected won't be logged." +"0000031B","795","-4294966501","ERROR_CORRUPT_LOG_CORRUPTED","One of the volume corruption logs is internally corrupted and needs to be recreated. The volume may contain undetected corruptions and must be scanned." +"0000031C","796","-4294966500","ERROR_CORRUPT_LOG_UNAVAILABLE","One of the volume corruption logs is unavailable for being operated on." +"0000031D","797","-4294966499","ERROR_CORRUPT_LOG_DELETED_FULL","One of the volume corruption logs was deleted while still having corruption records in them. The volume contains detected corruptions and must be scanned." +"0000031E","798","-4294966498","ERROR_CORRUPT_LOG_CLEARED","One of the volume corruption logs was cleared by chkdsk and no longer contains real corruptions." +"0000031F","799","-4294966497","ERROR_ORPHAN_NAME_EXHAUSTED","Orphaned files exist on the volume but could not be recovered because no more new names could be created in the recovery directory. Files must be moved from the recovery directory." +"00000320","800","-4294966496","ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE","The oplock that was associated with this handle is now associated with a different handle." +"00000321","801","-4294966495","ERROR_CANNOT_GRANT_REQUESTED_OPLOCK","An oplock of the requested level cannot be granted. An oplock of a lower level may be available." +"00000322","802","-4294966494","ERROR_CANNOT_BREAK_OPLOCK","The operation did not complete successfully because it would cause an oplock to be broken. The caller has requested that existing oplocks not be broken." +"00000323","803","-4294966493","ERROR_OPLOCK_HANDLE_CLOSED","The handle with which this oplock was associated has been closed. The oplock is now broken." +"00000324","804","-4294966492","ERROR_NO_ACE_CONDITION","The specified access control entry" +"00000325","805","-4294966491","ERROR_INVALID_ACE_CONDITION","The specified access control entry" +"00000326","806","-4294966490","ERROR_FILE_HANDLE_REVOKED","Access to the specified file handle has been revoked." +"00000327","807","-4294966489","ERROR_IMAGE_AT_DIFFERENT_BASE","An image file was mapped at a different address from the one specified in the image file but fixups will still be automatically performed on the image." +"000003E2","994","-4294966302","ERROR_EA_ACCESS_DENIED","Access to the extended attribute was denied." +"000003E3","995","-4294966301","ERROR_OPERATION_ABORTED","The I/O operation has been aborted because of either a thread exit or an application request." +"000003E4","996","-4294966300","ERROR_IO_INCOMPLETE","Overlapped I/O event is not in a signaled state." +"000003E5","997","-4294966299","ERROR_IO_PENDING","Overlapped I/O operation is in progress." +"000003E6","998","-4294966298","ERROR_NOACCESS","Invalid access to memory location." +"000003E7","999","-4294966297","ERROR_SWAPERROR","Error performing inpage operation." +"000003E9","1001","-4294966295","ERROR_STACK_OVERFLOW","Recursion too deep; the stack overflowed." +"000003EA","1002","-4294966294","ERROR_INVALID_MESSAGE","The window cannot act on the sent message." +"000003EB","1003","-4294966293","ERROR_CAN_NOT_COMPLETE","Cannot complete this function." +"000003EC","1004","-4294966292","ERROR_INVALID_FLAGS","Invalid flags." +"000003ED","1005","-4294966291","ERROR_UNRECOGNIZED_VOLUME","The volume does not contain a recognized file system. Please make sure that all required file system drivers are loaded and that the volume is not corrupted." +"000003EE","1006","-4294966290","ERROR_FILE_INVALID","The volume for a file has been externally altered so that the opened file is no longer valid." +"000003EF","1007","-4294966289","ERROR_FULLSCREEN_MODE","The requested operation cannot be performed in full-screen mode." +"000003F0","1008","-4294966288","ERROR_NO_TOKEN","An attempt was made to reference a token that does not exist." +"000003F1","1009","-4294966287","ERROR_BADDB","The configuration registry database is corrupt." +"000003F2","1010","-4294966286","ERROR_BADKEY","The configuration registry key is invalid." +"000003F3","1011","-4294966285","ERROR_CANTOPEN","The configuration registry key could not be opened." +"000003F4","1012","-4294966284","ERROR_CANTREAD","The configuration registry key could not be read." +"000003F5","1013","-4294966283","ERROR_CANTWRITE","The configuration registry key could not be written." +"000003F6","1014","-4294966282","ERROR_REGISTRY_RECOVERED","One of the files in the registry database had to be recovered by use of a log or alternate copy. The recovery was successful." +"000003F7","1015","-4294966281","ERROR_REGISTRY_CORRUPT","The registry is corrupted. The structure of one of the files containing registry data is corrupted - or the system's memory image of the file is corrupted - or the file could not be recovered because the alternate copy or log was absent or corrupted." +"000003F8","1016","-4294966280","ERROR_REGISTRY_IO_FAILED","An I/O operation initiated by the registry failed unrecoverably. The registry could not read in - or write out - or flush - one of the files that contain the system's image of the registry." +"000003F9","1017","-4294966279","ERROR_NOT_REGISTRY_FILE","The system has attempted to load or restore a file into the registry - but the specified file is not in a registry file format." +"000003FA","1018","-4294966278","ERROR_KEY_DELETED","Illegal operation attempted on a registry key that has been marked for deletion." +"000003FB","1019","-4294966277","ERROR_NO_LOG_SPACE","System could not allocate the required space in a registry log." +"000003FC","1020","-4294966276","ERROR_KEY_HAS_CHILDREN","Cannot create a symbolic link in a registry key that already has subkeys or values." +"000003FD","1021","-4294966275","ERROR_CHILD_MUST_BE_VOLATILE","Cannot create a stable subkey under a volatile parent key." +"000003FE","1022","-4294966274","ERROR_NOTIFY_ENUM_DIR","A notify change request is being completed and the information is not being returned in the caller's buffer. The caller now needs to enumerate the files to find the changes." +"0000041B","1051","-4294966245","ERROR_DEPENDENT_SERVICES_RUNNING","A stop control has been sent to a service that other running services are dependent on." +"0000041C","1052","-4294966244","ERROR_INVALID_SERVICE_CONTROL","The requested control is not valid for this service." +"0000041D","1053","-4294966243","ERROR_SERVICE_REQUEST_TIMEOUT","The service did not respond to the start or control request in a timely fashion." +"0000041E","1054","-4294966242","ERROR_SERVICE_NO_THREAD","A thread could not be created for the service." +"0000041F","1055","-4294966241","ERROR_SERVICE_DATABASE_LOCKED","The service database is locked." +"00000420","1056","-4294966240","ERROR_SERVICE_ALREADY_RUNNING","An instance of the service is already running." +"00000421","1057","-4294966239","ERROR_INVALID_SERVICE_ACCOUNT","The account name is invalid or does not exist - or the password is invalid for the account name specified." +"00000422","1058","-4294966238","ERROR_SERVICE_DISABLED","The service cannot be started - either because it is disabled or because it has no enabled devices associated with it." +"00000423","1059","-4294966237","ERROR_CIRCULAR_DEPENDENCY","Circular service dependency was specified." +"00000424","1060","-4294966236","ERROR_SERVICE_DOES_NOT_EXIST","The specified service does not exist as an installed service." +"00000425","1061","-4294966235","ERROR_SERVICE_CANNOT_ACCEPT_CTRL","The service cannot accept control messages at this time." +"00000426","1062","-4294966234","ERROR_SERVICE_NOT_ACTIVE","The service has not been started." +"00000427","1063","-4294966233","ERROR_FAILED_SERVICE_CONTROLLER_CONNECT","The service process could not connect to the service controller." +"00000428","1064","-4294966232","ERROR_EXCEPTION_IN_SERVICE","An exception occurred in the service when handling the control request." +"00000429","1065","-4294966231","ERROR_DATABASE_DOES_NOT_EXIST","The database specified does not exist." +"0000042A","1066","-4294966230","ERROR_SERVICE_SPECIFIC_ERROR","The service has returned a service-specific error code." +"0000042B","1067","-4294966229","ERROR_PROCESS_ABORTED","The process terminated unexpectedly." +"0000042C","1068","-4294966228","ERROR_SERVICE_DEPENDENCY_FAIL","The dependency service or group failed to start." +"0000042D","1069","-4294966227","ERROR_SERVICE_LOGON_FAILED","The service did not start due to a logon failure." +"0000042E","1070","-4294966226","ERROR_SERVICE_START_HANG","After starting - the service hung in a start-pending state." +"0000042F","1071","-4294966225","ERROR_INVALID_SERVICE_LOCK","The specified service database lock is invalid." +"00000430","1072","-4294966224","ERROR_SERVICE_MARKED_FOR_DELETE","The specified service has been marked for deletion." +"00000431","1073","-4294966223","ERROR_SERVICE_EXISTS","The specified service already exists." +"00000432","1074","-4294966222","ERROR_ALREADY_RUNNING_LKG","The system is currently running with the last-known-good configuration." +"00000433","1075","-4294966221","ERROR_SERVICE_DEPENDENCY_DELETED","The dependency service does not exist or has been marked for deletion." +"00000434","1076","-4294966220","ERROR_BOOT_ALREADY_ACCEPTED","The current boot has already been accepted for use as the last-known-good control set." +"00000435","1077","-4294966219","ERROR_SERVICE_NEVER_STARTED","No attempts to start the service have been made since the last boot." +"00000436","1078","-4294966218","ERROR_DUPLICATE_SERVICE_NAME","The name is already in use as either a service name or a service display name." +"00000437","1079","-4294966217","ERROR_DIFFERENT_SERVICE_ACCOUNT","The account specified for this service is different from the account specified for other services running in the same process." +"00000438","1080","-4294966216","ERROR_CANNOT_DETECT_DRIVER_FAILURE","Failure actions can only be set for Win32 services - not for drivers." +"00000439","1081","-4294966215","ERROR_CANNOT_DETECT_PROCESS_ABORT","This service runs in the same process as the service control manager. Therefore - the service control manager cannot take action if this service's process terminates unexpectedly." +"0000043A","1082","-4294966214","ERROR_NO_RECOVERY_PROGRAM","No recovery program has been configured for this service." +"0000043B","1083","-4294966213","ERROR_SERVICE_NOT_IN_EXE","The executable program that this service is configured to run in does not implement the service." +"0000043C","1084","-4294966212","ERROR_NOT_SAFEBOOT_SERVICE","This service cannot be started in Safe Mode." +"0000044C","1100","-4294966196","ERROR_END_OF_MEDIA","The physical end of the tape has been reached." +"0000044D","1101","-4294966195","ERROR_FILEMARK_DETECTED","A tape access reached a filemark." +"0000044E","1102","-4294966194","ERROR_BEGINNING_OF_MEDIA","The beginning of the tape or a partition was encountered." +"0000044F","1103","-4294966193","ERROR_SETMARK_DETECTED","A tape access reached the end of a set of files." +"00000450","1104","-4294966192","ERROR_NO_DATA_DETECTED","No more data is on the tape." +"00000451","1105","-4294966191","ERROR_PARTITION_FAILURE","Tape could not be partitioned." +"00000452","1106","-4294966190","ERROR_INVALID_BLOCK_LENGTH","When accessing a new tape of a multivolume partition - the current block size is incorrect." +"00000453","1107","-4294966189","ERROR_DEVICE_NOT_PARTITIONED","Tape partition information could not be found when loading a tape." +"00000454","1108","-4294966188","ERROR_UNABLE_TO_LOCK_MEDIA","Unable to lock the media eject mechanism." +"00000455","1109","-4294966187","ERROR_UNABLE_TO_UNLOAD_MEDIA","Unable to unload the media." +"00000456","1110","-4294966186","ERROR_MEDIA_CHANGED","The media in the drive may have changed." +"00000457","1111","-4294966185","ERROR_BUS_RESET","The I/O bus was reset." +"00000458","1112","-4294966184","ERROR_NO_MEDIA_IN_DRIVE","No media in drive." +"00000459","1113","-4294966183","ERROR_NO_UNICODE_TRANSLATION","No mapping for the Unicode character exists in the target multi-byte code page." +"0000045A","1114","-4294966182","ERROR_DLL_INIT_FAILED","A dynamic link library" +"0000045B","1115","-4294966181","ERROR_SHUTDOWN_IN_PROGRESS","A system shutdown is in progress." +"0000045C","1116","-4294966180","ERROR_NO_SHUTDOWN_IN_PROGRESS","Unable to abort the system shutdown because no shutdown was in progress." +"0000045D","1117","-4294966179","ERROR_IO_DEVICE","The request could not be performed because of an I/O device error." +"0000045E","1118","-4294966178","ERROR_SERIAL_NO_DEVICE","No serial device was successfully initialized. The serial driver will unload." +"0000045F","1119","-4294966177","ERROR_IRQ_BUSY","Unable to open a device that was sharing an interrupt request" +"00000460","1120","-4294966176","ERROR_MORE_WRITES","A serial I/O operation was completed by another write to the serial port. The IOCTL_SERIAL_XOFF_COUNTER reached zero." +"00000463","1123","-4294966173","ERROR_FLOPPY_WRONG_CYLINDER","Mismatch between the floppy disk sector ID field and the floppy disk controller track address." +"00000464","1124","-4294966172","ERROR_FLOPPY_UNKNOWN_ERROR","The floppy disk controller reported an error that is not recognized by the floppy disk driver." +"00000465","1125","-4294966171","ERROR_FLOPPY_BAD_REGISTERS","The floppy disk controller returned inconsistent results in its registers." +"00000466","1126","-4294966170","ERROR_DISK_RECALIBRATE_FAILED","While accessing the hard disk - a recalibrate operation failed - even after retries." +"00000467","1127","-4294966169","ERROR_DISK_OPERATION_FAILED","While accessing the hard disk - a disk operation failed even after retries." +"00000468","1128","-4294966168","ERROR_DISK_RESET_FAILED","While accessing the hard disk - a disk controller reset was needed - but even that failed." +"00000469","1129","-4294966167","ERROR_EOM_OVERFLOW","Physical end of tape encountered." +"0000046A","1130","-4294966166","ERROR_NOT_ENOUGH_SERVER_MEMORY","Not enough server storage is available to process this command." +"0000046B","1131","-4294966165","ERROR_POSSIBLE_DEADLOCK","A potential deadlock condition has been detected." +"0000046C","1132","-4294966164","ERROR_MAPPED_ALIGNMENT","The base address or the file offset specified does not have the proper alignment." +"00000474","1140","-4294966156","ERROR_SET_POWER_STATE_VETOED","An attempt to change the system power state was vetoed by another application or driver." +"00000475","1141","-4294966155","ERROR_SET_POWER_STATE_FAILED","The system BIOS failed an attempt to change the system power state." +"00000476","1142","-4294966154","ERROR_TOO_MANY_LINKS","An attempt was made to create more links on a file than the file system supports." +"0000047E","1150","-4294966146","ERROR_OLD_WIN_VERSION","The specified program requires a newer version of Windows." +"0000047F","1151","-4294966145","ERROR_APP_WRONG_OS","The specified program is not a Windows or MS-DOS program." +"00000480","1152","-4294966144","ERROR_SINGLE_INSTANCE_APP","Cannot start more than one instance of the specified program." +"00000481","1153","-4294966143","ERROR_RMODE_APP","The specified program was written for an earlier version of Windows." +"00000482","1154","-4294966142","ERROR_INVALID_DLL","One of the library files needed to run this application is damaged." +"00000483","1155","-4294966141","ERROR_NO_ASSOCIATION","No application is associated with the specified file for this operation." +"00000484","1156","-4294966140","ERROR_DDE_FAIL","An error occurred in sending the command to the application." +"00000485","1157","-4294966139","ERROR_DLL_NOT_FOUND","One of the library files needed to run this application cannot be found." +"00000486","1158","-4294966138","ERROR_NO_MORE_USER_HANDLES","The current process has used all of its system allowance of handles for Window Manager objects." +"00000487","1159","-4294966137","ERROR_MESSAGE_SYNC_ONLY","The message can be used only with synchronous operations." +"00000488","1160","-4294966136","ERROR_SOURCE_ELEMENT_EMPTY","The indicated source element has no media." +"00000489","1161","-4294966135","ERROR_DESTINATION_ELEMENT_FULL","The indicated destination element already contains media." +"0000048A","1162","-4294966134","ERROR_ILLEGAL_ELEMENT_ADDRESS","The indicated element does not exist." +"0000048B","1163","-4294966133","ERROR_MAGAZINE_NOT_PRESENT","The indicated element is part of a magazine that is not present." +"0000048C","1164","-4294966132","ERROR_DEVICE_REINITIALIZATION_NEEDED","The indicated device requires reinitialization due to hardware errors." +"0000048D","1165","-4294966131","ERROR_DEVICE_REQUIRES_CLEANING","The device has indicated that cleaning is required before further operations are attempted." +"0000048E","1166","-4294966130","ERROR_DEVICE_DOOR_OPEN","The device has indicated that its door is open." +"0000048F","1167","-4294966129","ERROR_DEVICE_NOT_CONNECTED","The device is not connected." +"00000490","1168","-4294966128","ERROR_NOT_FOUND","Element not found." +"00000491","1169","-4294966127","ERROR_NO_MATCH","There was no match for the specified key in the index." +"00000492","1170","-4294966126","ERROR_SET_NOT_FOUND","The property set specified does not exist on the object." +"00000493","1171","-4294966125","ERROR_POINT_NOT_FOUND","The point passed to GetMouseMovePoints is not in the buffer." +"00000494","1172","-4294966124","ERROR_NO_TRACKING_SERVICE","The tracking" +"00000495","1173","-4294966123","ERROR_NO_VOLUME_ID","The Volume ID could not be found." +"00000497","1175","-4294966121","ERROR_UNABLE_TO_REMOVE_REPLACED","Unable to remove the file to be replaced." +"00000498","1176","-4294966120","ERROR_UNABLE_TO_MOVE_REPLACEMENT","Unable to move the replacement file to the file to be replaced. The file to be replaced has retained its original name." +"00000499","1177","-4294966119","ERROR_UNABLE_TO_MOVE_REPLACEMENT_2","Unable to move the replacement file to the file to be replaced. The file to be replaced has been renamed using the backup name." +"0000049A","1178","-4294966118","ERROR_JOURNAL_DELETE_IN_PROGRESS","The volume change journal is being deleted." +"0000049B","1179","-4294966117","ERROR_JOURNAL_NOT_ACTIVE","The volume change journal is not active." +"0000049C","1180","-4294966116","ERROR_POTENTIAL_FILE_FOUND","A file was found - but it may not be the correct file." +"0000049D","1181","-4294966115","ERROR_JOURNAL_ENTRY_DELETED","The journal entry has been deleted from the journal." +"000004A6","1190","-4294966106","ERROR_SHUTDOWN_IS_SCHEDULED","A system shutdown has already been scheduled." +"000004A7","1191","-4294966105","ERROR_SHUTDOWN_USERS_LOGGED_ON","The system shutdown cannot be initiated because there are other users logged on to the computer." +"000004B0","1200","-4294966096","ERROR_BAD_DEVICE","The specified device name is invalid." +"000004B1","1201","-4294966095","ERROR_CONNECTION_UNAVAIL","The device is not currently connected but it is a remembered connection." +"000004B2","1202","-4294966094","ERROR_DEVICE_ALREADY_REMEMBERED","The local device name has a remembered connection to another network resource." +"000004B3","1203","-4294966093","ERROR_NO_NET_OR_BAD_PATH","The network path was either typed incorrectly - does not exist - or the network provider is not currently available. Please try retyping the path or contact your network administrator." +"000004B4","1204","-4294966092","ERROR_BAD_PROVIDER","The specified network provider name is invalid." +"000004B5","1205","-4294966091","ERROR_CANNOT_OPEN_PROFILE","Unable to open the network connection profile." +"000004B6","1206","-4294966090","ERROR_BAD_PROFILE","The network connection profile is corrupted." +"000004B7","1207","-4294966089","ERROR_NOT_CONTAINER","Cannot enumerate a noncontainer." +"000004B8","1208","-4294966088","ERROR_EXTENDED_ERROR","An extended error has occurred." +"000004B9","1209","-4294966087","ERROR_INVALID_GROUPNAME","The format of the specified group name is invalid." +"000004BA","1210","-4294966086","ERROR_INVALID_COMPUTERNAME","The format of the specified computer name is invalid." +"000004BB","1211","-4294966085","ERROR_INVALID_EVENTNAME","The format of the specified event name is invalid." +"000004BC","1212","-4294966084","ERROR_INVALID_DOMAINNAME","The format of the specified domain name is invalid." +"000004BD","1213","-4294966083","ERROR_INVALID_SERVICENAME","The format of the specified service name is invalid." +"000004BE","1214","-4294966082","ERROR_INVALID_NETNAME","The format of the specified network name is invalid." +"000004BF","1215","-4294966081","ERROR_INVALID_SHARENAME","The format of the specified share name is invalid." +"000004C0","1216","-4294966080","ERROR_INVALID_PASSWORDNAME","The format of the specified password is invalid." +"000004C1","1217","-4294966079","ERROR_INVALID_MESSAGENAME","The format of the specified message name is invalid." +"000004C2","1218","-4294966078","ERROR_INVALID_MESSAGEDEST","The format of the specified message destination is invalid." +"000004C3","1219","-4294966077","ERROR_SESSION_CREDENTIAL_CONFLICT","Multiple connections to a server or shared resource by the same user - using more than one user name - are not allowed. Disconnect all previous connections to the server or shared resource and try again." +"000004C4","1220","-4294966076","ERROR_REMOTE_SESSION_LIMIT_EXCEEDED","An attempt was made to establish a session to a network server - but there are already too many sessions established to that server." +"000004C5","1221","-4294966075","ERROR_DUP_DOMAINNAME","The workgroup or domain name is already in use by another computer on the network." +"000004C6","1222","-4294966074","ERROR_NO_NETWORK","The network is not present or not started." +"000004C7","1223","-4294966073","ERROR_CANCELLED","The operation was canceled by the user." +"000004C8","1224","-4294966072","ERROR_USER_MAPPED_FILE","The requested operation cannot be performed on a file with a user-mapped section open." +"000004C9","1225","-4294966071","ERROR_CONNECTION_REFUSED","The remote computer refused the network connection." +"000004CA","1226","-4294966070","ERROR_GRACEFUL_DISCONNECT","The network connection was gracefully closed." +"000004CB","1227","-4294966069","ERROR_ADDRESS_ALREADY_ASSOCIATED","The network transport endpoint already has an address associated with it." +"000004CC","1228","-4294966068","ERROR_ADDRESS_NOT_ASSOCIATED","An address has not yet been associated with the network endpoint." +"000004CD","1229","-4294966067","ERROR_CONNECTION_INVALID","An operation was attempted on a nonexistent network connection." +"000004CE","1230","-4294966066","ERROR_CONNECTION_ACTIVE","An invalid operation was attempted on an active network connection." +"000004CF","1231","-4294966065","ERROR_NETWORK_UNREACHABLE","The network location cannot be reached. For information about network troubleshooting - see Windows Help." +"000004D0","1232","-4294966064","ERROR_HOST_UNREACHABLE","The network location cannot be reached. For information about network troubleshooting - see Windows Help." +"000004D1","1233","-4294966063","ERROR_PROTOCOL_UNREACHABLE","The network location cannot be reached. For information about network troubleshooting - see Windows Help." +"000004D2","1234","-4294966062","ERROR_PORT_UNREACHABLE","No service is operating at the destination network endpoint on the remote system." +"000004D3","1235","-4294966061","ERROR_REQUEST_ABORTED","The request was aborted." +"000004D4","1236","-4294966060","ERROR_CONNECTION_ABORTED","The network connection was aborted by the local system." +"000004D5","1237","-4294966059","ERROR_RETRY","The operation could not be completed. A retry should be performed." +"000004D6","1238","-4294966058","ERROR_CONNECTION_COUNT_LIMIT","A connection to the server could not be made because the limit on the number of concurrent connections for this account has been reached." +"000004D7","1239","-4294966057","ERROR_LOGIN_TIME_RESTRICTION","Attempting to log in during an unauthorized time of day for this account." +"000004D8","1240","-4294966056","ERROR_LOGIN_WKSTA_RESTRICTION","The account is not authorized to log in from this station." +"000004D9","1241","-4294966055","ERROR_INCORRECT_ADDRESS","The network address could not be used for the operation requested." +"000004DA","1242","-4294966054","ERROR_ALREADY_REGISTERED","The service is already registered." +"000004DB","1243","-4294966053","ERROR_SERVICE_NOT_FOUND","The specified service does not exist." +"000004DC","1244","-4294966052","ERROR_NOT_AUTHENTICATED","The operation being requested was not performed because the user has not been authenticated." +"000004DD","1245","-4294966051","ERROR_NOT_LOGGED_ON","The operation being requested was not performed because the user has not logged on to the network. The specified service does not exist." +"000004DE","1246","-4294966050","ERROR_CONTINUE","Continue with work in progress." +"000004DF","1247","-4294966049","ERROR_ALREADY_INITIALIZED","An attempt was made to perform an initialization operation when initialization has already been completed." +"000004E0","1248","-4294966048","ERROR_NO_MORE_DEVICES","No more local devices." +"000004E1","1249","-4294966047","ERROR_NO_SUCH_SITE","The specified site does not exist." +"000004E2","1250","-4294966046","ERROR_DOMAIN_CONTROLLER_EXISTS","A domain controller with the specified name already exists." +"000004E3","1251","-4294966045","ERROR_ONLY_IF_CONNECTED","This operation is supported only when you are connected to the server." +"000004E4","1252","-4294966044","ERROR_OVERRIDE_NOCHANGES","The group policy framework should call the extension even if there are no changes." +"000004E5","1253","-4294966043","ERROR_BAD_USER_PROFILE","The specified user does not have a valid profile." +"000004E6","1254","-4294966042","ERROR_NOT_SUPPORTED_ON_SBS","This operation is not supported on a computer running Windows Server 2003 for Small Business Server." +"000004E7","1255","-4294966041","ERROR_SERVER_SHUTDOWN_IN_PROGRESS","The server machine is shutting down." +"000004E8","1256","-4294966040","ERROR_HOST_DOWN","The remote system is not available. For information about network troubleshooting - see Windows Help." +"000004E9","1257","-4294966039","ERROR_NON_ACCOUNT_SID","The security identifier provided is not from an account domain." +"000004EA","1258","-4294966038","ERROR_NON_DOMAIN_SID","The security identifier provided does not have a domain component." +"000004EB","1259","-4294966037","ERROR_APPHELP_BLOCK","AppHelp dialog canceled thus preventing the application from starting." +"000004EC","1260","-4294966036","ERROR_ACCESS_DISABLED_BY_POLICY","This program is blocked by group policy. For more information -" +"000004ED","1261","-4294966035","ERROR_REG_NAT_CONSUMPTION","A program attempt to use an invalid register value. Normally caused by an uninitialized register. This error is Itanium specific." +"000004EE","1262","-4294966034","ERROR_CSCSHARE_OFFLINE","The share is currently offline or does not exist." +"000004EF","1263","-4294966033","ERROR_PKINIT_FAILURE","The Kerberos protocol encountered an error while validating the KDC certificate during smartcard logon. There is more information in the system event log." +"000004F0","1264","-4294966032","ERROR_SMARTCARD_SUBSYSTEM_FAILURE","The Kerberos protocol encountered an error while attempting to utilize the smartcard subsystem." +"000004F1","1265","-4294966031","ERROR_DOWNGRADE_DETECTED","The system cannot contact a domain controller to service the authentication request. Please try again later." +"000004F7","1271","-4294966025","ERROR_MACHINE_LOCKED","The machine is locked and cannot be shut down without the force option." +"000004F9","1273","-4294966023","ERROR_CALLBACK_SUPPLIED_INVALID_DATA","An application-defined callback gave invalid data when called." +"000004FA","1274","-4294966022","ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED","The group policy framework should call the extension in the synchronous foreground policy refresh." +"000004FB","1275","-4294966021","ERROR_DRIVER_BLOCKED","This driver has been blocked from loading." +"000004FC","1276","-4294966020","ERROR_INVALID_IMPORT_OF_NON_DLL","A dynamic link library" +"000004FD","1277","-4294966019","ERROR_ACCESS_DISABLED_WEBBLADE","Windows cannot open this program since it has been disabled." +"000004FE","1278","-4294966018","ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER","Windows cannot open this program because the license enforcement system has been tampered with or become corrupted." +"000004FF","1279","-4294966017","ERROR_RECOVERY_FAILURE","A transaction recover failed." +"00000500","1280","-4294966016","ERROR_ALREADY_FIBER","The current thread has already been converted to a fiber." +"00000501","1281","-4294966015","ERROR_ALREADY_THREAD","The current thread has already been converted from a fiber." +"00000502","1282","-4294966014","ERROR_STACK_BUFFER_OVERRUN","The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application." +"00000503","1283","-4294966013","ERROR_PARAMETER_QUOTA_EXCEEDED","Data present in one of the parameters is more than the function can operate on." +"00000504","1284","-4294966012","ERROR_DEBUGGER_INACTIVE","An attempt to do an operation on a debug object failed because the object is in the process of being deleted." +"00000505","1285","-4294966011","ERROR_DELAY_LOAD_FAILED","An attempt to delay-load a .dll or get a function address in a delay-loaded .dll failed." +"00000506","1286","-4294966010","ERROR_VDM_DISALLOWED","%1 is a 16-bit application. You do not have permissions to execute 16-bit applications. Check your permissions with your system administrator." +"00000507","1287","-4294966009","ERROR_UNIDENTIFIED_ERROR","Insufficient information exists to identify the cause of failure." +"00000508","1288","-4294966008","ERROR_INVALID_CRUNTIME_PARAMETER","The parameter passed to a C runtime function is incorrect." +"00000509","1289","-4294966007","ERROR_BEYOND_VDL","The operation occurred beyond the valid data length of the file." +"0000050A","1290","-4294966006","ERROR_INCOMPATIBLE_SERVICE_SID_TYPE","The service start failed since one or more services in the same process have an incompatible service SID type setting. A service with restricted service SID type can only coexist in the same process with other services with a restricted SID type. If the service SID type for this service was just configured - the hosting process must be restarted in order to start this service. On Windows Server 2003 and Windows XP - an unrestricted service cannot coexist in the same process with other services. The service with the unrestricted service SID type must be moved to an owned process in order to start this service." +"0000050B","1291","-4294966005","ERROR_DRIVER_PROCESS_TERMINATED","The process hosting the driver for this device has been terminated." +"0000050C","1292","-4294966004","ERROR_IMPLEMENTATION_LIMIT","An operation attempted to exceed an implementation-defined limit." +"0000050D","1293","-4294966003","ERROR_PROCESS_IS_PROTECTED","Either the target process - or the target thread's containing process - is a protected process." +"0000050E","1294","-4294966002","ERROR_SERVICE_NOTIFY_CLIENT_LAGGING","The service notification client is lagging too far behind the current state of services in the machine." +"0000050F","1295","-4294966001","ERROR_DISK_QUOTA_EXCEEDED","The requested file operation failed because the storage quota was exceeded. To free up disk space - move files to a different location or delete unnecessary files. For more information -" +"00000510","1296","-4294966000","ERROR_CONTENT_BLOCKED","The requested file operation failed because the storage policy blocks that type of file. For more information -" +"00000511","1297","-4294965999","ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE","A privilege that the service requires to function properly does not exist in the service account configuration. You may use the Services Microsoft Management Console" +"00000512","1298","-4294965998","ERROR_APP_HANG","A thread involved in this operation appears to be unresponsive." +"00000513","1299","-4294965997","ERROR_INVALID_LABEL","Indicates a particular Security ID may not be assigned as the label of an object." +"00000514","1300","-4294965996","ERROR_NOT_ALL_ASSIGNED","Not all privileges or groups referenced are assigned to the caller." +"00000515","1301","-4294965995","ERROR_SOME_NOT_MAPPED","Some mapping between account names and security IDs was not done." +"00000516","1302","-4294965994","ERROR_NO_QUOTAS_FOR_ACCOUNT","No system quota limits are specifically set for this account." +"00000517","1303","-4294965993","ERROR_LOCAL_USER_SESSION_KEY","No encryption key is available. A well-known encryption key was returned." +"00000518","1304","-4294965992","ERROR_NULL_LM_PASSWORD","The password is too complex to be converted to a LAN Manager password. The LAN Manager password returned is a NULL string." +"00000519","1305","-4294965991","ERROR_UNKNOWN_REVISION","The revision level is unknown." +"0000051A","1306","-4294965990","ERROR_REVISION_MISMATCH","Indicates two revision levels are incompatible." +"0000051B","1307","-4294965989","ERROR_INVALID_OWNER","This security ID may not be assigned as the owner of this object." +"0000051C","1308","-4294965988","ERROR_INVALID_PRIMARY_GROUP","This security ID may not be assigned as the primary group of an object." +"0000051D","1309","-4294965987","ERROR_NO_IMPERSONATION_TOKEN","An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client." +"0000051E","1310","-4294965986","ERROR_CANT_DISABLE_MANDATORY","The group may not be disabled." +"0000051F","1311","-4294965985","ERROR_NO_LOGON_SERVERS","There are currently no logon servers available to service the logon request." +"00000520","1312","-4294965984","ERROR_NO_SUCH_LOGON_SESSION","A specified logon session does not exist. It may already have been terminated." +"00000521","1313","-4294965983","ERROR_NO_SUCH_PRIVILEGE","A specified privilege does not exist." +"00000522","1314","-4294965982","ERROR_PRIVILEGE_NOT_HELD","A required privilege is not held by the client." +"00000523","1315","-4294965981","ERROR_INVALID_ACCOUNT_NAME","The name provided is not a properly formed account name." +"00000524","1316","-4294965980","ERROR_USER_EXISTS","The specified account already exists." +"00000525","1317","-4294965979","ERROR_NO_SUCH_USER","The specified account does not exist." +"00000526","1318","-4294965978","ERROR_GROUP_EXISTS","The specified group already exists." +"00000527","1319","-4294965977","ERROR_NO_SUCH_GROUP","The specified group does not exist." +"00000528","1320","-4294965976","ERROR_MEMBER_IN_GROUP","Either the specified user account is already a member of the specified group - or the specified group cannot be deleted because it contains a member." +"00000529","1321","-4294965975","ERROR_MEMBER_NOT_IN_GROUP","The specified user account is not a member of the specified group account." +"0000052A","1322","-4294965974","ERROR_LAST_ADMIN","This operation is disallowed as it could result in an administration account being disabled - deleted or unable to log on." +"0000052B","1323","-4294965973","ERROR_WRONG_PASSWORD","Unable to update the password. The value provided as the current password is incorrect." +"0000052C","1324","-4294965972","ERROR_ILL_FORMED_PASSWORD","Unable to update the password. The value provided for the new password contains values that are not allowed in passwords." +"0000052D","1325","-4294965971","ERROR_PASSWORD_RESTRICTION","Unable to update the password. The value provided for the new password does not meet the length - complexity - or history requirements of the domain." +"0000052E","1326","-4294965970","ERROR_LOGON_FAILURE","The user name or password is incorrect." +"0000052F","1327","-4294965969","ERROR_ACCOUNT_RESTRICTION","Account restrictions are preventing this user from signing in. For example: blank passwords aren't allowed - sign-in times are limited - or a policy restriction has been enforced." +"00000530","1328","-4294965968","ERROR_INVALID_LOGON_HOURS","Your account has time restrictions that keep you from signing in right now." +"00000531","1329","-4294965967","ERROR_INVALID_WORKSTATION","This user isn't allowed to sign in to this computer." +"00000532","1330","-4294965966","ERROR_PASSWORD_EXPIRED","The password for this account has expired." +"00000533","1331","-4294965965","ERROR_ACCOUNT_DISABLED","This user can't sign in because this account is currently disabled." +"00000534","1332","-4294965964","ERROR_NONE_MAPPED","No mapping between account names and security IDs was done." +"00000535","1333","-4294965963","ERROR_TOO_MANY_LUIDS_REQUESTED","Too many local user identifiers" +"00000536","1334","-4294965962","ERROR_LUIDS_EXHAUSTED","No more local user identifiers" +"00000537","1335","-4294965961","ERROR_INVALID_SUB_AUTHORITY","The subauthority part of a security ID is invalid for this particular use." +"00000538","1336","-4294965960","ERROR_INVALID_ACL","The access control list" +"00000539","1337","-4294965959","ERROR_INVALID_SID","The security ID structure is invalid." +"0000053A","1338","-4294965958","ERROR_INVALID_SECURITY_DESCR","The security descriptor structure is invalid." +"0000053C","1340","-4294965956","ERROR_BAD_INHERITANCE_ACL","The inherited access control list" +"0000053D","1341","-4294965955","ERROR_SERVER_DISABLED","The server is currently disabled." +"0000053E","1342","-4294965954","ERROR_SERVER_NOT_DISABLED","The server is currently enabled." +"0000053F","1343","-4294965953","ERROR_INVALID_ID_AUTHORITY","The value provided was an invalid value for an identifier authority." +"00000540","1344","-4294965952","ERROR_ALLOTTED_SPACE_EXCEEDED","No more memory is available for security information updates." +"00000541","1345","-4294965951","ERROR_INVALID_GROUP_ATTRIBUTES","The specified attributes are invalid - or incompatible with the attributes for the group as a whole." +"00000542","1346","-4294965950","ERROR_BAD_IMPERSONATION_LEVEL","Either a required impersonation level was not provided - or the provided impersonation level is invalid." +"00000543","1347","-4294965949","ERROR_CANT_OPEN_ANONYMOUS","Cannot open an anonymous level security token." +"00000544","1348","-4294965948","ERROR_BAD_VALIDATION_CLASS","The validation information class requested was invalid." +"00000545","1349","-4294965947","ERROR_BAD_TOKEN_TYPE","The type of the token is inappropriate for its attempted use." +"00000546","1350","-4294965946","ERROR_NO_SECURITY_ON_OBJECT","Unable to perform a security operation on an object that has no associated security." +"00000547","1351","-4294965945","ERROR_CANT_ACCESS_DOMAIN_INFO","Configuration information could not be read from the domain controller - either because the machine is unavailable - or access has been denied." +"00000548","1352","-4294965944","ERROR_INVALID_SERVER_STATE","The security account manager" +"00000549","1353","-4294965943","ERROR_INVALID_DOMAIN_STATE","The domain was in the wrong state to perform the security operation." +"0000054A","1354","-4294965942","ERROR_INVALID_DOMAIN_ROLE","This operation is only allowed for the Primary Domain Controller of the domain." +"0000054B","1355","-4294965941","ERROR_NO_SUCH_DOMAIN","The specified domain either does not exist or could not be contacted." +"0000054C","1356","-4294965940","ERROR_DOMAIN_EXISTS","The specified domain already exists." +"0000054D","1357","-4294965939","ERROR_DOMAIN_LIMIT_EXCEEDED","An attempt was made to exceed the limit on the number of domains per server." +"0000054E","1358","-4294965938","ERROR_INTERNAL_DB_CORRUPTION","Unable to complete the requested operation because of either a catastrophic media failure or a data structure corruption on the disk." +"0000054F","1359","-4294965937","ERROR_INTERNAL_ERROR","An internal error occurred." +"00000550","1360","-4294965936","ERROR_GENERIC_NOT_MAPPED","Generic access types were contained in an access mask which should already be mapped to nongeneric types." +"00000551","1361","-4294965935","ERROR_BAD_DESCRIPTOR_FORMAT","A security descriptor is not in the right format" +"00000552","1362","-4294965934","ERROR_NOT_LOGON_PROCESS","The requested action is restricted for use by logon processes only. The calling process has not registered as a logon process." +"00000553","1363","-4294965933","ERROR_LOGON_SESSION_EXISTS","Cannot start a new logon session with an ID that is already in use." +"00000554","1364","-4294965932","ERROR_NO_SUCH_PACKAGE","A specified authentication package is unknown." +"00000555","1365","-4294965931","ERROR_BAD_LOGON_SESSION_STATE","The logon session is not in a state that is consistent with the requested operation." +"00000556","1366","-4294965930","ERROR_LOGON_SESSION_COLLISION","The logon session ID is already in use." +"00000557","1367","-4294965929","ERROR_INVALID_LOGON_TYPE","A logon request contained an invalid logon type value." +"00000558","1368","-4294965928","ERROR_CANNOT_IMPERSONATE","Unable to impersonate using a named pipe until data has been read from that pipe." +"00000559","1369","-4294965927","ERROR_RXACT_INVALID_STATE","The transaction state of a registry subtree is incompatible with the requested operation." +"0000055A","1370","-4294965926","ERROR_RXACT_COMMIT_FAILURE","An internal security database corruption has been encountered." +"0000055B","1371","-4294965925","ERROR_SPECIAL_ACCOUNT","Cannot perform this operation on built-in accounts." +"0000055C","1372","-4294965924","ERROR_SPECIAL_GROUP","Cannot perform this operation on this built-in special group." +"0000055D","1373","-4294965923","ERROR_SPECIAL_USER","Cannot perform this operation on this built-in special user." +"0000055E","1374","-4294965922","ERROR_MEMBERS_PRIMARY_GROUP","The user cannot be removed from a group because the group is currently the user's primary group." +"0000055F","1375","-4294965921","ERROR_TOKEN_ALREADY_IN_USE","The token is already in use as a primary token." +"00000560","1376","-4294965920","ERROR_NO_SUCH_ALIAS","The specified local group does not exist." +"00000561","1377","-4294965919","ERROR_MEMBER_NOT_IN_ALIAS","The specified account name is not a member of the group." +"00000562","1378","-4294965918","ERROR_MEMBER_IN_ALIAS","The specified account name is already a member of the group." +"00000563","1379","-4294965917","ERROR_ALIAS_EXISTS","The specified local group already exists." +"00000564","1380","-4294965916","ERROR_LOGON_NOT_GRANTED","Logon failure: the user has not been granted the requested logon type at this computer." +"00000565","1381","-4294965915","ERROR_TOO_MANY_SECRETS","The maximum number of secrets that may be stored in a single system has been exceeded." +"00000566","1382","-4294965914","ERROR_SECRET_TOO_LONG","The length of a secret exceeds the maximum length allowed." +"00000567","1383","-4294965913","ERROR_INTERNAL_DB_ERROR","The local security authority database contains an internal inconsistency." +"00000568","1384","-4294965912","ERROR_TOO_MANY_CONTEXT_IDS","During a logon attempt - the user's security context accumulated too many security IDs." +"00000569","1385","-4294965911","ERROR_LOGON_TYPE_NOT_GRANTED","Logon failure: the user has not been granted the requested logon type at this computer." +"0000056A","1386","-4294965910","ERROR_NT_CROSS_ENCRYPTION_REQUIRED","A cross-encrypted password is necessary to change a user password." +"0000056B","1387","-4294965909","ERROR_NO_SUCH_MEMBER","A member could not be added to or removed from the local group because the member does not exist." +"0000056C","1388","-4294965908","ERROR_INVALID_MEMBER","A new member could not be added to a local group because the member has the wrong account type." +"0000056D","1389","-4294965907","ERROR_TOO_MANY_SIDS","Too many security IDs have been specified." +"0000056E","1390","-4294965906","ERROR_LM_CROSS_ENCRYPTION_REQUIRED","A cross-encrypted password is necessary to change this user password." +"0000056F","1391","-4294965905","ERROR_NO_INHERITANCE","Indicates an ACL contains no inheritable components." +"00000570","1392","-4294965904","ERROR_FILE_CORRUPT","The file or directory is corrupted and unreadable." +"00000571","1393","-4294965903","ERROR_DISK_CORRUPT","The disk structure is corrupted and unreadable." +"00000572","1394","-4294965902","ERROR_NO_USER_SESSION_KEY","There is no user session key for the specified logon session." +"00000573","1395","-4294965901","ERROR_LICENSE_QUOTA_EXCEEDED","The service being accessed is licensed for a particular number of connections. No more connections can be made to the service at this time because there are already as many connections as the service can accept." +"00000574","1396","-4294965900","ERROR_WRONG_TARGET_NAME","The target account name is incorrect." +"00000575","1397","-4294965899","ERROR_MUTUAL_AUTH_FAILED","Mutual Authentication failed. The server's password is out of date at the domain controller." +"00000576","1398","-4294965898","ERROR_TIME_SKEW","There is a time and/or date difference between the client and server." +"00000577","1399","-4294965897","ERROR_CURRENT_DOMAIN_NOT_ALLOWED","This operation cannot be performed on the current domain." +"00000578","1400","-4294965896","ERROR_INVALID_WINDOW_HANDLE","Invalid window handle." +"00000579","1401","-4294965895","ERROR_INVALID_MENU_HANDLE","Invalid menu handle." +"0000057A","1402","-4294965894","ERROR_INVALID_CURSOR_HANDLE","Invalid cursor handle." +"0000057B","1403","-4294965893","ERROR_INVALID_ACCEL_HANDLE","Invalid accelerator table handle." +"0000057C","1404","-4294965892","ERROR_INVALID_HOOK_HANDLE","Invalid hook handle." +"0000057D","1405","-4294965891","ERROR_INVALID_DWP_HANDLE","Invalid handle to a multiple-window position structure." +"0000057E","1406","-4294965890","ERROR_TLW_WITH_WSCHILD","Cannot create a top-level child window." +"0000057F","1407","-4294965889","ERROR_CANNOT_FIND_WND_CLASS","Cannot find window class." +"00000580","1408","-4294965888","ERROR_WINDOW_OF_OTHER_THREAD","Invalid window; it belongs to other thread." +"00000581","1409","-4294965887","ERROR_HOTKEY_ALREADY_REGISTERED","Hot key is already registered." +"00000582","1410","-4294965886","ERROR_CLASS_ALREADY_EXISTS","Class already exists." +"00000583","1411","-4294965885","ERROR_CLASS_DOES_NOT_EXIST","Class does not exist." +"00000584","1412","-4294965884","ERROR_CLASS_HAS_WINDOWS","Class still has open windows." +"00000585","1413","-4294965883","ERROR_INVALID_INDEX","Invalid index." +"00000586","1414","-4294965882","ERROR_INVALID_ICON_HANDLE","Invalid icon handle." +"00000587","1415","-4294965881","ERROR_PRIVATE_DIALOG_INDEX","Using private DIALOG window words." +"00000588","1416","-4294965880","ERROR_LISTBOX_ID_NOT_FOUND","The list box identifier was not found." +"00000589","1417","-4294965879","ERROR_NO_WILDCARD_CHARACTERS","No wildcards were found." +"0000058A","1418","-4294965878","ERROR_CLIPBOARD_NOT_OPEN","Thread does not have a clipboard open." +"0000058B","1419","-4294965877","ERROR_HOTKEY_NOT_REGISTERED","Hot key is not registered." +"0000058C","1420","-4294965876","ERROR_WINDOW_NOT_DIALOG","The window is not a valid dialog window." +"0000058D","1421","-4294965875","ERROR_CONTROL_ID_NOT_FOUND","Control ID not found." +"0000058E","1422","-4294965874","ERROR_INVALID_COMBOBOX_MESSAGE","Invalid message for a combo box because it does not have an edit control." +"0000058F","1423","-4294965873","ERROR_WINDOW_NOT_COMBOBOX","The window is not a combo box." +"00000590","1424","-4294965872","ERROR_INVALID_EDIT_HEIGHT","Height must be less than 256." +"00000591","1425","-4294965871","ERROR_DC_NOT_FOUND","Invalid device context" +"00000592","1426","-4294965870","ERROR_INVALID_HOOK_FILTER","Invalid hook procedure type." +"00000593","1427","-4294965869","ERROR_INVALID_FILTER_PROC","Invalid hook procedure." +"00000594","1428","-4294965868","ERROR_HOOK_NEEDS_HMOD","Cannot set nonlocal hook without a module handle." +"00000595","1429","-4294965867","ERROR_GLOBAL_ONLY_HOOK","This hook procedure can only be set globally." +"00000596","1430","-4294965866","ERROR_JOURNAL_HOOK_SET","The journal hook procedure is already installed." +"00000597","1431","-4294965865","ERROR_HOOK_NOT_INSTALLED","The hook procedure is not installed." +"00000598","1432","-4294965864","ERROR_INVALID_LB_MESSAGE","Invalid message for single-selection list box." +"00000599","1433","-4294965863","ERROR_SETCOUNT_ON_BAD_LB","LB_SETCOUNT sent to non-lazy list box." +"0000059A","1434","-4294965862","ERROR_LB_WITHOUT_TABSTOPS","This list box does not support tab stops." +"0000059B","1435","-4294965861","ERROR_DESTROY_OBJECT_OF_OTHER_THREAD","Cannot destroy object created by another thread." +"0000059C","1436","-4294965860","ERROR_CHILD_WINDOW_MENU","Child windows cannot have menus." +"0000059D","1437","-4294965859","ERROR_NO_SYSTEM_MENU","The window does not have a system menu." +"0000059E","1438","-4294965858","ERROR_INVALID_MSGBOX_STYLE","Invalid message box style." +"0000059F","1439","-4294965857","ERROR_INVALID_SPI_VALUE","Invalid system-wide" +"000005A0","1440","-4294965856","ERROR_SCREEN_ALREADY_LOCKED","Screen already locked." +"000005A1","1441","-4294965855","ERROR_HWNDS_HAVE_DIFF_PARENT","All handles to windows in a multiple-window position structure must have the same parent." +"000005A2","1442","-4294965854","ERROR_NOT_CHILD_WINDOW","The window is not a child window." +"000005A3","1443","-4294965853","ERROR_INVALID_GW_COMMAND","Invalid GW_* command." +"000005A4","1444","-4294965852","ERROR_INVALID_THREAD_ID","Invalid thread identifier." +"000005A5","1445","-4294965851","ERROR_NON_MDICHILD_WINDOW","Cannot process a message from a window that is not a multiple document interface" +"000005A6","1446","-4294965850","ERROR_POPUP_ALREADY_ACTIVE","Popup menu already active." +"000005A7","1447","-4294965849","ERROR_NO_SCROLLBARS","The window does not have scroll bars." +"000005A8","1448","-4294965848","ERROR_INVALID_SCROLLBAR_RANGE","Scroll bar range cannot be greater than MAXLONG." +"000005A9","1449","-4294965847","ERROR_INVALID_SHOWWIN_COMMAND","Cannot show or remove the window in the way specified." +"000005AA","1450","-4294965846","ERROR_NO_SYSTEM_RESOURCES","Insufficient system resources exist to complete the requested service." +"000005AB","1451","-4294965845","ERROR_NONPAGED_SYSTEM_RESOURCES","Insufficient system resources exist to complete the requested service." +"000005AC","1452","-4294965844","ERROR_PAGED_SYSTEM_RESOURCES","Insufficient system resources exist to complete the requested service." +"000005AD","1453","-4294965843","ERROR_WORKING_SET_QUOTA","Insufficient quota to complete the requested service." +"000005AE","1454","-4294965842","ERROR_PAGEFILE_QUOTA","Insufficient quota to complete the requested service." +"000005AF","1455","-4294965841","ERROR_COMMITMENT_LIMIT","The paging file is too small for this operation to complete." +"000005B0","1456","-4294965840","ERROR_MENU_ITEM_NOT_FOUND","A menu item was not found." +"000005B1","1457","-4294965839","ERROR_INVALID_KEYBOARD_HANDLE","Invalid keyboard layout handle." +"000005B2","1458","-4294965838","ERROR_HOOK_TYPE_NOT_ALLOWED","Hook type not allowed." +"000005B3","1459","-4294965837","ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION","This operation requires an interactive window station." +"000005B4","1460","-4294965836","ERROR_TIMEOUT","This operation returned because the timeout period expired." +"000005B5","1461","-4294965835","ERROR_INVALID_MONITOR_HANDLE","Invalid monitor handle." +"000005B6","1462","-4294965834","ERROR_INCORRECT_SIZE","Incorrect size argument." +"000005B7","1463","-4294965833","ERROR_SYMLINK_CLASS_DISABLED","The symbolic link cannot be followed because its type is disabled." +"000005B8","1464","-4294965832","ERROR_SYMLINK_NOT_SUPPORTED","This application does not support the current operation on symbolic links." +"000005B9","1465","-4294965831","ERROR_XML_PARSE_ERROR","Windows was unable to parse the requested XML data." +"000005BA","1466","-4294965830","ERROR_XMLDSIG_ERROR","An error was encountered while processing an XML digital signature." +"000005BB","1467","-4294965829","ERROR_RESTART_APPLICATION","This application must be restarted." +"000005BC","1468","-4294965828","ERROR_WRONG_COMPARTMENT","The caller made the connection request in the wrong routing compartment." +"000005BD","1469","-4294965827","ERROR_AUTHIP_FAILURE","There was an AuthIP failure when attempting to connect to the remote host." +"000005BE","1470","-4294965826","ERROR_NO_NVRAM_RESOURCES","Insufficient NVRAM resources exist to complete the requested service. A reboot might be required." +"000005BF","1471","-4294965825","ERROR_NOT_GUI_PROCESS","Unable to finish the requested operation because the specified process is not a GUI process." +"000005D5","-4294965803","1493","NULL","" +"000005DC","1500","-4294965796","ERROR_EVENTLOG_FILE_CORRUPT","The event log file is corrupted." +"000005DD","1501","-4294965795","ERROR_EVENTLOG_CANT_START","No event log file could be opened - so the event logging service did not start." +"000005DE","1502","-4294965794","ERROR_LOG_FILE_FULL","The event log file is full." +"000005DF","1503","-4294965793","ERROR_EVENTLOG_FILE_CHANGED","The event log file has changed between read operations." +"0000060E","1550","-4294965746","ERROR_INVALID_TASK_NAME","The specified task name is invalid." +"0000060F","1551","-4294965745","ERROR_INVALID_TASK_INDEX","The specified task index is invalid." +"00000610","1552","-4294965744","ERROR_THREAD_ALREADY_IN_TASK","The specified thread is already joining a task." +"00000619","1561","-4294965735","Error_Invalid_HW_Profile","The specified hardware profile configuration is invalid" +"00000641","1601","-4294965695","ERROR_INSTALL_SERVICE_FAILURE","The Windows Installer Service could not be accessed. This can occur if the Windows Installer is not correctly installed." +"00000642","1602","-4294965694","ERROR_INSTALL_USEREXIT","User cancelled installation." +"00000643","1603","-4294965693","ERROR_INSTALL_FAILURE","Fatal error during installation. OR Previous MSI installer is missing (Or it might mean Install successful but system restart may be required.) Should this be add as an `InstallerSuccessCode` or similar?" +"00000644","1604","-4294965692","ERROR_INSTALL_SUSPEND","Installation suspended - incomplete." +"00000645","1605","-4294965691","ERROR_UNKNOWN_PRODUCT","This action is only valid for products that are currently installed." +"00000646","1606","-4294965690","ERROR_UNKNOWN_FEATURE","Feature ID not registered." +"00000647","1607","-4294965689","ERROR_UNKNOWN_COMPONENT","Component ID not registered." +"00000648","1608","-4294965688","ERROR_UNKNOWN_PROPERTY","Unknown property." +"00000649","1609","-4294965687","ERROR_INVALID_HANDLE_STATE","Handle is in an invalid state." +"0000064A","1610","-4294965686","ERROR_BAD_CONFIGURATION","The configuration data for this product is corrupt." +"0000064B","1611","-4294965685","ERROR_INDEX_ABSENT","Component qualifier not present." +"0000064C","1612","-4294965684","ERROR_INSTALL_SOURCE_ABSENT","The installation source for this product is not available. Verify that the source exists and that you can access it." +"0000064D","1613","-4294965683","ERROR_INSTALL_PACKAGE_VERSION","This installation package cannot be installed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service." +"0000064E","1614","-4294965682","ERROR_PRODUCT_UNINSTALLED","Product is uninstalled." +"0000064F","1615","-4294965681","ERROR_BAD_QUERY_SYNTAX","SQL query syntax invalid or unsupported." +"00000650","1616","-4294965680","ERROR_INVALID_FIELD","Record field does not exist." +"00000651","1617","-4294965679","ERROR_DEVICE_REMOVED","The device has been removed." +"00000652","1618","-4294965678","ERROR_INSTALL_ALREADY_RUNNING","Another installation is already in progress. Complete that installation before proceeding with this install." +"00000653","1619","-4294965677","ERROR_INSTALL_PACKAGE_OPEN_FAILED","This installation package could not be opened. Verify that the package exists and that you can access it - or contact the application vendor to verify that this is a valid Windows Installer package." +"00000654","1620","-4294965676","ERROR_INSTALL_PACKAGE_INVALID","This installation package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer package." +"00000655","1621","-4294965675","ERROR_INSTALL_UI_FAILURE","There was an error starting the Windows Installer service user interface." +"00000656","1622","-4294965674","ERROR_INSTALL_LOG_FAILURE","Error opening installation log file. Verify that the specified log file location exists and that you can write to it." +"00000657","1623","-4294965673","ERROR_INSTALL_LANGUAGE_UNSUPPORTED","The language of this installation package is not supported by your system." +"00000658","1624","-4294965672","ERROR_INSTALL_TRANSFORM_FAILURE","Error applying transforms. Verify that the specified transform paths are valid." +"00000659","1625","-4294965671","ERROR_INSTALL_PACKAGE_REJECTED","This installation is forbidden by system policy." +"0000065A","1626","-4294965670","ERROR_FUNCTION_NOT_CALLED","Function could not be executed." +"0000065B","1627","-4294965669","ERROR_FUNCTION_FAILED","Function failed during execution." +"0000065C","1628","-4294965668","ERROR_INVALID_TABLE","Invalid or unknown table specified. (Double-check the installer switches?) " +"0000065D","1629","-4294965667","ERROR_DATATYPE_MISMATCH","Data supplied is of wrong type." +"0000065E","1630","-4294965666","ERROR_UNSUPPORTED_TYPE","Data of this type is not supported." +"0000065F","1631","-4294965665","ERROR_CREATE_FAILED","The Windows Installer service failed to start." +"00000660","1632","-4294965664","ERROR_INSTALL_TEMP_UNWRITABLE","The Temp folder is on a drive that is full or is inaccessible. Free up space on the drive or verify that you have write permission on the Temp folder." +"00000661","1633","-4294965663","ERROR_INSTALL_PLATFORM_UNSUPPORTED","This installation package is not supported by this processor type. (Does this manifest have `Architecture: x86`? It might need to be `x64`.)" +"00000662","1634","-4294965662","ERROR_INSTALL_NOTUSED","Component not used on this computer." +"00000663","1635","-4294965661","ERROR_PATCH_PACKAGE_OPEN_FAILED","This update package could not be opened. Verify that the update package exists and that you can access it - or contact the application vendor to verify that this is a valid Windows Installer update package." +"00000664","1636","-4294965660","ERROR_PATCH_PACKAGE_INVALID","This update package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer update package." +"00000665","1637","-4294965659","ERROR_PATCH_PACKAGE_UNSUPPORTED","This update package cannot be processed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service." +"00000666","1638","-4294965658","ERROR_PRODUCT_VERSION","Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product - use Add/Remove Programs on the Control Panel." +"00000667","1639","-4294965657","ERROR_INVALID_COMMAND_LINE","Invalid command line argument. Double-check the installer switches. " +"00000668","1640","-4294965656","ERROR_INSTALL_REMOTE_DISALLOWED","Only administrators have permission to add - remove - or configure server software during a Terminal services remote session. If you want to install or configure software on the server - contact your network administrator." +"00000669","1641","-4294965655","ERROR_SUCCESS_REBOOT_INITIATED","The requested operation completed successfully. The system will be restarted so the changes can take effect." +"0000066A","1642","-4294965654","ERROR_PATCH_TARGET_NOT_FOUND","The upgrade cannot be installed by the Windows Installer service because the program to be upgraded may be missing - or the upgrade may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade." +"0000066B","1643","-4294965653","ERROR_PATCH_PACKAGE_REJECTED","The update package is not permitted by software restriction policy." +"0000066C","1644","-4294965652","ERROR_INSTALL_TRANSFORM_REJECTED","One or more customizations are not permitted by software restriction policy." +"0000066D","1645","-4294965651","ERROR_INSTALL_REMOTE_PROHIBITED","The Windows Installer does not permit installation from a Remote Desktop Connection." +"0000066E","1646","-4294965650","ERROR_PATCH_REMOVAL_UNSUPPORTED","Uninstallation of the update package is not supported." +"0000066F","1647","-4294965649","ERROR_UNKNOWN_PATCH","The update is not applied to this product." +"00000670","1648","-4294965648","ERROR_PATCH_NO_SEQUENCE","No valid sequence could be found for the set of updates." +"00000671","1649","-4294965647","ERROR_PATCH_REMOVAL_DISALLOWED","Update removal was disallowed by policy." +"00000672","1650","-4294965646","ERROR_INVALID_PATCH_XML","The XML update data is invalid." +"00000673","1651","-4294965645","ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT","Windows Installer does not permit updating of managed advertised products. At least one feature of the product must be installed before applying the update." +"00000674","1652","-4294965644","ERROR_INSTALL_SERVICE_SAFEBOOT","The Windows Installer service is not accessible in Safe Mode. Please try again when your computer is not in Safe Mode or you can use System Restore to return your machine to a previous good state." +"00000675","1653","-4294965643","ERROR_FAIL_FAST_EXCEPTION","A fail fast exception occurred. Exception handlers will not be invoked and the process will be terminated immediately." +"00000676","1654","-4294965642","ERROR_INSTALL_REJECTED","The app that you are trying to run is not supported on this version of Windows." +"000006A4","1700","-4294965596","RPC_S_INVALID_STRING_BINDING","The string binding is invalid." +"000006A5","1701","-4294965595","RPC_S_WRONG_KIND_OF_BINDING","The binding handle is not the correct type." +"000006A6","1702","-4294965594","RPC_S_INVALID_BINDING","The binding handle is invalid." +"000006A7","1703","-4294965593","RPC_S_PROTSEQ_NOT_SUPPORTED","The RPC protocol sequence is not supported." +"000006A8","1704","-4294965592","RPC_S_INVALID_RPC_PROTSEQ","The RPC protocol sequence is invalid." +"000006A9","1705","-4294965591","RPC_S_INVALID_STRING_UUID","The string universal unique identifier" +"000006AA","1706","-4294965590","RPC_S_INVALID_ENDPOINT_FORMAT","The endpoint format is invalid." +"000006AB","1707","-4294965589","RPC_S_INVALID_NET_ADDR","The network address is invalid." +"000006AC","1708","-4294965588","RPC_S_NO_ENDPOINT_FOUND","No endpoint was found." +"000006AD","1709","-4294965587","RPC_S_INVALID_TIMEOUT","The timeout value is invalid." +"000006AE","1710","-4294965586","RPC_S_OBJECT_NOT_FOUND","The object universal unique identifier" +"000006AF","1711","-4294965585","RPC_S_ALREADY_REGISTERED","The object universal unique identifier" +"000006B0","1712","-4294965584","RPC_S_TYPE_ALREADY_REGISTERED","The type universal unique identifier" +"000006B1","1713","-4294965583","RPC_S_ALREADY_LISTENING","The RPC server is already listening." +"000006B2","1714","-4294965582","RPC_S_NO_PROTSEQS_REGISTERED","No protocol sequences have been registered." +"000006B3","1715","-4294965581","RPC_S_NOT_LISTENING","The RPC server is not listening." +"000006B4","1716","-4294965580","RPC_S_UNKNOWN_MGR_TYPE","The manager type is unknown." +"000006B5","1717","-4294965579","RPC_S_UNKNOWN_IF","The interface is unknown." +"000006B6","1718","-4294965578","RPC_S_NO_BINDINGS","There are no bindings." +"000006B7","1719","-4294965577","RPC_S_NO_PROTSEQS","There are no protocol sequences." +"000006B8","1720","-4294965576","RPC_S_CANT_CREATE_ENDPOINT","The endpoint cannot be created." +"000006B9","1721","-4294965575","RPC_S_OUT_OF_RESOURCES","Not enough resources are available to complete this operation." +"000006BA","1722","-4294965574","RPC_S_SERVER_UNAVAILABLE","The RPC server is unavailable." +"000006BB","1723","-4294965573","RPC_S_SERVER_TOO_BUSY","The RPC server is too busy to complete this operation." +"000006BC","1724","-4294965572","RPC_S_INVALID_NETWORK_OPTIONS","The network options are invalid." +"000006BD","1725","-4294965571","RPC_S_NO_CALL_ACTIVE","There are no remote procedure calls active on this thread." +"000006BE","1726","-4294965570","RPC_S_CALL_FAILED","The remote procedure call failed." +"000006BF","1727","-4294965569","RPC_S_CALL_FAILED_DNE","The remote procedure call failed and did not execute." +"000006C0","1728","-4294965568","RPC_S_PROTOCOL_ERROR","A remote procedure call" +"000006C1","1729","-4294965567","RPC_S_PROXY_ACCESS_DENIED","Access to the HTTP proxy is denied." +"000006C2","1730","-4294965566","RPC_S_UNSUPPORTED_TRANS_SYN","The transfer syntax is not supported by the RPC server." +"000006C4","1732","-4294965564","RPC_S_UNSUPPORTED_TYPE","The universal unique identifier" +"000006C5","1733","-4294965563","RPC_S_INVALID_TAG","The tag is invalid." +"000006C6","1734","-4294965562","RPC_S_INVALID_BOUND","The array bounds are invalid." +"000006C7","1735","-4294965561","RPC_S_NO_ENTRY_NAME","The binding does not contain an entry name." +"000006C8","1736","-4294965560","RPC_S_INVALID_NAME_SYNTAX","The name syntax is invalid." +"000006C9","1737","-4294965559","RPC_S_UNSUPPORTED_NAME_SYNTAX","The name syntax is not supported." +"000006CB","1739","-4294965557","RPC_S_UUID_NO_ADDRESS","No network address is available to use to construct a universal unique identifier" +"000006CC","1740","-4294965556","RPC_S_DUPLICATE_ENDPOINT","The endpoint is a duplicate." +"000006CD","1741","-4294965555","RPC_S_UNKNOWN_AUTHN_TYPE","The authentication type is unknown." +"000006CE","1742","-4294965554","RPC_S_MAX_CALLS_TOO_SMALL","The maximum number of calls is too small." +"000006CF","1743","-4294965553","RPC_S_STRING_TOO_LONG","The string is too long." +"000006D0","1744","-4294965552","RPC_S_PROTSEQ_NOT_FOUND","The RPC protocol sequence was not found." +"000006D1","1745","-4294965551","RPC_S_PROCNUM_OUT_OF_RANGE","The procedure number is out of range." +"000006D2","1746","-4294965550","RPC_S_BINDING_HAS_NO_AUTH","The binding does not contain any authentication information." +"000006D3","1747","-4294965549","RPC_S_UNKNOWN_AUTHN_SERVICE","The authentication service is unknown." +"000006D4","1748","-4294965548","RPC_S_UNKNOWN_AUTHN_LEVEL","The authentication level is unknown." +"000006D5","1749","-4294965547","RPC_S_INVALID_AUTH_IDENTITY","The security context is invalid." +"000006D6","1750","-4294965546","RPC_S_UNKNOWN_AUTHZ_SERVICE","The authorization service is unknown." +"000006D7","1751","-4294965545","EPT_S_INVALID_ENTRY","The entry is invalid." +"000006D8","1752","-4294965544","EPT_S_CANT_PERFORM_OP","The server endpoint cannot perform the operation." +"000006D9","1753","-4294965543","EPT_S_NOT_REGISTERED","There are no more endpoints available from the endpoint mapper." +"000006DA","1754","-4294965542","RPC_S_NOTHING_TO_EXPORT","No interfaces have been exported." +"000006DB","1755","-4294965541","RPC_S_INCOMPLETE_NAME","The entry name is incomplete." +"000006DC","1756","-4294965540","RPC_S_INVALID_VERS_OPTION","The version option is invalid." +"000006DD","1757","-4294965539","RPC_S_NO_MORE_MEMBERS","There are no more members." +"000006DE","1758","-4294965538","RPC_S_NOT_ALL_OBJS_UNEXPORTED","There is nothing to unexport." +"000006DF","1759","-4294965537","RPC_S_INTERFACE_NOT_FOUND","The interface was not found." +"000006E0","1760","-4294965536","RPC_S_ENTRY_ALREADY_EXISTS","The entry already exists." +"000006E1","1761","-4294965535","RPC_S_ENTRY_NOT_FOUND","The entry is not found." +"000006E2","1762","-4294965534","RPC_S_NAME_SERVICE_UNAVAILABLE","The name service is unavailable." +"000006E3","1763","-4294965533","RPC_S_INVALID_NAF_ID","The network address family is invalid." +"000006E4","1764","-4294965532","RPC_S_CANNOT_SUPPORT","The requested operation is not supported." +"000006E5","1765","-4294965531","RPC_S_NO_CONTEXT_AVAILABLE","No security context is available to allow impersonation." +"000006E6","1766","-4294965530","RPC_S_INTERNAL_ERROR","An internal error occurred in a remote procedure call" +"000006E7","1767","-4294965529","RPC_S_ZERO_DIVIDE","The RPC server attempted an integer division by zero." +"000006E8","1768","-4294965528","RPC_S_ADDRESS_ERROR","An addressing error occurred in the RPC server." +"000006E9","1769","-4294965527","RPC_S_FP_DIV_ZERO","A floating-point operation at the RPC server caused a division by zero." +"000006EA","1770","-4294965526","RPC_S_FP_UNDERFLOW","A floating-point underflow occurred at the RPC server." +"000006EB","1771","-4294965525","RPC_S_FP_OVERFLOW","A floating-point overflow occurred at the RPC server." +"000006EC","1772","-4294965524","RPC_X_NO_MORE_ENTRIES","The list of RPC servers available for the binding of auto handles has been exhausted." +"000006ED","1773","-4294965523","RPC_X_SS_CHAR_TRANS_OPEN_FAIL","Unable to open the character translation table file." +"000006EE","1774","-4294965522","RPC_X_SS_CHAR_TRANS_SHORT_FILE","The file containing the character translation table has fewer than 512 bytes." +"000006EF","1775","-4294965521","RPC_X_SS_IN_NULL_CONTEXT","A null context handle was passed from the client to the host during a remote procedure call." +"000006F1","1777","-4294965519","RPC_X_SS_CONTEXT_DAMAGED","The context handle changed during a remote procedure call." +"000006F2","1778","-4294965518","RPC_X_SS_HANDLES_MISMATCH","The binding handles passed to a remote procedure call do not match." +"000006F3","1779","-4294965517","RPC_X_SS_CANNOT_GET_CALL_HANDLE","The stub is unable to get the remote procedure call handle." +"000006F4","1780","-4294965516","RPC_X_NULL_REF_POINTER","A null reference pointer was passed to the stub." +"000006F5","1781","-4294965515","RPC_X_ENUM_VALUE_OUT_OF_RANGE","The enumeration value is out of range." +"000006F6","1782","-4294965514","RPC_X_BYTE_COUNT_TOO_SMALL","The byte count is too small." +"000006F7","1783","-4294965513","RPC_X_BAD_STUB_DATA","The stub received bad data." +"000006F8","1784","-4294965512","ERROR_INVALID_USER_BUFFER","The supplied user buffer is not valid for the requested operation." +"000006F9","1785","-4294965511","ERROR_UNRECOGNIZED_MEDIA","The disk media is not recognized. It may not be formatted." +"000006FA","1786","-4294965510","ERROR_NO_TRUST_LSA_SECRET","The workstation does not have a trust secret." +"000006FB","1787","-4294965509","ERROR_NO_TRUST_SAM_ACCOUNT","The security database on the server does not have a computer account for this workstation trust relationship." +"000006FC","1788","-4294965508","ERROR_TRUSTED_DOMAIN_FAILURE","The trust relationship between the primary domain and the trusted domain failed." +"000006FD","1789","-4294965507","ERROR_TRUSTED_RELATIONSHIP_FAILURE","The trust relationship between this workstation and the primary domain failed." +"000006FE","1790","-4294965506","ERROR_TRUST_FAILURE","The network logon failed." +"000006FF","1791","-4294965505","RPC_S_CALL_IN_PROGRESS","A remote procedure call is already in progress for this thread." +"00000700","1792","-4294965504","ERROR_NETLOGON_NOT_STARTED","An attempt was made to logon - but the network logon service was not started." +"00000701","1793","-4294965503","ERROR_ACCOUNT_EXPIRED","The user's account has expired." +"00000702","1794","-4294965502","ERROR_REDIRECTOR_HAS_OPEN_HANDLES","The redirector is in use and cannot be unloaded." +"00000703","1795","-4294965501","ERROR_PRINTER_DRIVER_ALREADY_INSTALLED","The specified printer driver is already installed." +"00000704","1796","-4294965500","ERROR_UNKNOWN_PORT","The specified port is unknown." +"00000705","1797","-4294965499","ERROR_UNKNOWN_PRINTER_DRIVER","The printer driver is unknown." +"00000706","1798","-4294965498","ERROR_UNKNOWN_PRINTPROCESSOR","The print processor is unknown." +"00000707","1799","-4294965497","ERROR_INVALID_SEPARATOR_FILE","The specified separator file is invalid." +"00000708","1800","-4294965496","ERROR_INVALID_PRIORITY","The specified priority is invalid." +"00000709","1801","-4294965495","ERROR_INVALID_PRINTER_NAME","The printer name is invalid." +"0000070A","1802","-4294965494","ERROR_PRINTER_ALREADY_EXISTS","The printer already exists." +"0000070B","1803","-4294965493","ERROR_INVALID_PRINTER_COMMAND","The printer command is invalid." +"0000070C","1804","-4294965492","ERROR_INVALID_DATATYPE","The specified datatype is invalid." +"0000070D","1805","-4294965491","ERROR_INVALID_ENVIRONMENT","The environment specified is invalid." +"0000070E","1806","-4294965490","RPC_S_NO_MORE_BINDINGS","There are no more bindings." +"0000070F","1807","-4294965489","ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT","The account used is an interdomain trust account. Use your global user account or local user account to access this server." +"00000710","1808","-4294965488","ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT","The account used is a computer account. Use your global user account or local user account to access this server." +"00000711","1809","-4294965487","ERROR_NOLOGON_SERVER_TRUST_ACCOUNT","The account used is a server trust account. Use your global user account or local user account to access this server." +"00000712","1810","-4294965486","ERROR_DOMAIN_TRUST_INCONSISTENT","The name or security ID" +"00000713","1811","-4294965485","ERROR_SERVER_HAS_OPEN_HANDLES","The server is in use and cannot be unloaded." +"00000714","1812","-4294965484","ERROR_RESOURCE_DATA_NOT_FOUND","The specified image file did not contain a resource section." +"00000715","1813","-4294965483","ERROR_RESOURCE_TYPE_NOT_FOUND","The specified resource type cannot be found in the image file." +"00000716","1814","-4294965482","ERROR_RESOURCE_NAME_NOT_FOUND","The specified resource name cannot be found in the image file." +"00000717","1815","-4294965481","ERROR_RESOURCE_LANG_NOT_FOUND","The specified resource language ID cannot be found in the image file." +"00000718","1816","-4294965480","ERROR_NOT_ENOUGH_QUOTA","Not enough quota is available to process this command." +"00000719","1817","-4294965479","RPC_S_NO_INTERFACES","No interfaces have been registered." +"0000071A","1818","-4294965478","RPC_S_CALL_CANCELLED","The remote procedure call was cancelled." +"0000071B","1819","-4294965477","RPC_S_BINDING_INCOMPLETE","The binding handle does not contain all required information." +"0000071C","1820","-4294965476","RPC_S_COMM_FAILURE","A communications failure occurred during a remote procedure call." +"0000071D","1821","-4294965475","RPC_S_UNSUPPORTED_AUTHN_LEVEL","The requested authentication level is not supported." +"0000071E","1822","-4294965474","RPC_S_NO_PRINC_NAME","No principal name registered." +"0000071F","1823","-4294965473","RPC_S_NOT_RPC_ERROR","The error specified is not a valid Windows RPC error code." +"00000720","1824","-4294965472","RPC_S_UUID_LOCAL_ONLY","A UUID that is valid only on this computer has been allocated." +"00000721","1825","-4294965471","RPC_S_SEC_PKG_ERROR","A security package specific error occurred." +"00000722","1826","-4294965470","RPC_S_NOT_CANCELLED","Thread is not canceled." +"00000723","1827","-4294965469","RPC_X_INVALID_ES_ACTION","Invalid operation on the encoding/decoding handle." +"00000724","1828","-4294965468","RPC_X_WRONG_ES_VERSION","Incompatible version of the serializing package." +"00000725","1829","-4294965467","RPC_X_WRONG_STUB_VERSION","Incompatible version of the RPC stub." +"00000726","1830","-4294965466","RPC_X_INVALID_PIPE_OBJECT","The RPC pipe object is invalid or corrupted." +"00000727","1831","-4294965465","RPC_X_WRONG_PIPE_ORDER","An invalid operation was attempted on an RPC pipe object." +"00000728","1832","-4294965464","RPC_X_WRONG_PIPE_VERSION","Unsupported RPC pipe version." +"00000729","1833","-4294965463","RPC_S_COOKIE_AUTH_FAILED","HTTP proxy server rejected the connection because the cookie authentication failed." +"0000076A","1898","-4294965398","RPC_S_GROUP_MEMBER_NOT_FOUND","The group member was not found." +"0000076B","1899","-4294965397","EPT_S_CANT_CREATE","The endpoint mapper database entry could not be created." +"0000076C","1900","-4294965396","RPC_S_INVALID_OBJECT","The object universal unique identifier" +"0000076D","1901","-4294965395","ERROR_INVALID_TIME","The specified time is invalid." +"0000076E","1902","-4294965394","ERROR_INVALID_FORM_NAME","The specified form name is invalid." +"0000076F","1903","-4294965393","ERROR_INVALID_FORM_SIZE","The specified form size is invalid." +"00000770","1904","-4294965392","ERROR_ALREADY_WAITING","The specified printer handle is already being waited on." +"00000771","1905","-4294965391","ERROR_PRINTER_DELETED","The specified printer has been deleted." +"00000772","1906","-4294965390","ERROR_INVALID_PRINTER_STATE","The state of the printer is invalid." +"00000773","1907","-4294965389","ERROR_PASSWORD_MUST_CHANGE","The user's password must be changed before signing in." +"00000774","1908","-4294965388","ERROR_DOMAIN_CONTROLLER_NOT_FOUND","Could not find the domain controller for this domain." +"00000775","1909","-4294965387","ERROR_ACCOUNT_LOCKED_OUT","The referenced account is currently locked out and may not be logged on to." +"00000776","1910","-4294965386","OR_INVALID_OXID","The object exporter specified was not found." +"00000777","1911","-4294965385","OR_INVALID_OID","The object specified was not found." +"00000778","1912","-4294965384","OR_INVALID_SET","The object resolver set specified was not found." +"00000779","1913","-4294965383","RPC_S_SEND_INCOMPLETE","Some data remains to be sent in the request buffer." +"0000077A","1914","-4294965382","RPC_S_INVALID_ASYNC_HANDLE","Invalid asynchronous remote procedure call handle." +"0000077B","1915","-4294965381","RPC_S_INVALID_ASYNC_CALL","Invalid asynchronous RPC call handle for this operation." +"0000077C","1916","-4294965380","RPC_X_PIPE_CLOSED","The RPC pipe object has already been closed." +"0000077D","1917","-4294965379","RPC_X_PIPE_DISCIPLINE_ERROR","The RPC call completed before all pipes were processed." +"0000077E","1918","-4294965378","RPC_X_PIPE_EMPTY","No more data is available from the RPC pipe." +"0000077F","1919","-4294965377","ERROR_NO_SITENAME","No site name is available for this machine." +"00000780","1920","-4294965376","ERROR_CANT_ACCESS_FILE","The file cannot be accessed by the system." +"00000781","1921","-4294965375","ERROR_CANT_RESOLVE_FILENAME","The name of the file cannot be resolved by the system." +"00000782","1922","-4294965374","RPC_S_ENTRY_TYPE_MISMATCH","The entry is not of the expected type." +"00000783","1923","-4294965373","RPC_S_NOT_ALL_OBJS_EXPORTED","Not all object UUIDs could be exported to the specified entry." +"00000784","1924","-4294965372","RPC_S_INTERFACE_NOT_EXPORTED","Interface could not be exported to the specified entry." +"00000785","1925","-4294965371","RPC_S_PROFILE_NOT_ADDED","The specified profile entry could not be added." +"00000786","1926","-4294965370","RPC_S_PRF_ELT_NOT_ADDED","The specified profile element could not be added." +"00000787","1927","-4294965369","RPC_S_PRF_ELT_NOT_REMOVED","The specified profile element could not be removed." +"00000788","1928","-4294965368","RPC_S_GRP_ELT_NOT_ADDED","The group element could not be added." +"00000789","1929","-4294965367","RPC_S_GRP_ELT_NOT_REMOVED","The group element could not be removed." +"0000078A","1930","-4294965366","ERROR_KM_DRIVER_BLOCKED","The printer driver is not compatible with a policy enabled on your computer that blocks NT 4.0 drivers." +"0000078B","1931","-4294965365","ERROR_CONTEXT_EXPIRED","The context has expired and can no longer be used." +"0000078C","1932","-4294965364","ERROR_PER_USER_TRUST_QUOTA_EXCEEDED","The current user's delegated trust creation quota has been exceeded." +"0000078D","1933","-4294965363","ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED","The total delegated trust creation quota has been exceeded." +"0000078E","1934","-4294965362","ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED","The current user's delegated trust deletion quota has been exceeded." +"0000078F","1935","-4294965361","ERROR_AUTHENTICATION_FIREWALL_FAILED","The computer you are signing into is protected by an authentication firewall. The specified account is not allowed to authenticate to the computer." +"00000790","1936","-4294965360","ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED","Remote connections to the Print Spooler are blocked by a policy set on your machine." +"00000791","1937","-4294965359","ERROR_NTLM_BLOCKED","Authentication failed because NTLM authentication has been disabled." +"00000792","1938","-4294965358","ERROR_PASSWORD_CHANGE_REQUIRED","Logon Failure: EAS policy requires that the user change their password before this operation can be performed." +"000007D0","2000","-4294965296","ERROR_INVALID_PIXEL_FORMAT","The pixel format is invalid." +"000007D1","2001","-4294965295","ERROR_BAD_DRIVER","The specified driver is invalid." +"000007D2","2002","-4294965294","ERROR_INVALID_WINDOW_STYLE","The window style or class attribute is invalid for this operation." +"000007D3","2003","-4294965293","ERROR_METAFILE_NOT_SUPPORTED","The requested metafile operation is not supported." +"000007D4","2004","-4294965292","ERROR_TRANSFORM_NOT_SUPPORTED","The requested transformation operation is not supported." +"000007D5","2005","-4294965291","ERROR_CLIPPING_NOT_SUPPORTED","The requested clipping operation is not supported." +"000007DA","2010","-4294965286","ERROR_INVALID_CMM","The specified color management module is invalid." +"000007DB","2011","-4294965285","ERROR_INVALID_PROFILE","The specified color profile is invalid." +"000007DC","2012","-4294965284","ERROR_TAG_NOT_FOUND","The specified tag was not found." +"000007DD","2013","-4294965283","ERROR_TAG_NOT_PRESENT","A required tag is not present." +"000007DE","2014","-4294965282","ERROR_DUPLICATE_TAG","The specified tag is already present." +"000007DF","2015","-4294965281","ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE","The specified color profile is not associated with the specified device." +"000007E0","2016","-4294965280","ERROR_PROFILE_NOT_FOUND","The specified color profile was not found." +"000007E1","2017","-4294965279","ERROR_INVALID_COLORSPACE","The specified color space is invalid." +"000007E2","2018","-4294965278","ERROR_ICM_NOT_ENABLED","Image Color Management is not enabled." +"000007E3","2019","-4294965277","ERROR_DELETING_ICM_XFORM","There was an error while deleting the color transform." +"000007E4","2020","-4294965276","ERROR_INVALID_TRANSFORM","The specified color transform is invalid." +"000007E5","2021","-4294965275","ERROR_COLORSPACE_MISMATCH","The specified transform does not match the bitmap's color space." +"000007E6","2022","-4294965274","ERROR_INVALID_COLORINDEX","The specified named color index is not present in the profile." +"000007E7","2023","-4294965273","ERROR_PROFILE_DOES_NOT_MATCH_DEVICE","The specified profile is intended for a device of a different type than the specified device." +"0000083C","2108","-4294965188","ERROR_CONNECTED_OTHER_PASSWORD","The network connection was made successfully - but the user had to be prompted for a password other than the one originally specified." +"0000083D","2109","-4294965187","ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT","The network connection was made successfully using default credentials." +"0000089A","2202","-4294965094","ERROR_BAD_USERNAME","The specified username is invalid." +"000008CA","2250","-4294965046","ERROR_NOT_CONNECTED","This network connection does not exist." +"00000961","2401","-4294964895","ERROR_OPEN_FILES","This network connection has files open or requests pending." +"00000962","2402","-4294964894","ERROR_ACTIVE_CONNECTIONS","Active connections still exist." +"00000963","-4294964893","2403","NERR_BADPasswordCore","This share name or password is invalid" +"00000964","2404","-4294964892","ERROR_DEVICE_IN_USE","The device is in use by an active process and cannot be disconnected." +"00000BB8","3000","-4294964296","ERROR_UNKNOWN_PRINT_MONITOR","The specified print monitor is unknown." +"00000BB9","3001","-4294964295","ERROR_PRINTER_DRIVER_IN_USE","The specified printer driver is currently in use." +"00000BBA","3002","-4294964294","ERROR_SPOOL_FILE_NOT_FOUND","The spool file was not found." +"00000BBB","3003","-4294964293","ERROR_SPL_NO_STARTDOC","A StartDocPrinter call was not issued." +"00000BBC","3004","-4294964292","ERROR_SPL_NO_ADDJOB","An AddJob call was not issued." +"00000BBD","3005","-4294964291","ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED","The specified print processor has already been installed." +"00000BBE","3006","-4294964290","ERROR_PRINT_MONITOR_ALREADY_INSTALLED","The specified print monitor has already been installed." +"00000BBF","3007","-4294964289","ERROR_INVALID_PRINT_MONITOR","The specified print monitor does not have the required functions." +"00000BC0","3008","-4294964288","ERROR_PRINT_MONITOR_IN_USE","The specified print monitor is currently in use." +"00000BC1","3009","-4294964287","ERROR_PRINTER_HAS_JOBS_QUEUED","The requested operation is not allowed when there are jobs queued to the printer." +"00000BC2","3010","-4294964286","ERROR_SUCCESS_REBOOT_REQUIRED","The requested operation is successful. Changes will not be effective until the system is rebooted.(Should this be add as an `InstallerSuccessCode` or similar?)" +"00000BC3","3011","-4294964285","ERROR_SUCCESS_RESTART_REQUIRED","The requested operation is successful. Changes will not be effective until the service is restarted." +"00000BC4","3012","-4294964284","ERROR_PRINTER_NOT_FOUND","No printers were found." +"00000BC5","3013","-4294964283","ERROR_PRINTER_DRIVER_WARNED","The printer driver is known to be unreliable." +"00000BC6","3014","-4294964282","ERROR_PRINTER_DRIVER_BLOCKED","The printer driver is known to harm the system." +"00000BC7","3015","-4294964281","ERROR_PRINTER_DRIVER_PACKAGE_IN_USE","The specified printer driver package is currently in use." +"00000BC8","3016","-4294964280","ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND","Unable to find a core driver package that is required by the printer driver package." +"00000BC9","3017","-4294964279","ERROR_FAIL_REBOOT_REQUIRED","The requested operation failed. A system reboot is required to roll back changes made." +"00000BCA","3018","-4294964278","ERROR_FAIL_REBOOT_INITIATED","The requested operation failed. A system reboot has been initiated to roll back changes made." +"00000BCB","3019","-4294964277","ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED","The specified printer driver was not found on the system and needs to be downloaded." +"00000BCC","3020","-4294964276","ERROR_PRINT_JOB_RESTART_REQUIRED","The requested print job has failed to print. A print system update requires the job to be resubmitted." +"00000BCD","3021","-4294964275","ERROR_INVALID_PRINTER_DRIVER_MANIFEST","The printer driver does not contain a valid manifest - or contains too many manifests." +"00000BCE","3022","-4294964274","ERROR_PRINTER_NOT_SHAREABLE","The specified printer cannot be shared." +"00000BEA","3050","-4294964246","ERROR_REQUEST_PAUSED","The operation was paused." +"00000C0B","-4294964213","3083","NULL","" +"00000CC4","-4294964028","3268","NULL","" +"00000D47","-4294963897","3399","NULL","" +"00000E5C","-4294963620","3676","NULL","" +"00000E74","-4294963596","3700","NULL","" +"00000F6E","3950","-4294963346","ERROR_IO_REISSUE_AS_CACHED","Reissue the given operation as a cached IO operation." +"00000FA0","4000","-4294963296","ERROR_WINS_INTERNAL","WINS encountered an error while processing the command." +"00000FA1","4001","-4294963295","ERROR_CAN_NOT_DEL_LOCAL_WINS","The local WINS cannot be deleted." +"00000FA2","4002","-4294963294","ERROR_STATIC_INIT","The importation from the file failed." +"00000FA3","4003","-4294963293","ERROR_INC_BACKUP","The backup failed. Was a full backup done before?" +"00000FA5","4005","-4294963291","ERROR_REC_NON_EXISTENT","The name does not exist in the WINS database." +"00000FA6","4006","-4294963290","ERROR_RPL_NOT_ALLOWED","Replication with a nonconfigured partner is not allowed." +"00000FD2","4050","-4294963246","PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED","The version of the supplied content information is not supported." +"00000FD3","4051","-4294963245","PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO","The supplied content information is malformed." +"00000FD4","4052","-4294963244","PEERDIST_ERROR_MISSING_DATA","The requested data cannot be found in local or peer caches." +"00000FD5","4053","-4294963243","PEERDIST_ERROR_NO_MORE","No more data is available or required." +"00000FD6","4054","-4294963242","PEERDIST_ERROR_NOT_INITIALIZED","The supplied object has not been initialized." +"00000FD7","4055","-4294963241","PEERDIST_ERROR_ALREADY_INITIALIZED","The supplied object has already been initialized." +"00000FD8","4056","-4294963240","PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS","A shutdown operation is already in progress." +"00000FD9","4057","-4294963239","PEERDIST_ERROR_INVALIDATED","The supplied object has already been invalidated." +"00000FDA","4058","-4294963238","PEERDIST_ERROR_ALREADY_EXISTS","An element already exists and was not replaced." +"00000FDB","4059","-4294963237","PEERDIST_ERROR_OPERATION_NOTFOUND","Cannot cancel the requested operation as it has already been completed." +"00000FDC","4060","-4294963236","PEERDIST_ERROR_ALREADY_COMPLETED","Can not perform the requested operation because it has already been carried out." +"00000FDD","4061","-4294963235","PEERDIST_ERROR_OUT_OF_BOUNDS","An operation accessed data beyond the bounds of valid data." +"00000FDE","4062","-4294963234","PEERDIST_ERROR_VERSION_UNSUPPORTED","The requested version is not supported." +"00000FDF","4063","-4294963233","PEERDIST_ERROR_INVALID_CONFIGURATION","A configuration value is invalid." +"00000FE0","4064","-4294963232","PEERDIST_ERROR_NOT_LICENSED","The SKU is not licensed." +"00000FE1","4065","-4294963231","PEERDIST_ERROR_SERVICE_UNAVAILABLE","PeerDist Service is still initializing and will be available shortly." +"00000FE2","4066","-4294963230","PEERDIST_ERROR_TRUST_FAILURE","Communication with one or more computers will be temporarily blocked due to recent errors." +"00001004","4100","-4294963196","ERROR_DHCP_ADDRESS_CONFLICT","The DHCP client has obtained an IP address that is already in use on the network. The local interface will be disabled until the DHCP client can obtain a new address." +"00001068","4200","-4294963096","ERROR_WMI_GUID_NOT_FOUND","The GUID passed was not recognized as valid by a WMI data provider." +"00001069","4201","-4294963095","ERROR_WMI_INSTANCE_NOT_FOUND","The instance name passed was not recognized as valid by a WMI data provider." +"0000106A","4202","-4294963094","ERROR_WMI_ITEMID_NOT_FOUND","The data item ID passed was not recognized as valid by a WMI data provider." +"0000106B","4203","-4294963093","ERROR_WMI_TRY_AGAIN","The WMI request could not be completed and should be retried." +"0000106C","4204","-4294963092","ERROR_WMI_DP_NOT_FOUND","The WMI data provider could not be located." +"0000106D","4205","-4294963091","ERROR_WMI_UNRESOLVED_INSTANCE_REF","The WMI data provider references an instance set that has not been registered." +"0000106E","4206","-4294963090","ERROR_WMI_ALREADY_ENABLED","The WMI data block or event notification has already been enabled." +"0000106F","4207","-4294963089","ERROR_WMI_GUID_DISCONNECTED","The WMI data block is no longer available." +"00001070","4208","-4294963088","ERROR_WMI_SERVER_UNAVAILABLE","The WMI data service is not available." +"00001071","4209","-4294963087","ERROR_WMI_DP_FAILED","The WMI data provider failed to carry out the request." +"00001072","4210","-4294963086","ERROR_WMI_INVALID_MOF","The WMI MOF information is not valid." +"00001073","4211","-4294963085","ERROR_WMI_INVALID_REGINFO","The WMI registration information is not valid." +"00001074","4212","-4294963084","ERROR_WMI_ALREADY_DISABLED","The WMI data block or event notification has already been disabled." +"00001075","4213","-4294963083","ERROR_WMI_READ_ONLY","The WMI data item or data block is read only." +"00001076","4214","-4294963082","ERROR_WMI_SET_FAILURE","The WMI data item or data block could not be changed." +"0000109A","4250","-4294963046","ERROR_NOT_APPCONTAINER","This operation is only valid in the context of an app container." +"0000109B","4251","-4294963045","ERROR_APPCONTAINER_REQUIRED","This application can only run in the context of an app container." +"0000109C","4252","-4294963044","ERROR_NOT_SUPPORTED_IN_APPCONTAINER","This functionality is not supported in the context of an app container." +"0000109D","4253","-4294963043","ERROR_INVALID_PACKAGE_SID_LENGTH","The length of the SID supplied is not a valid length for app container SIDs." +"0000109F","-4294963041","4255","NULL","" +"000010CC","4300","-4294962996","ERROR_INVALID_MEDIA","The media identifier does not represent a valid medium." +"000010CD","4301","-4294962995","ERROR_INVALID_LIBRARY","The library identifier does not represent a valid library." +"000010CE","4302","-4294962994","ERROR_INVALID_MEDIA_POOL","The media pool identifier does not represent a valid media pool." +"000010CF","4303","-4294962993","ERROR_DRIVE_MEDIA_MISMATCH","The drive and medium are not compatible or exist in different libraries." +"000010D0","4304","-4294962992","ERROR_MEDIA_OFFLINE","The medium currently exists in an offline library and must be online to perform this operation." +"000010D1","4305","-4294962991","ERROR_LIBRARY_OFFLINE","The operation cannot be performed on an offline library." +"000010D2","4306","-4294962990","ERROR_EMPTY","The library - drive - or media pool is empty." +"000010D3","4307","-4294962989","ERROR_NOT_EMPTY","The library - drive - or media pool must be empty to perform this operation." +"000010D4","4308","-4294962988","ERROR_MEDIA_UNAVAILABLE","No media is currently available in this media pool or library." +"000010D5","4309","-4294962987","ERROR_RESOURCE_DISABLED","A resource required for this operation is disabled." +"000010D6","4310","-4294962986","ERROR_INVALID_CLEANER","The media identifier does not represent a valid cleaner." +"000010D7","4311","-4294962985","ERROR_UNABLE_TO_CLEAN","The drive cannot be cleaned or does not support cleaning." +"000010D8","4312","-4294962984","ERROR_OBJECT_NOT_FOUND","The object identifier does not represent a valid object." +"000010D9","4313","-4294962983","ERROR_DATABASE_FAILURE","Unable to read from or write to the database." +"000010DA","4314","-4294962982","ERROR_DATABASE_FULL","The database is full." +"000010DB","4315","-4294962981","ERROR_MEDIA_INCOMPATIBLE","The medium is not compatible with the device or media pool." +"000010DC","4316","-4294962980","ERROR_RESOURCE_NOT_PRESENT","The resource required for this operation does not exist." +"000010DD","4317","-4294962979","ERROR_INVALID_OPERATION","The operation identifier is not valid." +"000010DE","4318","-4294962978","ERROR_MEDIA_NOT_AVAILABLE","The media is not mounted or ready for use." +"000010DF","4319","-4294962977","ERROR_DEVICE_NOT_AVAILABLE","The device is not ready for use." +"000010E0","4320","-4294962976","ERROR_REQUEST_REFUSED","The operator or administrator has refused the request." +"000010E1","4321","-4294962975","ERROR_INVALID_DRIVE_OBJECT","The drive identifier does not represent a valid drive." +"000010E2","4322","-4294962974","ERROR_LIBRARY_FULL","Library is full. No slot is available for use." +"000010E3","4323","-4294962973","ERROR_MEDIUM_NOT_ACCESSIBLE","The transport cannot access the medium." +"000010E4","4324","-4294962972","ERROR_UNABLE_TO_LOAD_MEDIUM","Unable to load the medium into the drive." +"000010E5","4325","-4294962971","ERROR_UNABLE_TO_INVENTORY_DRIVE","Unable to retrieve the drive status." +"000010E6","4326","-4294962970","ERROR_UNABLE_TO_INVENTORY_SLOT","Unable to retrieve the slot status." +"000010E7","4327","-4294962969","ERROR_UNABLE_TO_INVENTORY_TRANSPORT","Unable to retrieve status about the transport." +"000010E8","4328","-4294962968","ERROR_TRANSPORT_FULL","Cannot use the transport because it is already in use." +"000010E9","4329","-4294962967","ERROR_CONTROLLING_IEPORT","Unable to open or close the inject/eject port." +"000010EA","4330","-4294962966","ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA","Unable to eject the medium because it is in a drive." +"000010EB","4331","-4294962965","ERROR_CLEANER_SLOT_SET","A cleaner slot is already reserved." +"000010EC","4332","-4294962964","ERROR_CLEANER_SLOT_NOT_SET","A cleaner slot is not reserved." +"000010ED","4333","-4294962963","ERROR_CLEANER_CARTRIDGE_SPENT","The cleaner cartridge has performed the maximum number of drive cleanings." +"000010EE","4334","-4294962962","ERROR_UNEXPECTED_OMID","Unexpected on-medium identifier." +"000010EF","4335","-4294962961","ERROR_CANT_DELETE_LAST_ITEM","The last remaining item in this group or resource cannot be deleted." +"000010F0","4336","-4294962960","ERROR_MESSAGE_EXCEEDS_MAX_SIZE","The message provided exceeds the maximum size allowed for this parameter." +"000010F1","4337","-4294962959","ERROR_VOLUME_CONTAINS_SYS_FILES","The volume contains system or paging files." +"000010F2","4338","-4294962958","ERROR_INDIGENOUS_TYPE","The media type cannot be removed from this library since at least one drive in the library reports it can support this media type." +"000010F3","4339","-4294962957","ERROR_NO_SUPPORTING_DRIVES","This offline media cannot be mounted on this system since no enabled drives are present which can be used." +"000010F4","4340","-4294962956","ERROR_CLEANER_CARTRIDGE_INSTALLED","A cleaner cartridge is present in the tape library." +"000010F5","4341","-4294962955","ERROR_IEPORT_FULL","Cannot use the inject/eject port because it is not empty." +"000010FE","4350","-4294962946","ERROR_FILE_OFFLINE","This file is currently not available for use on this computer." +"000010FF","4351","-4294962945","ERROR_REMOTE_STORAGE_NOT_ACTIVE","The remote storage service is not operational at this time." +"00001100","4352","-4294962944","ERROR_REMOTE_STORAGE_MEDIA_ERROR","The remote storage service encountered a media error." +"00001112","-4294962926","4370","Error_No_Media_In_Drive","No media in drive" +"00001126","4390","-4294962906","ERROR_NOT_A_REPARSE_POINT","The file or directory is not a reparse point." +"00001127","4391","-4294962905","ERROR_REPARSE_ATTRIBUTE_CONFLICT","The reparse point attribute cannot be set because it conflicts with an existing attribute." +"00001128","4392","-4294962904","ERROR_INVALID_REPARSE_DATA","The data present in the reparse point buffer is invalid." +"00001129","4393","-4294962903","ERROR_REPARSE_TAG_INVALID","The tag present in the reparse point buffer is invalid." +"0000112A","4394","-4294962902","ERROR_REPARSE_TAG_MISMATCH","There is a mismatch between the tag specified in the request and the tag present in the reparse point." +"00001130","4400","-4294962896","ERROR_APP_DATA_NOT_FOUND","Fast Cache data not found." +"00001131","4401","-4294962895","ERROR_APP_DATA_EXPIRED","Fast Cache data expired." +"00001132","4402","-4294962894","ERROR_APP_DATA_CORRUPT","Fast Cache data corrupt." +"00001133","4403","-4294962893","ERROR_APP_DATA_LIMIT_EXCEEDED","Fast Cache data has exceeded its max size and cannot be updated." +"00001134","4404","-4294962892","ERROR_APP_DATA_REBOOT_REQUIRED","Fast Cache has been ReArmed and requires a reboot until it can be updated." +"00001144","4420","-4294962876","ERROR_SECUREBOOT_ROLLBACK_DETECTED","Secure Boot detected that rollback of protected data has been attempted." +"00001145","4421","-4294962875","ERROR_SECUREBOOT_POLICY_VIOLATION","The value is protected by Secure Boot policy and cannot be modified or deleted." +"00001146","4422","-4294962874","ERROR_SECUREBOOT_INVALID_POLICY","The Secure Boot policy is invalid." +"00001147","4423","-4294962873","ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND","A new Secure Boot policy did not contain the current publisher on its update list." +"00001148","4424","-4294962872","ERROR_SECUREBOOT_POLICY_NOT_SIGNED","The Secure Boot policy is either not signed or is signed by a non-trusted signer." +"00001149","4425","-4294962871","ERROR_SECUREBOOT_NOT_ENABLED","Secure Boot is not enabled on this machine." +"0000114A","4426","-4294962870","ERROR_SECUREBOOT_FILE_REPLACED","Secure Boot requires that certain files and drivers are not replaced by other files or drivers." +"00001158","4440","-4294962856","ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED","The copy offload read operation is not supported by a filter." +"00001159","4441","-4294962855","ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED","The copy offload write operation is not supported by a filter." +"0000115A","4442","-4294962854","ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED","The copy offload read operation is not supported for the file." +"0000115B","4443","-4294962853","ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED","The copy offload write operation is not supported for the file." +"0000117A","-4294962822","4474","NULL","" +"00001190","-4294962800","4496","Error_Shutdown_IS_Scheduled","A system shutdown has already been scheduled" +"00001194","4500","-4294962796","ERROR_VOLUME_NOT_SIS_ENABLED","Single Instance Storage is not available on this volume." +"00001234","-4294962636","4660","Error_Port_Unreachable","No Service is operating at the destination network endpoint on the remote system" +"00001389","5001","-4294962295","ERROR_DEPENDENT_RESOURCE_EXISTS","The operation cannot be completed because other resources are dependent on this resource." +"0000138A","5002","-4294962294","ERROR_DEPENDENCY_NOT_FOUND","The cluster resource dependency cannot be found." +"0000138B","5003","-4294962293","ERROR_DEPENDENCY_ALREADY_EXISTS","The cluster resource cannot be made dependent on the specified resource because it is already dependent." +"0000138C","5004","-4294962292","ERROR_RESOURCE_NOT_ONLINE","The cluster resource is not online." +"0000138D","5005","-4294962291","ERROR_HOST_NODE_NOT_AVAILABLE","A cluster node is not available for this operation." +"0000138E","5006","-4294962290","ERROR_RESOURCE_NOT_AVAILABLE","The cluster resource is not available." +"0000138F","5007","-4294962289","ERROR_RESOURCE_NOT_FOUND","The cluster resource could not be found." +"00001390","5008","-4294962288","ERROR_SHUTDOWN_CLUSTER","The cluster is being shut down." +"00001391","5009","-4294962287","ERROR_CANT_EVICT_ACTIVE_NODE","A cluster node cannot be evicted from the cluster unless the node is down or it is the last node." +"00001392","5010","-4294962286","ERROR_OBJECT_ALREADY_EXISTS","The object already exists." +"00001393","5011","-4294962285","ERROR_OBJECT_IN_LIST","The object is already in the list." +"00001394","5012","-4294962284","ERROR_GROUP_NOT_AVAILABLE","The cluster group is not available for any new requests." +"00001395","5013","-4294962283","ERROR_GROUP_NOT_FOUND","The cluster group could not be found." +"00001396","5014","-4294962282","ERROR_GROUP_NOT_ONLINE","The operation could not be completed because the cluster group is not online." +"00001397","5015","-4294962281","ERROR_HOST_NODE_NOT_RESOURCE_OWNER","The operation failed because either the specified cluster node is not the owner of the resource - or the node is not a possible owner of the resource." +"00001398","5016","-4294962280","ERROR_HOST_NODE_NOT_GROUP_OWNER","The operation failed because either the specified cluster node is not the owner of the group - or the node is not a possible owner of the group." +"00001399","5017","-4294962279","ERROR_RESMON_CREATE_FAILED","The cluster resource could not be created in the specified resource monitor." +"0000139A","5018","-4294962278","ERROR_RESMON_ONLINE_FAILED","The cluster resource could not be brought online by the resource monitor." +"0000139B","5019","-4294962277","ERROR_RESOURCE_ONLINE","The operation could not be completed because the cluster resource is online." +"0000139C","5020","-4294962276","ERROR_QUORUM_RESOURCE","The cluster resource could not be deleted or brought offline because it is the quorum resource." +"0000139D","5021","-4294962275","ERROR_NOT_QUORUM_CAPABLE","The cluster could not make the specified resource a quorum resource because it is not capable of being a quorum resource." +"0000139E","5022","-4294962274","ERROR_CLUSTER_SHUTTING_DOWN","The cluster software is shutting down." +"0000139F","5023","-4294962273","ERROR_INVALID_STATE","The group or resource is not in the correct state to perform the requested operation." +"000013A0","5024","-4294962272","ERROR_RESOURCE_PROPERTIES_STORED","The properties were stored but not all changes will take effect until the next time the resource is brought online." +"000013A1","5025","-4294962271","ERROR_NOT_QUORUM_CLASS","The cluster could not make the specified resource a quorum resource because it does not belong to a shared storage class." +"000013A2","5026","-4294962270","ERROR_CORE_RESOURCE","The cluster resource could not be deleted since it is a core resource." +"000013A3","5027","-4294962269","ERROR_QUORUM_RESOURCE_ONLINE_FAILED","The quorum resource failed to come online." +"000013A4","5028","-4294962268","ERROR_QUORUMLOG_OPEN_FAILED","The quorum log could not be created or mounted successfully." +"000013A5","5029","-4294962267","ERROR_CLUSTERLOG_CORRUPT","The cluster log is corrupt." +"000013A6","5030","-4294962266","ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE","The record could not be written to the cluster log since it exceeds the maximum size." +"000013A7","5031","-4294962265","ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE","The cluster log exceeds its maximum size." +"000013A8","5032","-4294962264","ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND","No checkpoint record was found in the cluster log." +"000013A9","5033","-4294962263","ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE","The minimum required disk space needed for logging is not available." +"000013AA","5034","-4294962262","ERROR_QUORUM_OWNER_ALIVE","The cluster node failed to take control of the quorum resource because the resource is owned by another active node." +"000013AB","5035","-4294962261","ERROR_NETWORK_NOT_AVAILABLE","A cluster network is not available for this operation." +"000013AC","5036","-4294962260","ERROR_NODE_NOT_AVAILABLE","A cluster node is not available for this operation." +"000013AD","5037","-4294962259","ERROR_ALL_NODES_NOT_AVAILABLE","All cluster nodes must be running to perform this operation." +"000013AE","5038","-4294962258","ERROR_RESOURCE_FAILED","A cluster resource failed." +"000013AF","5039","-4294962257","ERROR_CLUSTER_INVALID_NODE","The cluster node is not valid." +"000013B0","5040","-4294962256","ERROR_CLUSTER_NODE_EXISTS","The cluster node already exists." +"000013B1","5041","-4294962255","ERROR_CLUSTER_JOIN_IN_PROGRESS","A node is in the process of joining the cluster." +"000013B2","5042","-4294962254","ERROR_CLUSTER_NODE_NOT_FOUND","The cluster node was not found." +"000013B3","5043","-4294962253","ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND","The cluster local node information was not found." +"000013B4","5044","-4294962252","ERROR_CLUSTER_NETWORK_EXISTS","The cluster network already exists." +"000013B5","5045","-4294962251","ERROR_CLUSTER_NETWORK_NOT_FOUND","The cluster network was not found." +"000013B6","5046","-4294962250","ERROR_CLUSTER_NETINTERFACE_EXISTS","The cluster network interface already exists." +"000013B7","5047","-4294962249","ERROR_CLUSTER_NETINTERFACE_NOT_FOUND","The cluster network interface was not found." +"000013B8","5048","-4294962248","ERROR_CLUSTER_INVALID_REQUEST","The cluster request is not valid for this object." +"000013B9","5049","-4294962247","ERROR_CLUSTER_INVALID_NETWORK_PROVIDER","The cluster network provider is not valid." +"000013BA","5050","-4294962246","ERROR_CLUSTER_NODE_DOWN","The cluster node is down." +"000013BB","5051","-4294962245","ERROR_CLUSTER_NODE_UNREACHABLE","The cluster node is not reachable." +"000013BC","5052","-4294962244","ERROR_CLUSTER_NODE_NOT_MEMBER","The cluster node is not a member of the cluster." +"000013BD","5053","-4294962243","ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS","A cluster join operation is not in progress." +"000013BE","5054","-4294962242","ERROR_CLUSTER_INVALID_NETWORK","The cluster network is not valid." +"000013C0","5056","-4294962240","ERROR_CLUSTER_NODE_UP","The cluster node is up." +"000013C1","5057","-4294962239","ERROR_CLUSTER_IPADDR_IN_USE","The cluster IP address is already in use." +"000013C2","5058","-4294962238","ERROR_CLUSTER_NODE_NOT_PAUSED","The cluster node is not paused." +"000013C3","5059","-4294962237","ERROR_CLUSTER_NO_SECURITY_CONTEXT","No cluster security context is available." +"000013C4","5060","-4294962236","ERROR_CLUSTER_NETWORK_NOT_INTERNAL","The cluster network is not configured for internal cluster communication." +"000013C5","5061","-4294962235","ERROR_CLUSTER_NODE_ALREADY_UP","The cluster node is already up." +"000013C6","5062","-4294962234","ERROR_CLUSTER_NODE_ALREADY_DOWN","The cluster node is already down." +"000013C7","5063","-4294962233","ERROR_CLUSTER_NETWORK_ALREADY_ONLINE","The cluster network is already online." +"000013C8","5064","-4294962232","ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE","The cluster network is already offline." +"000013C9","5065","-4294962231","ERROR_CLUSTER_NODE_ALREADY_MEMBER","The cluster node is already a member of the cluster." +"000013CA","5066","-4294962230","ERROR_CLUSTER_LAST_INTERNAL_NETWORK","The cluster network is the only one configured for internal cluster communication between two or more active cluster nodes. The internal communication capability cannot be removed from the network." +"000013CB","5067","-4294962229","ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS","One or more cluster resources depend on the network to provide service to clients. The client access capability cannot be removed from the network." +"000013CC","5068","-4294962228","ERROR_INVALID_OPERATION_ON_QUORUM","This operation cannot be performed on the cluster resource as it the quorum resource. You may not bring the quorum resource offline or modify its possible owners list." +"000013CD","5069","-4294962227","ERROR_DEPENDENCY_NOT_ALLOWED","The cluster quorum resource is not allowed to have any dependencies." +"000013CE","5070","-4294962226","ERROR_CLUSTER_NODE_PAUSED","The cluster node is paused." +"000013CF","5071","-4294962225","ERROR_NODE_CANT_HOST_RESOURCE","The cluster resource cannot be brought online. The owner node cannot run this resource." +"000013D0","5072","-4294962224","ERROR_CLUSTER_NODE_NOT_READY","The cluster node is not ready to perform the requested operation." +"000013D1","5073","-4294962223","ERROR_CLUSTER_NODE_SHUTTING_DOWN","The cluster node is shutting down." +"000013D2","5074","-4294962222","ERROR_CLUSTER_JOIN_ABORTED","The cluster join operation was aborted." +"000013D3","5075","-4294962221","ERROR_CLUSTER_INCOMPATIBLE_VERSIONS","The cluster join operation failed due to incompatible software versions between the joining node and its sponsor." +"000013D4","5076","-4294962220","ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED","This resource cannot be created because the cluster has reached the limit on the number of resources it can monitor." +"000013D5","5077","-4294962219","ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED","The system configuration changed during the cluster join or form operation. The join or form operation was aborted." +"000013D6","5078","-4294962218","ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND","The specified resource type was not found." +"000013D7","5079","-4294962217","ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED","The specified node does not support a resource of this type. This may be due to version inconsistencies or due to the absence of the resource DLL on this node." +"000013D8","5080","-4294962216","ERROR_CLUSTER_RESNAME_NOT_FOUND","The specified resource name is not supported by this resource DLL. This may be due to a bad" +"000013D9","5081","-4294962215","ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED","No authentication package could be registered with the RPC server." +"000013DA","5082","-4294962214","ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST","You cannot bring the group online because the owner of the group is not in the preferred list for the group. To change the owner node for the group - move the group." +"000013DB","5083","-4294962213","ERROR_CLUSTER_DATABASE_SEQMISMATCH","The join operation failed because the cluster database sequence number has changed or is incompatible with the locker node. This may happen during a join operation if the cluster database was changing during the join." +"000013DC","5084","-4294962212","ERROR_RESMON_INVALID_STATE","The resource monitor will not allow the fail operation to be performed while the resource is in its current state. This may happen if the resource is in a pending state." +"000013DD","5085","-4294962211","ERROR_CLUSTER_GUM_NOT_LOCKER","A non locker code got a request to reserve the lock for making global updates." +"000013DE","5086","-4294962210","ERROR_QUORUM_DISK_NOT_FOUND","The quorum disk could not be located by the cluster service." +"000013DF","5087","-4294962209","ERROR_DATABASE_BACKUP_CORRUPT","The backed up cluster database is possibly corrupt." +"000013E0","5088","-4294962208","ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT","A DFS root already exists in this cluster node." +"000013E1","5089","-4294962207","ERROR_RESOURCE_PROPERTY_UNCHANGEABLE","An attempt to modify a resource property failed because it conflicts with another existing property." +"00001449","-4294962103","5193","Error_Invalid_Showwin_Command","Cannot show or remove the window in the way specified" +"00001633","-4294961613","5683","NULL","" +"00001702","5890","-4294961406","ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE","An operation was attempted that is incompatible with the current membership state of the node." +"00001703","5891","-4294961405","ERROR_CLUSTER_QUORUMLOG_NOT_FOUND","The quorum resource does not contain the quorum log." +"00001704","5892","-4294961404","ERROR_CLUSTER_MEMBERSHIP_HALT","The membership engine requested shutdown of the cluster service on this node." +"00001705","5893","-4294961403","ERROR_CLUSTER_INSTANCE_ID_MISMATCH","The join operation failed because the cluster instance ID of the joining node does not match the cluster instance ID of the sponsor node." +"00001706","5894","-4294961402","ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP","A matching cluster network for the specified IP address could not be found." +"00001707","5895","-4294961401","ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH","The actual data type of the property did not match the expected data type of the property." +"00001708","5896","-4294961400","ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP","The cluster node was evicted from the cluster successfully - but the node was not cleaned up. To determine what cleanup steps failed and how to recover - see the Failover Clustering application event log using Event Viewer." +"00001709","5897","-4294961399","ERROR_CLUSTER_PARAMETER_MISMATCH","Two or more parameter values specified for a resource's properties are in conflict." +"0000170A","5898","-4294961398","ERROR_NODE_CANNOT_BE_CLUSTERED","This computer cannot be made a member of a cluster." +"0000170B","5899","-4294961397","ERROR_CLUSTER_WRONG_OS_VERSION","This computer cannot be made a member of a cluster because it does not have the correct version of Windows installed." +"0000170C","5900","-4294961396","ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME","A cluster cannot be created with the specified cluster name because that cluster name is already in use. Specify a different name for the cluster." +"0000170D","5901","-4294961395","ERROR_CLUSCFG_ALREADY_COMMITTED","The cluster configuration action has already been committed." +"0000170E","5902","-4294961394","ERROR_CLUSCFG_ROLLBACK_FAILED","The cluster configuration action could not be rolled back." +"0000170F","5903","-4294961393","ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT","The drive letter assigned to a system disk on one node conflicted with the drive letter assigned to a disk on another node." +"00001710","5904","-4294961392","ERROR_CLUSTER_OLD_VERSION","One or more nodes in the cluster are running a version of Windows that does not support this operation." +"00001711","5905","-4294961391","ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME","The name of the corresponding computer account doesn't match the Network Name for this resource." +"00001712","5906","-4294961390","ERROR_CLUSTER_NO_NET_ADAPTERS","No network adapters are available." +"00001713","5907","-4294961389","ERROR_CLUSTER_POISONED","The cluster node has been poisoned." +"00001714","5908","-4294961388","ERROR_CLUSTER_GROUP_MOVING","The group is unable to accept the request since it is moving to another node." +"00001715","5909","-4294961387","ERROR_CLUSTER_RESOURCE_TYPE_BUSY","The resource type cannot accept the request since is too busy performing another operation." +"00001716","5910","-4294961386","ERROR_RESOURCE_CALL_TIMED_OUT","The call to the cluster resource DLL timed out." +"00001717","5911","-4294961385","ERROR_INVALID_CLUSTER_IPV6_ADDRESS","The address is not valid for an IPv6 Address resource. A global IPv6 address is required - and it must match a cluster network. Compatibility addresses are not permitted." +"00001718","5912","-4294961384","ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION","An internal cluster error occurred. A call to an invalid function was attempted." +"00001719","5913","-4294961383","ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS","A parameter value is out of acceptable range." +"0000171A","5914","-4294961382","ERROR_CLUSTER_PARTIAL_SEND","A network error occurred while sending data to another node in the cluster. The number of bytes transmitted was less than required." +"0000171B","5915","-4294961381","ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION","An invalid cluster registry operation was attempted." +"0000171C","5916","-4294961380","ERROR_CLUSTER_INVALID_STRING_TERMINATION","An input string of characters is not properly terminated." +"0000171D","5917","-4294961379","ERROR_CLUSTER_INVALID_STRING_FORMAT","An input string of characters is not in a valid format for the data it represents." +"0000171E","5918","-4294961378","ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS","An internal cluster error occurred. A cluster database transaction was attempted while a transaction was already in progress." +"0000171F","5919","-4294961377","ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS","An internal cluster error occurred. There was an attempt to commit a cluster database transaction while no transaction was in progress." +"00001720","5920","-4294961376","ERROR_CLUSTER_NULL_DATA","An internal cluster error occurred. Data was not properly initialized." +"00001721","5921","-4294961375","ERROR_CLUSTER_PARTIAL_READ","An error occurred while reading from a stream of data. An unexpected number of bytes was returned." +"00001722","5922","-4294961374","ERROR_CLUSTER_PARTIAL_WRITE","An error occurred while writing to a stream of data. The required number of bytes could not be written." +"00001723","5923","-4294961373","ERROR_CLUSTER_CANT_DESERIALIZE_DATA","An error occurred while deserializing a stream of cluster data." +"00001724","5924","-4294961372","ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT","One or more property values for this resource are in conflict with one or more property values associated with its dependent resource(s)." +"00001725","5925","-4294961371","ERROR_CLUSTER_NO_QUORUM","A quorum of cluster nodes was not present to form a cluster." +"00001726","5926","-4294961370","ERROR_CLUSTER_INVALID_IPV6_NETWORK","The cluster network is not valid for an IPv6 Address resource - or it does not match the configured address." +"00001727","5927","-4294961369","ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK","The cluster network is not valid for an IPv6 Tunnel resource. Check the configuration of the IP Address resource on which the IPv6 Tunnel resource depends." +"00001728","5928","-4294961368","ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP","Quorum resource cannot reside in the Available Storage group." +"00001729","5929","-4294961367","ERROR_DEPENDENCY_TREE_TOO_COMPLEX","The dependencies for this resource are nested too deeply." +"0000172A","5930","-4294961366","ERROR_EXCEPTION_IN_RESOURCE_CALL","The call into the resource DLL raised an unhandled exception." +"0000172B","5931","-4294961365","ERROR_CLUSTER_RHS_FAILED_INITIALIZATION","The RHS process failed to initialize." +"0000172C","5932","-4294961364","ERROR_CLUSTER_NOT_INSTALLED","The Failover Clustering feature is not installed on this node." +"0000172D","5933","-4294961363","ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE","The resources must be online on the same node for this operation." +"0000172E","5934","-4294961362","ERROR_CLUSTER_MAX_NODES_IN_CLUSTER","A new node can not be added since this cluster is already at its maximum number of nodes." +"0000172F","5935","-4294961361","ERROR_CLUSTER_TOO_MANY_NODES","This cluster can not be created since the specified number of nodes exceeds the maximum allowed limit." +"00001730","5936","-4294961360","ERROR_CLUSTER_OBJECT_ALREADY_USED","An attempt to use the specified cluster name failed because an enabled computer object with the given name already exists in the domain." +"00001731","5937","-4294961359","ERROR_NONCORE_GROUPS_FOUND","This cluster cannot be destroyed. It has non-core application groups which must be deleted before the cluster can be destroyed." +"00001732","5938","-4294961358","ERROR_FILE_SHARE_RESOURCE_CONFLICT","File share associated with file share witness resource cannot be hosted by this cluster or any of its nodes." +"00001733","5939","-4294961357","ERROR_CLUSTER_EVICT_INVALID_REQUEST","Eviction of this node is invalid at this time. Due to quorum requirements node eviction will result in cluster shutdown. If it is the last node in the cluster - destroy cluster command should be used." +"00001734","5940","-4294961356","ERROR_CLUSTER_SINGLETON_RESOURCE","Only one instance of this resource type is allowed in the cluster." +"00001735","5941","-4294961355","ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE","Only one instance of this resource type is allowed per resource group." +"00001736","5942","-4294961354","ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED","The resource failed to come online due to the failure of one or more provider resources." +"00001737","5943","-4294961353","ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR","The resource has indicated that it cannot come online on any node." +"00001738","5944","-4294961352","ERROR_CLUSTER_GROUP_BUSY","The current operation cannot be performed on this group at this time." +"00001739","5945","-4294961351","ERROR_CLUSTER_NOT_SHARED_VOLUME","The directory or file is not located on a cluster shared volume." +"0000173A","5946","-4294961350","ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR","The Security Descriptor does not meet the requirements for a cluster." +"0000173B","5947","-4294961349","ERROR_CLUSTER_SHARED_VOLUMES_IN_USE","There is one or more shared volumes resources configured in the cluster. Those resources must be moved to available storage in order for operation to succeed." +"0000173C","5948","-4294961348","ERROR_CLUSTER_USE_SHARED_VOLUMES_API","This group or resource cannot be directly manipulated. Use shared volume APIs to perform desired operation." +"0000173D","5949","-4294961347","ERROR_CLUSTER_BACKUP_IN_PROGRESS","Back up is in progress. Please wait for backup completion before trying this operation again." +"0000173E","5950","-4294961346","ERROR_NON_CSV_PATH","The path does not belong to a cluster shared volume." +"0000173F","5951","-4294961345","ERROR_CSV_VOLUME_NOT_LOCAL","The cluster shared volume is not locally mounted on this node." +"00001740","5952","-4294961344","ERROR_CLUSTER_WATCHDOG_TERMINATING","The cluster watchdog is terminating." +"00001741","5953","-4294961343","ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES","A resource vetoed a move between two nodes because they are incompatible." +"00001742","5954","-4294961342","ERROR_CLUSTER_INVALID_NODE_WEIGHT","The request is invalid either because node weight cannot be changed while the cluster is in disk-only quorum mode - or because changing the node weight would violate the minimum cluster quorum requirements." +"00001743","5955","-4294961341","ERROR_CLUSTER_RESOURCE_VETOED_CALL","The resource vetoed the call." +"00001744","5956","-4294961340","ERROR_RESMON_SYSTEM_RESOURCES_LACKING","Resource could not start or run because it could not reserve sufficient system resources." +"00001745","5957","-4294961339","ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION","A resource vetoed a move between two nodes because the destination currently does not have enough resources to complete the operation." +"00001746","5958","-4294961338","ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE","A resource vetoed a move between two nodes because the source currently does not have enough resources to complete the operation." +"00001747","5959","-4294961337","ERROR_CLUSTER_GROUP_QUEUED","The requested operation can not be completed because the group is queued for an operation." +"00001748","5960","-4294961336","ERROR_CLUSTER_RESOURCE_LOCKED_STATUS","The requested operation can not be completed because a resource has locked status." +"00001749","5961","-4294961335","ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED","The resource cannot move to another node because a cluster shared volume vetoed the operation." +"0000174A","5962","-4294961334","ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS","A node drain is already in progress." +"0000174C","5964","-4294961332","ERROR_DISK_NOT_CSV_CAPABLE","The disk is not configured in a way to be used with CSV. CSV disks must have at least one partition that is formatted with NTFS." +"0000174D","5965","-4294961331","ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE","The resource must be part of the Available Storage group to complete this action." +"0000174E","5966","-4294961330","ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED","CSVFS failed operation as volume is in redirected mode." +"0000174F","5967","-4294961329","ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED","CSVFS failed operation as volume is not in redirected mode." +"00001750","5968","-4294961328","ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES","Cluster properties cannot be returned at this time." +"00001751","5969","-4294961327","ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES","The clustered disk resource contains software snapshot diff area that are not supported for Cluster Shared Volumes." +"00001752","5970","-4294961326","ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE","The operation cannot be completed because the resource is in maintenance mode." +"00001753","5971","-4294961325","ERROR_CLUSTER_AFFINITY_CONFLICT","The operation cannot be completed because of cluster affinity conflicts." +"00001754","5972","-4294961324","ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE","The operation cannot be completed because the resource is a replica virtual machine." +"00001770","6000","-4294961296","ERROR_ENCRYPTION_FAILED","The specified file could not be encrypted." +"00001771","6001","-4294961295","ERROR_DECRYPTION_FAILED","The specified file could not be decrypted." +"00001772","6002","-4294961294","ERROR_FILE_ENCRYPTED","The specified file is encrypted and the user does not have the ability to decrypt it." +"00001773","6003","-4294961293","ERROR_NO_RECOVERY_POLICY","There is no valid encryption recovery policy configured for this system." +"00001774","6004","-4294961292","ERROR_NO_EFS","The required encryption driver is not loaded for this system." +"00001775","6005","-4294961291","ERROR_WRONG_EFS","The file was encrypted with a different encryption driver than is currently loaded." +"00001776","6006","-4294961290","ERROR_NO_USER_KEYS","There are no EFS keys defined for the user." +"00001777","6007","-4294961289","ERROR_FILE_NOT_ENCRYPTED","The specified file is not encrypted." +"00001778","6008","-4294961288","ERROR_NOT_EXPORT_FORMAT","The specified file is not in the defined EFS export format." +"00001779","6009","-4294961287","ERROR_FILE_READ_ONLY","The specified file is read only." +"0000177A","6010","-4294961286","ERROR_DIR_EFS_DISALLOWED","The directory has been disabled for encryption." +"0000177B","6011","-4294961285","ERROR_EFS_SERVER_NOT_TRUSTED","The server is not trusted for remote encryption operation." +"0000177C","6012","-4294961284","ERROR_BAD_RECOVERY_POLICY","Recovery policy configured for this system contains invalid recovery certificate." +"0000177D","6013","-4294961283","ERROR_EFS_ALG_BLOB_TOO_BIG","The encryption algorithm used on the source file needs a bigger key buffer than the one on the destination file." +"0000177E","6014","-4294961282","ERROR_VOLUME_NOT_SUPPORT_EFS","The disk partition does not support file encryption." +"0000177F","6015","-4294961281","ERROR_EFS_DISABLED","This machine is disabled for file encryption." +"00001780","6016","-4294961280","ERROR_EFS_VERSION_NOT_SUPPORT","A newer system is required to decrypt this encrypted file." +"00001781","6017","-4294961279","ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE","The remote server sent an invalid response for a file being opened with Client Side Encryption." +"00001782","6018","-4294961278","ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER","Client Side Encryption is not supported by the remote server even though it claims to support it." +"00001783","6019","-4294961277","ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE","File is encrypted and should be opened in Client Side Encryption mode." +"00001784","6020","-4294961276","ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE","A new encrypted file is being created and a $EFS needs to be provided." +"00001785","6021","-4294961275","ERROR_CS_ENCRYPTION_FILE_NOT_CSE","The SMB client requested a CSE FSCTL on a non-CSE file." +"00001786","6022","-4294961274","ERROR_ENCRYPTION_POLICY_DENIES_OPERATION","The requested operation was blocked by policy. For more information -" +"000017C7","-4294961209","6087","NULL","" +"000017D2","-4294961198","6098","NULL","" +"000017E6","6118","-4294961178","ERROR_NO_BROWSER_SERVERS_FOUND","The list of servers for this workgroup is not currently available." +"00001838","6200","-4294961096","SCHED_E_SERVICE_NOT_LOCALSYSTEM","The Task Scheduler service must be configured to run in the System account to function properly. Individual tasks may be configured to run in other accounts." +"000018BE","-4294960962","6334","NULL","" +"000019C8","6600","-4294960696","ERROR_LOG_SECTOR_INVALID","Log service encountered an invalid log sector." +"000019C9","6601","-4294960695","ERROR_LOG_SECTOR_PARITY_INVALID","Log service encountered a log sector with invalid block parity." +"000019CA","6602","-4294960694","ERROR_LOG_SECTOR_REMAPPED","Log service encountered a remapped log sector." +"000019CB","6603","-4294960693","ERROR_LOG_BLOCK_INCOMPLETE","Log service encountered a partial or incomplete log block." +"000019CC","6604","-4294960692","ERROR_LOG_INVALID_RANGE","Log service encountered an attempt access data outside the active log range." +"000019CD","6605","-4294960691","ERROR_LOG_BLOCKS_EXHAUSTED","Log service user marshalling buffers are exhausted." +"000019CE","6606","-4294960690","ERROR_LOG_READ_CONTEXT_INVALID","Log service encountered an attempt read from a marshalling area with an invalid read context." +"000019CF","6607","-4294960689","ERROR_LOG_RESTART_INVALID","Log service encountered an invalid log restart area." +"000019D0","6608","-4294960688","ERROR_LOG_BLOCK_VERSION","Log service encountered an invalid log block version." +"000019D1","6609","-4294960687","ERROR_LOG_BLOCK_INVALID","Log service encountered an invalid log block." +"000019D2","6610","-4294960686","ERROR_LOG_READ_MODE_INVALID","Log service encountered an attempt to read the log with an invalid read mode." +"000019D3","6611","-4294960685","ERROR_LOG_NO_RESTART","Log service encountered a log stream with no restart area." +"000019D4","6612","-4294960684","ERROR_LOG_METADATA_CORRUPT","Log service encountered a corrupted metadata file." +"000019D5","6613","-4294960683","ERROR_LOG_METADATA_INVALID","Log service encountered a metadata file that could not be created by the log file system." +"000019D6","6614","-4294960682","ERROR_LOG_METADATA_INCONSISTENT","Log service encountered a metadata file with inconsistent data." +"000019D7","6615","-4294960681","ERROR_LOG_RESERVATION_INVALID","Log service encountered an attempt to erroneous allocate or dispose reservation space." +"000019D8","6616","-4294960680","ERROR_LOG_CANT_DELETE","Log service cannot delete log file or file system container." +"000019D9","6617","-4294960679","ERROR_LOG_CONTAINER_LIMIT_EXCEEDED","Log service has reached the maximum allowable containers allocated to a log file." +"000019DA","6618","-4294960678","ERROR_LOG_START_OF_LOG","Log service has attempted to read or write backward past the start of the log." +"000019DB","6619","-4294960677","ERROR_LOG_POLICY_ALREADY_INSTALLED","Log policy could not be installed because a policy of the same type is already present." +"000019DC","6620","-4294960676","ERROR_LOG_POLICY_NOT_INSTALLED","Log policy in question was not installed at the time of the request." +"000019DD","6621","-4294960675","ERROR_LOG_POLICY_INVALID","The installed set of policies on the log is invalid." +"000019DE","6622","-4294960674","ERROR_LOG_POLICY_CONFLICT","A policy on the log in question prevented the operation from completing." +"000019DF","6623","-4294960673","ERROR_LOG_PINNED_ARCHIVE_TAIL","Log space cannot be reclaimed because the log is pinned by the archive tail." +"000019E0","6624","-4294960672","ERROR_LOG_RECORD_NONEXISTENT","Log record is not a record in the log file." +"000019E1","6625","-4294960671","ERROR_LOG_RECORDS_RESERVED_INVALID","Number of reserved log records or the adjustment of the number of reserved log records is invalid." +"000019E2","6626","-4294960670","ERROR_LOG_SPACE_RESERVED_INVALID","Reserved log space or the adjustment of the log space is invalid." +"000019E3","6627","-4294960669","ERROR_LOG_TAIL_INVALID","An new or existing archive tail or base of the active log is invalid." +"000019E4","6628","-4294960668","ERROR_LOG_FULL","Log space is exhausted." +"000019E5","6629","-4294960667","ERROR_COULD_NOT_RESIZE_LOG","The log could not be set to the requested size." +"000019E6","6630","-4294960666","ERROR_LOG_MULTIPLEXED","Log is multiplexed - no direct writes to the physical log is allowed." +"000019E7","6631","-4294960665","ERROR_LOG_DEDICATED","The operation failed because the log is a dedicated log." +"000019E8","6632","-4294960664","ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS","The operation requires an archive context." +"000019E9","6633","-4294960663","ERROR_LOG_ARCHIVE_IN_PROGRESS","Log archival is in progress." +"000019EA","6634","-4294960662","ERROR_LOG_EPHEMERAL","The operation requires a non-ephemeral log - but the log is ephemeral." +"000019EB","6635","-4294960661","ERROR_LOG_NOT_ENOUGH_CONTAINERS","The log must have at least two containers before it can be read from or written to." +"000019EC","6636","-4294960660","ERROR_LOG_CLIENT_ALREADY_REGISTERED","A log client has already registered on the stream." +"000019ED","6637","-4294960659","ERROR_LOG_CLIENT_NOT_REGISTERED","A log client has not been registered on the stream." +"000019EE","6638","-4294960658","ERROR_LOG_FULL_HANDLER_IN_PROGRESS","A request has already been made to handle the log full condition." +"000019EF","6639","-4294960657","ERROR_LOG_CONTAINER_READ_FAILED","Log service encountered an error when attempting to read from a log container." +"000019F0","6640","-4294960656","ERROR_LOG_CONTAINER_WRITE_FAILED","Log service encountered an error when attempting to write to a log container." +"000019F1","6641","-4294960655","ERROR_LOG_CONTAINER_OPEN_FAILED","Log service encountered an error when attempting open a log container." +"000019F2","6642","-4294960654","ERROR_LOG_CONTAINER_STATE_INVALID","Log service encountered an invalid container state when attempting a requested action." +"000019F3","6643","-4294960653","ERROR_LOG_STATE_INVALID","Log service is not in the correct state to perform a requested action." +"000019F4","6644","-4294960652","ERROR_LOG_PINNED","Log space cannot be reclaimed because the log is pinned." +"000019F5","6645","-4294960651","ERROR_LOG_METADATA_FLUSH_FAILED","Log metadata flush failed." +"000019F6","6646","-4294960650","ERROR_LOG_INCONSISTENT_SECURITY","Security on the log and its containers is inconsistent." +"000019F7","6647","-4294960649","ERROR_LOG_APPENDED_FLUSH_FAILED","Records were appended to the log or reservation changes were made - but the log could not be flushed." +"000019F8","6648","-4294960648","ERROR_LOG_PINNED_RESERVATION","The log is pinned due to reservation consuming most of the log space. Free some reserved records to make space available." +"00001A2C","6700","-4294960596","ERROR_INVALID_TRANSACTION","The transaction handle associated with this operation is not valid." +"00001A2D","6701","-4294960595","ERROR_TRANSACTION_NOT_ACTIVE","The requested operation was made in the context of a transaction that is no longer active." +"00001A2E","6702","-4294960594","ERROR_TRANSACTION_REQUEST_NOT_VALID","The requested operation is not valid on the Transaction object in its current state." +"00001A2F","6703","-4294960593","ERROR_TRANSACTION_NOT_REQUESTED","The caller has called a response API - but the response is not expected because the TM did not issue the corresponding request to the caller." +"00001A30","6704","-4294960592","ERROR_TRANSACTION_ALREADY_ABORTED","It is too late to perform the requested operation - since the Transaction has already been aborted." +"00001A31","6705","-4294960591","ERROR_TRANSACTION_ALREADY_COMMITTED","It is too late to perform the requested operation - since the Transaction has already been committed." +"00001A32","6706","-4294960590","ERROR_TM_INITIALIZATION_FAILED","The Transaction Manager was unable to be successfully initialized. Transacted operations are not supported." +"00001A33","6707","-4294960589","ERROR_RESOURCEMANAGER_READ_ONLY","The specified ResourceManager made no changes or updates to the resource under this transaction." +"00001A34","6708","-4294960588","ERROR_TRANSACTION_NOT_JOINED","The resource manager has attempted to prepare a transaction that it has not successfully joined." +"00001A35","6709","-4294960587","ERROR_TRANSACTION_SUPERIOR_EXISTS","The Transaction object already has a superior enlistment - and the caller attempted an operation that would have created a new superior. Only a single superior enlistment is allow." +"00001A36","6710","-4294960586","ERROR_CRM_PROTOCOL_ALREADY_EXISTS","The RM tried to register a protocol that already exists." +"00001A37","6711","-4294960585","ERROR_TRANSACTION_PROPAGATION_FAILED","The attempt to propagate the Transaction failed." +"00001A38","6712","-4294960584","ERROR_CRM_PROTOCOL_NOT_FOUND","The requested propagation protocol was not registered as a CRM." +"00001A39","6713","-4294960583","ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER","The buffer passed in to PushTransaction or PullTransaction is not in a valid format." +"00001A3A","6714","-4294960582","ERROR_CURRENT_TRANSACTION_NOT_VALID","The current transaction context associated with the thread is not a valid handle to a transaction object." +"00001A3B","6715","-4294960581","ERROR_TRANSACTION_NOT_FOUND","The specified Transaction object could not be opened - because it was not found." +"00001A3C","6716","-4294960580","ERROR_RESOURCEMANAGER_NOT_FOUND","The specified ResourceManager object could not be opened - because it was not found." +"00001A3D","6717","-4294960579","ERROR_ENLISTMENT_NOT_FOUND","The specified Enlistment object could not be opened - because it was not found." +"00001A3E","6718","-4294960578","ERROR_TRANSACTIONMANAGER_NOT_FOUND","The specified TransactionManager object could not be opened - because it was not found." +"00001A3F","6719","-4294960577","ERROR_TRANSACTIONMANAGER_NOT_ONLINE","The object specified could not be created or opened - because its associated TransactionManager is not online. The TransactionManager must be brought fully Online by calling RecoverTransactionManager to recover to the end of its LogFile before objects in its Transaction or ResourceManager namespaces can be opened. In addition - errors in writing records to its LogFile can cause a TransactionManager to go offline." +"00001A40","6720","-4294960576","ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION","The specified TransactionManager was unable to create the objects contained in its logfile in the Ob namespace. Therefore - the TransactionManager was unable to recover." +"00001A41","6721","-4294960575","ERROR_TRANSACTION_NOT_ROOT","The call to create a superior Enlistment on this Transaction object could not be completed - because the Transaction object specified for the enlistment is a subordinate branch of the Transaction. Only the root of the Transaction can be enlisted on as a superior." +"00001A42","6722","-4294960574","ERROR_TRANSACTION_OBJECT_EXPIRED","Because the associated transaction manager or resource manager has been closed - the handle is no longer valid." +"00001A43","6723","-4294960573","ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED","The specified operation could not be performed on this Superior enlistment - because the enlistment was not created with the corresponding completion response in the NotificationMask." +"00001A44","6724","-4294960572","ERROR_TRANSACTION_RECORD_TOO_LONG","The specified operation could not be performed - because the record that would be logged was too long. This can occur because of two conditions: either there are too many Enlistments on this Transaction - or the combined RecoveryInformation being logged on behalf of those Enlistments is too long." +"00001A45","6725","-4294960571","ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED","Implicit transaction are not supported." +"00001A46","6726","-4294960570","ERROR_TRANSACTION_INTEGRITY_VIOLATED","The kernel transaction manager had to abort or forget the transaction because it blocked forward progress." +"00001A47","6727","-4294960569","ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH","The TransactionManager identity that was supplied did not match the one recorded in the TransactionManager's log file." +"00001A48","6728","-4294960568","ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT","This snapshot operation cannot continue because a transactional resource manager cannot be frozen in its current state. Please try again." +"00001A49","6729","-4294960567","ERROR_TRANSACTION_MUST_WRITETHROUGH","The transaction cannot be enlisted on with the specified EnlistmentMask - because the transaction has already completed the PrePrepare phase. In order to ensure correctness - the ResourceManager must switch to a write- through mode and cease caching data within this transaction. Enlisting for only subsequent transaction phases may still succeed." +"00001A4A","6730","-4294960566","ERROR_TRANSACTION_NO_SUPERIOR","The transaction does not have a superior enlistment." +"00001A4B","6731","-4294960565","ERROR_HEURISTIC_DAMAGE_POSSIBLE","The attempt to commit the Transaction completed - but it is possible that some portion of the transaction tree did not commit successfully due to heuristics. Therefore it is possible that some data modified in the transaction may not have committed - resulting in transactional inconsistency. If possible - check the consistency of the associated data." +"00001A90","6800","-4294960496","ERROR_TRANSACTIONAL_CONFLICT","The function attempted to use a name that is reserved for use by another transaction." +"00001A91","6801","-4294960495","ERROR_RM_NOT_ACTIVE","Transaction support within the specified resource manager is not started or was shut down due to an error." +"00001A92","6802","-4294960494","ERROR_RM_METADATA_CORRUPT","The metadata of the RM has been corrupted. The RM will not function." +"00001A93","6803","-4294960493","ERROR_DIRECTORY_NOT_RM","The specified directory does not contain a resource manager." +"00001A95","6805","-4294960491","ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE","The remote server or share does not support transacted file operations." +"00001A96","6806","-4294960490","ERROR_LOG_RESIZE_INVALID_SIZE","The requested log size is invalid." +"00001A97","6807","-4294960489","ERROR_OBJECT_NO_LONGER_EXISTS","The object" +"00001A98","6808","-4294960488","ERROR_STREAM_MINIVERSION_NOT_FOUND","The specified file miniversion was not found for this transacted file open." +"00001A99","6809","-4294960487","ERROR_STREAM_MINIVERSION_NOT_VALID","The specified file miniversion was found but has been invalidated. Most likely cause is a transaction savepoint rollback." +"00001A9A","6810","-4294960486","ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION","A miniversion may only be opened in the context of the transaction that created it." +"00001A9B","6811","-4294960485","ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT","It is not possible to open a miniversion with modify access." +"00001A9C","6812","-4294960484","ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS","It is not possible to create any more miniversions for this stream." +"00001A9E","6814","-4294960482","ERROR_REMOTE_FILE_VERSION_MISMATCH","The remote server sent mismatching version number or Fid for a file opened with transactions." +"00001A9F","6815","-4294960481","ERROR_HANDLE_NO_LONGER_VALID","The handle has been invalidated by a transaction. The most likely cause is the presence of memory mapping on a file or an open handle when the transaction ended or rolled back to savepoint." +"00001AA0","6816","-4294960480","ERROR_NO_TXF_METADATA","There is no transaction metadata on the file." +"00001AA1","6817","-4294960479","ERROR_LOG_CORRUPTION_DETECTED","The log data is corrupt." +"00001AA2","6818","-4294960478","ERROR_CANT_RECOVER_WITH_HANDLE_OPEN","The file can't be recovered because there is a handle still open on it." +"00001AA3","6819","-4294960477","ERROR_RM_DISCONNECTED","The transaction outcome is unavailable because the resource manager responsible for it has disconnected." +"00001AA4","6820","-4294960476","ERROR_ENLISTMENT_NOT_SUPERIOR","The request was rejected because the enlistment in question is not a superior enlistment." +"00001AA5","6821","-4294960475","ERROR_RECOVERY_NOT_NEEDED","The transactional resource manager is already consistent. Recovery is not needed." +"00001AA6","6822","-4294960474","ERROR_RM_ALREADY_STARTED","The transactional resource manager has already been started." +"00001AA7","6823","-4294960473","ERROR_FILE_IDENTITY_NOT_PERSISTENT","The file cannot be opened transactionally - because its identity depends on the outcome of an unresolved transaction." +"00001AA8","6824","-4294960472","ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY","The operation cannot be performed because another transaction is depending on the fact that this property will not change." +"00001AA9","6825","-4294960471","ERROR_CANT_CROSS_RM_BOUNDARY","The operation would involve a single file with two transactional resource managers and is therefore not allowed." +"00001AAA","6826","-4294960470","ERROR_TXF_DIR_NOT_EMPTY","The $Txf directory must be empty for this operation to succeed." +"00001AAB","6827","-4294960469","ERROR_INDOUBT_TRANSACTIONS_EXIST","The operation would leave a transactional resource manager in an inconsistent state and is therefore not allowed." +"00001AAC","6828","-4294960468","ERROR_TM_VOLATILE","The operation could not be completed because the transaction manager does not have a log." +"00001AAD","6829","-4294960467","ERROR_ROLLBACK_TIMER_EXPIRED","A rollback could not be scheduled because a previously scheduled rollback has already executed or been queued for execution." +"00001AAE","6830","-4294960466","ERROR_TXF_ATTRIBUTE_CORRUPT","The transactional metadata attribute on the file or directory is corrupt and unreadable." +"00001AAF","6831","-4294960465","ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION","The encryption operation could not be completed because a transaction is active." +"00001AB0","6832","-4294960464","ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED","This object is not allowed to be opened in a transaction." +"00001AB1","6833","-4294960463","ERROR_LOG_GROWTH_FAILED","An attempt to create space in the transactional resource manager's log failed. The failure status has been recorded in the event log." +"00001AB2","6834","-4294960462","ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE","Memory mapping" +"00001AB3","6835","-4294960461","ERROR_TXF_METADATA_ALREADY_PRESENT","Transaction metadata is already present on this file and cannot be superseded." +"00001AB4","6836","-4294960460","ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET","A transaction scope could not be entered because the scope handler has not been initialized." +"00001AB5","6837","-4294960459","ERROR_TRANSACTION_REQUIRED_PROMOTION","Promotion was required in order to allow the resource manager to enlist - but the transaction was set to disallow it." +"00001AB6","6838","-4294960458","ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION","This file is open for modification in an unresolved transaction and may be opened for execute only by a transacted reader." +"00001AB7","6839","-4294960457","ERROR_TRANSACTIONS_NOT_FROZEN","The request to thaw frozen transactions was ignored because transactions had not previously been frozen." +"00001AB8","6840","-4294960456","ERROR_TRANSACTION_FREEZE_IN_PROGRESS","Transactions cannot be frozen because a freeze is already in progress." +"00001AB9","6841","-4294960455","ERROR_NOT_SNAPSHOT_VOLUME","The target volume is not a snapshot volume. This operation is only valid on a volume mounted as a snapshot." +"00001ABA","6842","-4294960454","ERROR_NO_SAVEPOINT_WITH_OPEN_FILES","The savepoint operation failed because files are open on the transaction. This is not permitted." +"00001ABB","6843","-4294960453","ERROR_DATA_LOST_REPAIR","Windows has discovered corruption in a file - and that file has since been repaired. Data loss may have occurred." +"00001ABC","6844","-4294960452","ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION","The sparse operation could not be completed because a transaction is active on the file." +"00001ABD","6845","-4294960451","ERROR_TM_IDENTITY_MISMATCH","The call to create a TransactionManager object failed because the Tm Identity stored in the logfile does not match the Tm Identity that was passed in as an argument." +"00001ABE","6846","-4294960450","ERROR_FLOATED_SECTION","I/O was attempted on a section object that has been floated as a result of a transaction ending. There is no valid data." +"00001ABF","6847","-4294960449","ERROR_CANNOT_ACCEPT_TRANSACTED_WORK","The transactional resource manager cannot currently accept transacted work due to a transient condition such as low resources." +"00001AC0","6848","-4294960448","ERROR_CANNOT_ABORT_TRANSACTIONS","The transactional resource manager had too many tranactions outstanding that could not be aborted. The transactional resource manger has been shut down." +"00001AC1","6849","-4294960447","ERROR_BAD_CLUSTERS","The operation could not be completed due to bad clusters on disk." +"00001AC2","6850","-4294960446","ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION","The compression operation could not be completed because a transaction is active on the file." +"00001AC3","6851","-4294960445","ERROR_VOLUME_DIRTY","The operation could not be completed because the volume is dirty. Please run chkdsk and try again." +"00001AC4","6852","-4294960444","ERROR_NO_LINK_TRACKING_IN_TRANSACTION","The link tracking operation could not be completed because a transaction is active." +"00001AC5","6853","-4294960443","ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION","This operation cannot be performed in a transaction." +"00001AC6","6854","-4294960442","ERROR_EXPIRED_HANDLE","The handle is no longer properly associated with its transaction. It may have been opened in a transactional resource manager that was subsequently forced to restart. Please close the handle and open a new one." +"00001AC7","6855","-4294960441","ERROR_TRANSACTION_NOT_ENLISTED","The specified operation could not be performed because the resource manager is not enlisted in the transaction." +"00001AD4","-4294960428","6868","NULL","" +"00001ADA","-4294960422","6874","NULL","" +"00001B59","7001","-4294960295","ERROR_CTX_WINSTATION_NAME_INVALID","The specified session name is invalid." +"00001B5A","7002","-4294960294","ERROR_CTX_INVALID_PD","The specified protocol driver is invalid." +"00001B5B","7003","-4294960293","ERROR_CTX_PD_NOT_FOUND","The specified protocol driver was not found in the system path." +"00001B5C","7004","-4294960292","ERROR_CTX_WD_NOT_FOUND","The specified terminal connection driver was not found in the system path." +"00001B5D","7005","-4294960291","ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY","A registry key for event logging could not be created for this session." +"00001B5E","7006","-4294960290","ERROR_CTX_SERVICE_NAME_COLLISION","A service with the same name already exists on the system." +"00001B5F","7007","-4294960289","ERROR_CTX_CLOSE_PENDING","A close operation is pending on the session." +"00001B60","7008","-4294960288","ERROR_CTX_NO_OUTBUF","There are no free output buffers available." +"00001B61","7009","-4294960287","ERROR_CTX_MODEM_INF_NOT_FOUND","The MODEM.INF file was not found." +"00001B62","7010","-4294960286","ERROR_CTX_INVALID_MODEMNAME","The modem name was not found in MODEM.INF." +"00001B63","7011","-4294960285","ERROR_CTX_MODEM_RESPONSE_ERROR","The modem did not accept the command sent to it. Verify that the configured modem name matches the attached modem." +"00001B64","7012","-4294960284","ERROR_CTX_MODEM_RESPONSE_TIMEOUT","The modem did not respond to the command sent to it. Verify that the modem is properly cabled and powered on." +"00001B65","7013","-4294960283","ERROR_CTX_MODEM_RESPONSE_NO_CARRIER","Carrier detect has failed or carrier has been dropped due to disconnect." +"00001B66","7014","-4294960282","ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE","Dial tone not detected within the required time. Verify that the phone cable is properly attached and functional." +"00001B67","7015","-4294960281","ERROR_CTX_MODEM_RESPONSE_BUSY","Busy signal detected at remote site on callback." +"00001B68","7016","-4294960280","ERROR_CTX_MODEM_RESPONSE_VOICE","Voice detected at remote site on callback." +"00001B69","7017","-4294960279","ERROR_CTX_TD_ERROR","Transport driver error." +"00001B6E","7022","-4294960274","ERROR_CTX_WINSTATION_NOT_FOUND","The specified session cannot be found." +"00001B6F","7023","-4294960273","ERROR_CTX_WINSTATION_ALREADY_EXISTS","The specified session name is already in use." +"00001B70","7024","-4294960272","ERROR_CTX_WINSTATION_BUSY","The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log on." +"00001B71","7025","-4294960271","ERROR_CTX_BAD_VIDEO_MODE","An attempt has been made to connect to a session whose video mode is not supported by the current client." +"00001B7B","7035","-4294960261","ERROR_CTX_GRAPHICS_INVALID","The application attempted to enable DOS graphics mode. DOS graphics mode is not supported." +"00001B7D","7037","-4294960259","ERROR_CTX_LOGON_DISABLED","Your interactive logon privilege has been disabled. Please contact your administrator." +"00001B7E","7038","-4294960258","ERROR_CTX_NOT_CONSOLE","The requested operation can be performed only on the system console. This is most often the result of a driver or system DLL requiring direct console access." +"00001B80","7040","-4294960256","ERROR_CTX_CLIENT_QUERY_TIMEOUT","The client failed to respond to the server connect message." +"00001B81","7041","-4294960255","ERROR_CTX_CONSOLE_DISCONNECT","Disconnecting the console session is not supported." +"00001B82","7042","-4294960254","ERROR_CTX_CONSOLE_CONNECT","Reconnecting a disconnected session to the console is not supported." +"00001B84","7044","-4294960252","ERROR_CTX_SHADOW_DENIED","The request to control another session remotely was denied." +"00001B85","7045","-4294960251","ERROR_CTX_WINSTATION_ACCESS_DENIED","The requested session access is denied." +"00001B89","7049","-4294960247","ERROR_CTX_INVALID_WD","The specified terminal connection driver is invalid." +"00001B8A","7050","-4294960246","ERROR_CTX_SHADOW_INVALID","The requested session cannot be controlled remotely. This may be because the session is disconnected or does not currently have a user logged on." +"00001B8B","7051","-4294960245","ERROR_CTX_SHADOW_DISABLED","The requested session is not configured to allow remote control." +"00001B8C","7052","-4294960244","ERROR_CTX_CLIENT_LICENSE_IN_USE","Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number is currently being used by another user. Please call your system administrator to obtain a unique license number." +"00001B8D","7053","-4294960243","ERROR_CTX_CLIENT_LICENSE_NOT_SET","Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number has not been entered for this copy of the Terminal Server client. Please" +"00001B8E","7054","-4294960242","ERROR_CTX_LICENSE_NOT_AVAILABLE","The number of connections to this computer is limited and all connections are in use right now. Try connecting later or" +"00001B8F","7055","-4294960241","ERROR_CTX_LICENSE_CLIENT_INVALID","The client you are using is not licensed to use this system. Your logon request is denied." +"00001B90","7056","-4294960240","ERROR_CTX_LICENSE_EXPIRED","The system license has expired. Your logon request is denied." +"00001B91","7057","-4294960239","ERROR_CTX_SHADOW_NOT_RUNNING","Remote control could not be terminated because the specified session is not currently being remotely controlled." +"00001B92","7058","-4294960238","ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE","The remote control of the console was terminated because the display mode was changed. Changing the display mode in a remote control session is not supported." +"00001B93","7059","-4294960237","ERROR_ACTIVATION_COUNT_EXCEEDED","Activation has already been reset the maximum number of times for this installation. Your activation timer will not be cleared." +"00001B94","7060","-4294960236","ERROR_CTX_WINSTATIONS_DISABLED","Remote logins are currently disabled." +"00001B95","7061","-4294960235","ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED","You do not have the proper encryption level to access this Session." +"00001B96","7062","-4294960234","ERROR_CTX_SESSION_IN_USE","The user %s\\%s is currently logged on to this computer. Only the current user or an administrator can log on to this computer." +"00001B97","7063","-4294960233","ERROR_CTX_NO_FORCE_LOGOFF","The user %s\\%s is already logged on to the console of this computer. You do not have permission to log in at this time. To resolve this issue - contact %s\\%s and have them log off." +"00001B98","7064","-4294960232","ERROR_CTX_ACCOUNT_RESTRICTION","Unable to log you on because of an account restriction." +"00001B99","7065","-4294960231","ERROR_RDP_PROTOCOL_ERROR","The RDP protocol component %2 detected an error in the protocol stream and has disconnected the client." +"00001B9A","7066","-4294960230","ERROR_CTX_CDM_CONNECT","The Client Drive Mapping Service Has Connected on Terminal Connection." +"00001B9B","7067","-4294960229","ERROR_CTX_CDM_DISCONNECT","The Client Drive Mapping Service Has Disconnected on Terminal Connection." +"00001B9C","7068","-4294960228","ERROR_CTX_SECURITY_LAYER_ERROR","The Terminal Server security layer detected an error in the protocol stream and has disconnected the client." +"00001B9D","7069","-4294960227","ERROR_TS_INCOMPATIBLE_SESSIONS","The target session is incompatible with the current session." +"00001B9E","7070","-4294960226","ERROR_TS_VIDEO_SUBSYSTEM_ERROR","Windows can't connect to your session because a problem occurred in the Windows video subsystem. Try connecting again later - or contact the server administrator for assistance." +"00001C70","-4294960016","7280","NULL","" +"00001CE8","-4294959896","7400","NULL","" +"00001D7A","-4294959750","7546","NULL","" +"00001F1D","-4294959331","7965","NULL","" +"00001F41","8001","-4294959295","FRS_ERR_INVALID_API_SEQUENCE","The file replication service API was called incorrectly." +"00001F42","8002","-4294959294","FRS_ERR_STARTING_SERVICE","The file replication service cannot be started." +"00001F43","8003","-4294959293","FRS_ERR_STOPPING_SERVICE","The file replication service cannot be stopped." +"00001F44","8004","-4294959292","FRS_ERR_INTERNAL_API","The file replication service API terminated the request. The event log may have more information." +"00001F45","8005","-4294959291","FRS_ERR_INTERNAL","The file replication service terminated the request. The event log may have more information." +"00001F46","8006","-4294959290","FRS_ERR_SERVICE_COMM","The file replication service cannot be contacted. The event log may have more information." +"00001F47","8007","-4294959289","FRS_ERR_INSUFFICIENT_PRIV","The file replication service cannot satisfy the request because the user has insufficient privileges. The event log may have more information." +"00001F48","8008","-4294959288","FRS_ERR_AUTHENTICATION","The file replication service cannot satisfy the request because authenticated RPC is not available. The event log may have more information." +"00001F49","8009","-4294959287","FRS_ERR_PARENT_INSUFFICIENT_PRIV","The file replication service cannot satisfy the request because the user has insufficient privileges on the domain controller. The event log may have more information." +"00001F4A","8010","-4294959286","FRS_ERR_PARENT_AUTHENTICATION","The file replication service cannot satisfy the request because authenticated RPC is not available on the domain controller. The event log may have more information." +"00001F4B","8011","-4294959285","FRS_ERR_CHILD_TO_PARENT_COMM","The file replication service cannot communicate with the file replication service on the domain controller. The event log may have more information." +"00001F4C","8012","-4294959284","FRS_ERR_PARENT_TO_CHILD_COMM","The file replication service on the domain controller cannot communicate with the file replication service on this computer. The event log may have more information." +"00001F4D","8013","-4294959283","FRS_ERR_SYSVOL_POPULATE","The file replication service cannot populate the system volume because of an internal error. The event log may have more information." +"00001F4E","8014","-4294959282","FRS_ERR_SYSVOL_POPULATE_TIMEOUT","The file replication service cannot populate the system volume because of an internal timeout. The event log may have more information." +"00001F4F","8015","-4294959281","FRS_ERR_SYSVOL_IS_BUSY","The file replication service cannot process the request. The system volume is busy with a previous request." +"00001F50","8016","-4294959280","FRS_ERR_SYSVOL_DEMOTE","The file replication service cannot stop replicating the system volume because of an internal error. The event log may have more information." +"00001F51","8017","-4294959279","FRS_ERR_INVALID_SERVICE_PARAMETER","The file replication service detected an invalid parameter." +"00001F59","-4294959271","8025","NULL","" +"00002008","8200","-4294959096","ERROR_DS_NOT_INSTALLED","An error occurred while installing the directory service. For more information - see the event log." +"00002009","8201","-4294959095","ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY","The directory service evaluated group memberships locally." +"0000200A","8202","-4294959094","ERROR_DS_NO_ATTRIBUTE_OR_VALUE","The specified directory service attribute or value does not exist." +"0000200B","8203","-4294959093","ERROR_DS_INVALID_ATTRIBUTE_SYNTAX","The attribute syntax specified to the directory service is invalid." +"0000200C","8204","-4294959092","ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED","The attribute type specified to the directory service is not defined." +"0000200D","8205","-4294959091","ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS","The specified directory service attribute or value already exists." +"0000200E","8206","-4294959090","ERROR_DS_BUSY","The directory service is busy." +"0000200F","8207","-4294959089","ERROR_DS_UNAVAILABLE","The directory service is unavailable." +"00002010","8208","-4294959088","ERROR_DS_NO_RIDS_ALLOCATED","The directory service was unable to allocate a relative identifier." +"00002011","8209","-4294959087","ERROR_DS_NO_MORE_RIDS","The directory service has exhausted the pool of relative identifiers." +"00002012","8210","-4294959086","ERROR_DS_INCORRECT_ROLE_OWNER","The requested operation could not be performed because the directory service is not the master for that type of operation." +"00002013","8211","-4294959085","ERROR_DS_RIDMGR_INIT_ERROR","The directory service was unable to initialize the subsystem that allocates relative identifiers." +"00002014","8212","-4294959084","ERROR_DS_OBJ_CLASS_VIOLATION","The requested operation did not satisfy one or more constraints associated with the class of the object." +"00002015","8213","-4294959083","ERROR_DS_CANT_ON_NON_LEAF","The directory service can perform the requested operation only on a leaf object." +"00002016","8214","-4294959082","ERROR_DS_CANT_ON_RDN","The directory service cannot perform the requested operation on the RDN attribute of an object." +"00002017","8215","-4294959081","ERROR_DS_CANT_MOD_OBJ_CLASS","The directory service detected an attempt to modify the object class of an object." +"00002018","8216","-4294959080","ERROR_DS_CROSS_DOM_MOVE_ERROR","The requested cross-domain move operation could not be performed." +"00002019","8217","-4294959079","ERROR_DS_GC_NOT_AVAILABLE","Unable to contact the global catalog server." +"0000201A","8218","-4294959078","ERROR_SHARED_POLICY","The policy object is shared and can only be modified at the root." +"0000201B","8219","-4294959077","ERROR_POLICY_OBJECT_NOT_FOUND","The policy object does not exist." +"0000201C","8220","-4294959076","ERROR_POLICY_ONLY_IN_DS","The requested policy information is only in the directory service." +"0000201D","8221","-4294959075","ERROR_PROMOTION_ACTIVE","A domain controller promotion is currently active." +"0000201E","8222","-4294959074","ERROR_NO_PROMOTION_ACTIVE","A domain controller promotion is not currently active." +"00002020","8224","-4294959072","ERROR_DS_OPERATIONS_ERROR","An operations error occurred." +"00002021","8225","-4294959071","ERROR_DS_PROTOCOL_ERROR","A protocol error occurred." +"00002022","8226","-4294959070","ERROR_DS_TIMELIMIT_EXCEEDED","The time limit for this request was exceeded." +"00002023","8227","-4294959069","ERROR_DS_SIZELIMIT_EXCEEDED","The size limit for this request was exceeded." +"00002024","8228","-4294959068","ERROR_DS_ADMIN_LIMIT_EXCEEDED","The administrative limit for this request was exceeded." +"00002025","8229","-4294959067","ERROR_DS_COMPARE_FALSE","The compare response was false." +"00002026","8230","-4294959066","ERROR_DS_COMPARE_TRUE","The compare response was true." +"00002027","8231","-4294959065","ERROR_DS_AUTH_METHOD_NOT_SUPPORTED","The requested authentication method is not supported by the server." +"00002028","8232","-4294959064","ERROR_DS_STRONG_AUTH_REQUIRED","A more secure authentication method is required for this server." +"00002029","8233","-4294959063","ERROR_DS_INAPPROPRIATE_AUTH","Inappropriate authentication." +"0000202A","8234","-4294959062","ERROR_DS_AUTH_UNKNOWN","The authentication mechanism is unknown." +"0000202B","8235","-4294959061","ERROR_DS_REFERRAL","A referral was returned from the server." +"0000202C","8236","-4294959060","ERROR_DS_UNAVAILABLE_CRIT_EXTENSION","The server does not support the requested critical extension." +"0000202D","8237","-4294959059","ERROR_DS_CONFIDENTIALITY_REQUIRED","This request requires a secure connection." +"0000202E","8238","-4294959058","ERROR_DS_INAPPROPRIATE_MATCHING","Inappropriate matching." +"0000202F","8239","-4294959057","ERROR_DS_CONSTRAINT_VIOLATION","A constraint violation occurred." +"00002030","8240","-4294959056","ERROR_DS_NO_SUCH_OBJECT","There is no such object on the server." +"00002031","8241","-4294959055","ERROR_DS_ALIAS_PROBLEM","There is an alias problem." +"00002032","8242","-4294959054","ERROR_DS_INVALID_DN_SYNTAX","An invalid dn syntax has been specified." +"00002033","8243","-4294959053","ERROR_DS_IS_LEAF","The object is a leaf object." +"00002034","8244","-4294959052","ERROR_DS_ALIAS_DEREF_PROBLEM","There is an alias dereferencing problem." +"00002035","8245","-4294959051","ERROR_DS_UNWILLING_TO_PERFORM","The server is unwilling to process the request." +"00002036","8246","-4294959050","ERROR_DS_LOOP_DETECT","A loop has been detected." +"00002037","8247","-4294959049","ERROR_DS_NAMING_VIOLATION","There is a naming violation." +"00002038","8248","-4294959048","ERROR_DS_OBJECT_RESULTS_TOO_LARGE","The result set is too large." +"00002039","8249","-4294959047","ERROR_DS_AFFECTS_MULTIPLE_DSAS","The operation affects multiple DSAs." +"0000203A","8250","-4294959046","ERROR_DS_SERVER_DOWN","The server is not operational." +"0000203B","8251","-4294959045","ERROR_DS_LOCAL_ERROR","A local error has occurred." +"0000203C","8252","-4294959044","ERROR_DS_ENCODING_ERROR","An encoding error has occurred." +"0000203D","8253","-4294959043","ERROR_DS_DECODING_ERROR","A decoding error has occurred." +"0000203E","8254","-4294959042","ERROR_DS_FILTER_UNKNOWN","The search filter cannot be recognized." +"0000203F","8255","-4294959041","ERROR_DS_PARAM_ERROR","One or more parameters are illegal." +"00002040","8256","-4294959040","ERROR_DS_NOT_SUPPORTED","The specified method is not supported." +"00002041","8257","-4294959039","ERROR_DS_NO_RESULTS_RETURNED","No results were returned." +"00002042","8258","-4294959038","ERROR_DS_CONTROL_NOT_FOUND","The specified control is not supported by the server." +"00002043","8259","-4294959037","ERROR_DS_CLIENT_LOOP","A referral loop was detected by the client." +"00002044","8260","-4294959036","ERROR_DS_REFERRAL_LIMIT_EXCEEDED","The preset referral limit was exceeded." +"00002045","8261","-4294959035","ERROR_DS_SORT_CONTROL_MISSING","The search requires a SORT control." +"00002046","8262","-4294959034","ERROR_DS_OFFSET_RANGE_ERROR","The search results exceed the offset range specified." +"00002047","8263","-4294959033","ERROR_DS_RIDMGR_DISABLED","The directory service detected the subsystem that allocates relative identifiers is disabled. This can occur as a protective mechanism when the system determines a significant portion of relative identifiers" +"0000206D","8301","-4294958995","ERROR_DS_ROOT_MUST_BE_NC","The root object must be the head of a naming context. The root object cannot have an instantiated parent." +"0000206E","8302","-4294958994","ERROR_DS_ADD_REPLICA_INHIBITED","The add replica operation cannot be performed. The naming context must be writeable in order to create the replica." +"0000206F","8303","-4294958993","ERROR_DS_ATT_NOT_DEF_IN_SCHEMA","A reference to an attribute that is not defined in the schema occurred." +"00002070","8304","-4294958992","ERROR_DS_MAX_OBJ_SIZE_EXCEEDED","The maximum size of an object has been exceeded." +"00002071","8305","-4294958991","ERROR_DS_OBJ_STRING_NAME_EXISTS","An attempt was made to add an object to the directory with a name that is already in use." +"00002072","8306","-4294958990","ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA","An attempt was made to add an object of a class that does not have an RDN defined in the schema." +"00002073","8307","-4294958989","ERROR_DS_RDN_DOESNT_MATCH_SCHEMA","An attempt was made to add an object using an RDN that is not the RDN defined in the schema." +"00002074","8308","-4294958988","ERROR_DS_NO_REQUESTED_ATTS_FOUND","None of the requested attributes were found on the objects." +"00002075","8309","-4294958987","ERROR_DS_USER_BUFFER_TO_SMALL","The user buffer is too small." +"00002076","8310","-4294958986","ERROR_DS_ATT_IS_NOT_ON_OBJ","The attribute specified in the operation is not present on the object." +"00002077","8311","-4294958985","ERROR_DS_ILLEGAL_MOD_OPERATION","Illegal modify operation. Some aspect of the modification is not permitted." +"00002078","8312","-4294958984","ERROR_DS_OBJ_TOO_LARGE","The specified object is too large." +"00002079","8313","-4294958983","ERROR_DS_BAD_INSTANCE_TYPE","The specified instance type is not valid." +"0000207A","8314","-4294958982","ERROR_DS_MASTERDSA_REQUIRED","The operation must be performed at a master DSA." +"0000207B","8315","-4294958981","ERROR_DS_OBJECT_CLASS_REQUIRED","The object class attribute must be specified." +"0000207C","8316","-4294958980","ERROR_DS_MISSING_REQUIRED_ATT","A required attribute is missing." +"0000207D","8317","-4294958979","ERROR_DS_ATT_NOT_DEF_FOR_CLASS","An attempt was made to modify an object to include an attribute that is not legal for its class." +"0000207E","8318","-4294958978","ERROR_DS_ATT_ALREADY_EXISTS","The specified attribute is already present on the object." +"00002080","8320","-4294958976","ERROR_DS_CANT_ADD_ATT_VALUES","The specified attribute is not present - or has no values." +"00002081","8321","-4294958975","ERROR_DS_SINGLE_VALUE_CONSTRAINT","Multiple values were specified for an attribute that can have only one value." +"00002082","8322","-4294958974","ERROR_DS_RANGE_CONSTRAINT","A value for the attribute was not in the acceptable range of values." +"00002083","8323","-4294958973","ERROR_DS_ATT_VAL_ALREADY_EXISTS","The specified value already exists." +"00002084","8324","-4294958972","ERROR_DS_CANT_REM_MISSING_ATT","The attribute cannot be removed because it is not present on the object." +"00002085","8325","-4294958971","ERROR_DS_CANT_REM_MISSING_ATT_VAL","The attribute value cannot be removed because it is not present on the object." +"00002086","8326","-4294958970","ERROR_DS_ROOT_CANT_BE_SUBREF","The specified root object cannot be a subref." +"00002087","8327","-4294958969","ERROR_DS_NO_CHAINING","Chaining is not permitted." +"00002088","8328","-4294958968","ERROR_DS_NO_CHAINED_EVAL","Chained evaluation is not permitted." +"00002089","8329","-4294958967","ERROR_DS_NO_PARENT_OBJECT","The operation could not be performed because the object's parent is either uninstantiated or deleted." +"0000208A","8330","-4294958966","ERROR_DS_PARENT_IS_AN_ALIAS","Having a parent that is an alias is not permitted. Aliases are leaf objects." +"0000208B","8331","-4294958965","ERROR_DS_CANT_MIX_MASTER_AND_REPS","The object and parent must be of the same type - either both masters or both replicas." +"0000208C","8332","-4294958964","ERROR_DS_CHILDREN_EXIST","The operation cannot be performed because child objects exist. This operation can only be performed on a leaf object." +"0000208D","8333","-4294958963","ERROR_DS_OBJ_NOT_FOUND","Directory object not found." +"0000208E","8334","-4294958962","ERROR_DS_ALIASED_OBJ_MISSING","The aliased object is missing." +"0000208F","8335","-4294958961","ERROR_DS_BAD_NAME_SYNTAX","The object name has bad syntax." +"00002090","8336","-4294958960","ERROR_DS_ALIAS_POINTS_TO_ALIAS","It is not permitted for an alias to refer to another alias." +"00002091","8337","-4294958959","ERROR_DS_CANT_DEREF_ALIAS","The alias cannot be dereferenced." +"00002092","8338","-4294958958","ERROR_DS_OUT_OF_SCOPE","The operation is out of scope." +"00002093","8339","-4294958957","ERROR_DS_OBJECT_BEING_REMOVED","The operation cannot continue because the object is in the process of being removed." +"00002094","8340","-4294958956","ERROR_DS_CANT_DELETE_DSA_OBJ","The DSA object cannot be deleted." +"00002095","8341","-4294958955","ERROR_DS_GENERIC_ERROR","A directory service error has occurred." +"00002096","8342","-4294958954","ERROR_DS_DSA_MUST_BE_INT_MASTER","The operation can only be performed on an internal master DSA object." +"00002097","8343","-4294958953","ERROR_DS_CLASS_NOT_DSA","The object must be of class DSA." +"00002098","8344","-4294958952","ERROR_DS_INSUFF_ACCESS_RIGHTS","Insufficient access rights to perform the operation." +"00002099","8345","-4294958951","ERROR_DS_ILLEGAL_SUPERIOR","The object cannot be added because the parent is not on the list of possible superiors." +"0000209A","8346","-4294958950","ERROR_DS_ATTRIBUTE_OWNED_BY_SAM","Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager" +"0000209B","8347","-4294958949","ERROR_DS_NAME_TOO_MANY_PARTS","The name has too many parts." +"0000209C","8348","-4294958948","ERROR_DS_NAME_TOO_LONG","The name is too long." +"0000209D","8349","-4294958947","ERROR_DS_NAME_VALUE_TOO_LONG","The name value is too long." +"0000209E","8350","-4294958946","ERROR_DS_NAME_UNPARSEABLE","The directory service encountered an error parsing a name." +"0000209F","8351","-4294958945","ERROR_DS_NAME_TYPE_UNKNOWN","The directory service cannot get the attribute type for a name." +"000020A0","8352","-4294958944","ERROR_DS_NOT_AN_OBJECT","The name does not identify an object; the name identifies a phantom." +"000020A1","8353","-4294958943","ERROR_DS_SEC_DESC_TOO_SHORT","The security descriptor is too short." +"000020A2","8354","-4294958942","ERROR_DS_SEC_DESC_INVALID","The security descriptor is invalid." +"000020A3","8355","-4294958941","ERROR_DS_NO_DELETED_NAME","Failed to create name for deleted object." +"000020A4","8356","-4294958940","ERROR_DS_SUBREF_MUST_HAVE_PARENT","The parent of a new subref must exist." +"000020A5","8357","-4294958939","ERROR_DS_NCNAME_MUST_BE_NC","The object must be a naming context." +"000020A6","8358","-4294958938","ERROR_DS_CANT_ADD_SYSTEM_ONLY","It is not permitted to add an attribute which is owned by the system." +"000020A7","8359","-4294958937","ERROR_DS_CLASS_MUST_BE_CONCRETE","The class of the object must be structural; you cannot instantiate an abstract class." +"000020A8","8360","-4294958936","ERROR_DS_INVALID_DMD","The schema object could not be found." +"000020A9","8361","-4294958935","ERROR_DS_OBJ_GUID_EXISTS","A local object with this GUID" +"000020AA","8362","-4294958934","ERROR_DS_NOT_ON_BACKLINK","The operation cannot be performed on a back link." +"000020AB","8363","-4294958933","ERROR_DS_NO_CROSSREF_FOR_NC","The cross reference for the specified naming context could not be found." +"000020AC","8364","-4294958932","ERROR_DS_SHUTTING_DOWN","The operation could not be performed because the directory service is shutting down." +"000020AD","8365","-4294958931","ERROR_DS_UNKNOWN_OPERATION","The directory service request is invalid." +"000020AE","8366","-4294958930","ERROR_DS_INVALID_ROLE_OWNER","The role owner attribute could not be read." +"000020AF","8367","-4294958929","ERROR_DS_COULDNT_CONTACT_FSMO","The requested FSMO operation failed. The current FSMO holder could not be contacted." +"000020B0","8368","-4294958928","ERROR_DS_CROSS_NC_DN_RENAME","Modification of a DN across a naming context is not permitted." +"000020B1","8369","-4294958927","ERROR_DS_CANT_MOD_SYSTEM_ONLY","The attribute cannot be modified because it is owned by the system." +"000020B2","8370","-4294958926","ERROR_DS_REPLICATOR_ONLY","Only the replicator can perform this function." +"000020B3","8371","-4294958925","ERROR_DS_OBJ_CLASS_NOT_DEFINED","The specified class is not defined." +"000020B4","8372","-4294958924","ERROR_DS_OBJ_CLASS_NOT_SUBCLASS","The specified class is not a subclass." +"000020B5","8373","-4294958923","ERROR_DS_NAME_REFERENCE_INVALID","The name reference is invalid." +"000020B6","8374","-4294958922","ERROR_DS_CROSS_REF_EXISTS","A cross reference already exists." +"000020B7","8375","-4294958921","ERROR_DS_CANT_DEL_MASTER_CROSSREF","It is not permitted to delete a master cross reference." +"000020B8","8376","-4294958920","ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD","Subtree notifications are only supported on NC heads." +"000020B9","8377","-4294958919","ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX","Notification filter is too complex." +"000020BA","8378","-4294958918","ERROR_DS_DUP_RDN","Schema update failed: duplicate RDN." +"000020BB","8379","-4294958917","ERROR_DS_DUP_OID","Schema update failed: duplicate OID." +"000020BC","8380","-4294958916","ERROR_DS_DUP_MAPI_ID","Schema update failed: duplicate MAPI identifier." +"000020BD","8381","-4294958915","ERROR_DS_DUP_SCHEMA_ID_GUID","Schema update failed: duplicate schema-id GUID." +"000020BE","8382","-4294958914","ERROR_DS_DUP_LDAP_DISPLAY_NAME","Schema update failed: duplicate LDAP display name." +"000020BF","8383","-4294958913","ERROR_DS_SEMANTIC_ATT_TEST","Schema update failed: range-lower less than range upper." +"000020C0","8384","-4294958912","ERROR_DS_SYNTAX_MISMATCH","Schema update failed: syntax mismatch." +"000020C1","8385","-4294958911","ERROR_DS_EXISTS_IN_MUST_HAVE","Schema deletion failed: attribute is used in must-contain." +"000020C2","8386","-4294958910","ERROR_DS_EXISTS_IN_MAY_HAVE","Schema deletion failed: attribute is used in may-contain." +"000020C3","8387","-4294958909","ERROR_DS_NONEXISTENT_MAY_HAVE","Schema update failed: attribute in may-contain does not exist." +"000020C4","8388","-4294958908","ERROR_DS_NONEXISTENT_MUST_HAVE","Schema update failed: attribute in must-contain does not exist." +"000020C5","8389","-4294958907","ERROR_DS_AUX_CLS_TEST_FAIL","Schema update failed: class in aux-class list does not exist or is not an auxiliary class." +"000020C6","8390","-4294958906","ERROR_DS_NONEXISTENT_POSS_SUP","Schema update failed: class in poss-superiors does not exist." +"000020C7","8391","-4294958905","ERROR_DS_SUB_CLS_TEST_FAIL","Schema update failed: class in subclassof list does not exist or does not satisfy hierarchy rules." +"000020C8","8392","-4294958904","ERROR_DS_BAD_RDN_ATT_ID_SYNTAX","Schema update failed: Rdn-Att-Id has wrong syntax." +"000020C9","8393","-4294958903","ERROR_DS_EXISTS_IN_AUX_CLS","Schema deletion failed: class is used as auxiliary class." +"000020CA","8394","-4294958902","ERROR_DS_EXISTS_IN_SUB_CLS","Schema deletion failed: class is used as sub class." +"000020CB","8395","-4294958901","ERROR_DS_EXISTS_IN_POSS_SUP","Schema deletion failed: class is used as poss superior." +"000020CC","8396","-4294958900","ERROR_DS_RECALCSCHEMA_FAILED","Schema update failed in recalculating validation cache." +"000020CD","8397","-4294958899","ERROR_DS_TREE_DELETE_NOT_FINISHED","The tree deletion is not finished. The request must be made again to continue deleting the tree." +"000020CE","8398","-4294958898","ERROR_DS_CANT_DELETE","The requested delete operation could not be performed." +"000020CF","8399","-4294958897","ERROR_DS_ATT_SCHEMA_REQ_ID","Cannot read the governs class identifier for the schema record." +"000020D0","8400","-4294958896","ERROR_DS_BAD_ATT_SCHEMA_SYNTAX","The attribute schema has bad syntax." +"000020D1","8401","-4294958895","ERROR_DS_CANT_CACHE_ATT","The attribute could not be cached." +"000020D2","8402","-4294958894","ERROR_DS_CANT_CACHE_CLASS","The class could not be cached." +"000020D3","8403","-4294958893","ERROR_DS_CANT_REMOVE_ATT_CACHE","The attribute could not be removed from the cache." +"000020D4","8404","-4294958892","ERROR_DS_CANT_REMOVE_CLASS_CACHE","The class could not be removed from the cache." +"000020D5","8405","-4294958891","ERROR_DS_CANT_RETRIEVE_DN","The distinguished name attribute could not be read." +"000020D6","8406","-4294958890","ERROR_DS_MISSING_SUPREF","No superior reference has been configured for the directory service. The directory service is therefore unable to issue referrals to objects outside this forest." +"000020D7","8407","-4294958889","ERROR_DS_CANT_RETRIEVE_INSTANCE","The instance type attribute could not be retrieved." +"000020D8","8408","-4294958888","ERROR_DS_CODE_INCONSISTENCY","An internal error has occurred." +"000020D9","8409","-4294958887","ERROR_DS_DATABASE_ERROR","A database error has occurred." +"000020DA","8410","-4294958886","ERROR_DS_GOVERNSID_MISSING","The attribute GOVERNSID is missing." +"000020DB","8411","-4294958885","ERROR_DS_MISSING_EXPECTED_ATT","An expected attribute is missing." +"000020DC","8412","-4294958884","ERROR_DS_NCNAME_MISSING_CR_REF","The specified naming context is missing a cross reference." +"000020DD","8413","-4294958883","ERROR_DS_SECURITY_CHECKING_ERROR","A security checking error has occurred." +"000020DE","8414","-4294958882","ERROR_DS_SCHEMA_NOT_LOADED","The schema is not loaded." +"000020DF","8415","-4294958881","ERROR_DS_SCHEMA_ALLOC_FAILED","Schema allocation failed. Please check if the machine is running low on memory." +"000020E0","8416","-4294958880","ERROR_DS_ATT_SCHEMA_REQ_SYNTAX","Failed to obtain the required syntax for the attribute schema." +"000020E1","8417","-4294958879","ERROR_DS_GCVERIFY_ERROR","The global catalog verification failed. The global catalog is not available or does not support the operation. Some part of the directory is currently not available." +"000020E2","8418","-4294958878","ERROR_DS_DRA_SCHEMA_MISMATCH","The replication operation failed because of a schema mismatch between the servers involved." +"000020E3","8419","-4294958877","ERROR_DS_CANT_FIND_DSA_OBJ","The DSA object could not be found." +"000020E4","8420","-4294958876","ERROR_DS_CANT_FIND_EXPECTED_NC","The naming context could not be found." +"000020E5","8421","-4294958875","ERROR_DS_CANT_FIND_NC_IN_CACHE","The naming context could not be found in the cache." +"000020E6","8422","-4294958874","ERROR_DS_CANT_RETRIEVE_CHILD","The child object could not be retrieved." +"000020E7","8423","-4294958873","ERROR_DS_SECURITY_ILLEGAL_MODIFY","The modification was not permitted for security reasons." +"000020E8","8424","-4294958872","ERROR_DS_CANT_REPLACE_HIDDEN_REC","The operation cannot replace the hidden record." +"000020E9","8425","-4294958871","ERROR_DS_BAD_HIERARCHY_FILE","The hierarchy file is invalid." +"000020EA","8426","-4294958870","ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED","The attempt to build the hierarchy table failed." +"000020EB","8427","-4294958869","ERROR_DS_CONFIG_PARAM_MISSING","The directory configuration parameter is missing from the registry." +"000020EC","8428","-4294958868","ERROR_DS_COUNTING_AB_INDICES_FAILED","The attempt to count the address book indices failed." +"000020ED","8429","-4294958867","ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED","The allocation of the hierarchy table failed." +"000020EE","8430","-4294958866","ERROR_DS_INTERNAL_FAILURE","The directory service encountered an internal failure." +"000020EF","8431","-4294958865","ERROR_DS_UNKNOWN_ERROR","The directory service encountered an unknown failure." +"000020F0","8432","-4294958864","ERROR_DS_ROOT_REQUIRES_CLASS_TOP","A root object requires a class of 'top'." +"000020F1","8433","-4294958863","ERROR_DS_REFUSING_FSMO_ROLES","This directory server is shutting down - and cannot take ownership of new floating single-master operation roles." +"000020F2","8434","-4294958862","ERROR_DS_MISSING_FSMO_SETTINGS","The directory service is missing mandatory configuration information - and is unable to determine the ownership of floating single-master operation roles." +"000020F3","8435","-4294958861","ERROR_DS_UNABLE_TO_SURRENDER_ROLES","The directory service was unable to transfer ownership of one or more floating single-master operation roles to other servers." +"000020F4","8436","-4294958860","ERROR_DS_DRA_GENERIC","The replication operation failed." +"000020F5","8437","-4294958859","ERROR_DS_DRA_INVALID_PARAMETER","An invalid parameter was specified for this replication operation." +"000020F6","8438","-4294958858","ERROR_DS_DRA_BUSY","The directory service is too busy to complete the replication operation at this time." +"000020F7","8439","-4294958857","ERROR_DS_DRA_BAD_DN","The distinguished name specified for this replication operation is invalid." +"000020F8","8440","-4294958856","ERROR_DS_DRA_BAD_NC","The naming context specified for this replication operation is invalid." +"000020F9","8441","-4294958855","ERROR_DS_DRA_DN_EXISTS","The distinguished name specified for this replication operation already exists." +"000020FA","8442","-4294958854","ERROR_DS_DRA_INTERNAL_ERROR","The replication system encountered an internal error." +"000020FB","8443","-4294958853","ERROR_DS_DRA_INCONSISTENT_DIT","The replication operation encountered a database inconsistency." +"000020FC","8444","-4294958852","ERROR_DS_DRA_CONNECTION_FAILED","The server specified for this replication operation could not be contacted." +"000020FD","8445","-4294958851","ERROR_DS_DRA_BAD_INSTANCE_TYPE","The replication operation encountered an object with an invalid instance type." +"000020FE","8446","-4294958850","ERROR_DS_DRA_OUT_OF_MEM","The replication operation failed to allocate memory." +"000020FF","8447","-4294958849","ERROR_DS_DRA_MAIL_PROBLEM","The replication operation encountered an error with the mail system." +"00002100","8448","-4294958848","ERROR_DS_DRA_REF_ALREADY_EXISTS","The replication reference information for the target server already exists." +"00002101","8449","-4294958847","ERROR_DS_DRA_REF_NOT_FOUND","The replication reference information for the target server does not exist." +"00002102","8450","-4294958846","ERROR_DS_DRA_OBJ_IS_REP_SOURCE","The naming context cannot be removed because it is replicated to another server." +"00002103","8451","-4294958845","ERROR_DS_DRA_DB_ERROR","The replication operation encountered a database error." +"00002104","8452","-4294958844","ERROR_DS_DRA_NO_REPLICA","The naming context is in the process of being removed or is not replicated from the specified server." +"00002105","8453","-4294958843","ERROR_DS_DRA_ACCESS_DENIED","Replication access was denied." +"00002106","8454","-4294958842","ERROR_DS_DRA_NOT_SUPPORTED","The requested operation is not supported by this version of the directory service." +"00002107","8455","-4294958841","ERROR_DS_DRA_RPC_CANCELLED","The replication remote procedure call was cancelled." +"00002108","8456","-4294958840","ERROR_DS_DRA_SOURCE_DISABLED","The source server is currently rejecting replication requests." +"00002109","8457","-4294958839","ERROR_DS_DRA_SINK_DISABLED","The destination server is currently rejecting replication requests." +"0000210A","8458","-4294958838","ERROR_DS_DRA_NAME_COLLISION","The replication operation failed due to a collision of object names." +"0000210B","8459","-4294958837","ERROR_DS_DRA_SOURCE_REINSTALLED","The replication source has been reinstalled." +"0000210C","8460","-4294958836","ERROR_DS_DRA_MISSING_PARENT","The replication operation failed because a required parent object is missing." +"0000210D","8461","-4294958835","ERROR_DS_DRA_PREEMPTED","The replication operation was preempted." +"0000210E","8462","-4294958834","ERROR_DS_DRA_ABANDON_SYNC","The replication synchronization attempt was abandoned because of a lack of updates." +"0000210F","8463","-4294958833","ERROR_DS_DRA_SHUTDOWN","The replication operation was terminated because the system is shutting down." +"00002110","8464","-4294958832","ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET","Synchronization attempt failed because the destination DC is currently waiting to synchronize new partial attributes from source. This condition is normal if a recent schema change modified the partial attribute set. The destination partial attribute set is not a subset of source partial attribute set." +"00002111","8465","-4294958831","ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA","The replication synchronization attempt failed because a master replica attempted to sync from a partial replica." +"00002112","8466","-4294958830","ERROR_DS_DRA_EXTN_CONNECTION_FAILED","The server specified for this replication operation was contacted - but that server was unable to contact an additional server needed to complete the operation." +"00002113","8467","-4294958829","ERROR_DS_INSTALL_SCHEMA_MISMATCH","The version of the directory service schema of the source forest is not compatible with the version of directory service on this computer." +"00002114","8468","-4294958828","ERROR_DS_DUP_LINK_ID","Schema update failed: An attribute with the same link identifier already exists." +"00002115","8469","-4294958827","ERROR_DS_NAME_ERROR_RESOLVING","Name translation: Generic processing error." +"00002116","8470","-4294958826","ERROR_DS_NAME_ERROR_NOT_FOUND","Name translation: Could not find the name or insufficient right to see name." +"00002117","8471","-4294958825","ERROR_DS_NAME_ERROR_NOT_UNIQUE","Name translation: Input name mapped to more than one output name." +"00002118","8472","-4294958824","ERROR_DS_NAME_ERROR_NO_MAPPING","Name translation: Input name found - but not the associated output format." +"00002119","8473","-4294958823","ERROR_DS_NAME_ERROR_DOMAIN_ONLY","Name translation: Unable to resolve completely - only the domain was found." +"0000211A","8474","-4294958822","ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING","Name translation: Unable to perform purely syntactical mapping at the client without going out to the wire." +"0000211B","8475","-4294958821","ERROR_DS_CONSTRUCTED_ATT_MOD","Modification of a constructed attribute is not allowed." +"0000211C","8476","-4294958820","ERROR_DS_WRONG_OM_OBJ_CLASS","The OM-Object-Class specified is incorrect for an attribute with the specified syntax." +"0000211D","8477","-4294958819","ERROR_DS_DRA_REPL_PENDING","The replication request has been posted; waiting for reply." +"0000211E","8478","-4294958818","ERROR_DS_DS_REQUIRED","The requested operation requires a directory service - and none was available." +"0000211F","8479","-4294958817","ERROR_DS_INVALID_LDAP_DISPLAY_NAME","The LDAP display name of the class or attribute contains non-ASCII characters." +"00002120","8480","-4294958816","ERROR_DS_NON_BASE_SEARCH","The requested search operation is only supported for base searches." +"00002121","8481","-4294958815","ERROR_DS_CANT_RETRIEVE_ATTS","The search failed to retrieve attributes from the database." +"00002122","8482","-4294958814","ERROR_DS_BACKLINK_WITHOUT_LINK","The schema update operation tried to add a backward link attribute that has no corresponding forward link." +"00002123","8483","-4294958813","ERROR_DS_EPOCH_MISMATCH","Source and destination of a cross-domain move do not agree on the object's epoch number. Either source or destination does not have the latest version of the object." +"00002124","8484","-4294958812","ERROR_DS_SRC_NAME_MISMATCH","Source and destination of a cross-domain move do not agree on the object's current name. Either source or destination does not have the latest version of the object." +"00002125","8485","-4294958811","ERROR_DS_SRC_AND_DST_NC_IDENTICAL","Source and destination for the cross-domain move operation are identical. Caller should use local move operation instead of cross-domain move operation." +"00002126","8486","-4294958810","ERROR_DS_DST_NC_MISMATCH","Source and destination for a cross-domain move are not in agreement on the naming contexts in the forest. Either source or destination does not have the latest version of the Partitions container." +"00002127","8487","-4294958809","ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC","Destination of a cross-domain move is not authoritative for the destination naming context." +"00002128","8488","-4294958808","ERROR_DS_SRC_GUID_MISMATCH","Source and destination of a cross-domain move do not agree on the identity of the source object. Either source or destination does not have the latest version of the source object." +"00002129","8489","-4294958807","ERROR_DS_CANT_MOVE_DELETED_OBJECT","Object being moved across-domains is already known to be deleted by the destination server. The source server does not have the latest version of the source object." +"0000212A","8490","-4294958806","ERROR_DS_PDC_OPERATION_IN_PROGRESS","Another operation which requires exclusive access to the PDC FSMO is already in progress." +"0000212B","8491","-4294958805","ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD","A cross-domain move operation failed such that two versions of the moved object exist - one each in the source and destination domains. The destination object needs to be removed to restore the system to a consistent state." +"0000212C","8492","-4294958804","ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION","This object may not be moved across domain boundaries either because cross-domain moves for this class are disallowed - or the object has some special characteristics - e.g.: trust account or restricted RID - which prevent its move." +"0000212D","8493","-4294958803","ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS","Can't move objects with memberships across domain boundaries as once moved - this would violate the membership conditions of the account group. Remove the object from any account group memberships and retry." +"0000212E","8494","-4294958802","ERROR_DS_NC_MUST_HAVE_NC_PARENT","A naming context head must be the immediate child of another naming context head - not of an interior node." +"0000212F","8495","-4294958801","ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE","The directory cannot validate the proposed naming context name because it does not hold a replica of the naming context above the proposed naming context. Please ensure that the domain naming master role is held by a server that is configured as a global catalog server - and that the server is up to date with its replication partners." +"00002131","8497","-4294958799","ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER","The operation cannot be performed because the server does not have an infrastructure container in the domain of interest." +"00002132","8498","-4294958798","ERROR_DS_CANT_MOVE_ACCOUNT_GROUP","Cross-domain move of non-empty account groups is not allowed." +"00002133","8499","-4294958797","ERROR_DS_CANT_MOVE_RESOURCE_GROUP","Cross-domain move of non-empty resource groups is not allowed." +"00002134","8500","-4294958796","ERROR_DS_INVALID_SEARCH_FLAG","The search flags for the attribute are invalid. The ANR bit is valid only on attributes of Unicode or Teletex strings." +"00002135","8501","-4294958795","ERROR_DS_NO_TREE_DELETE_ABOVE_NC","Tree deletions starting at an object which has an NC head as a descendant are not allowed." +"00002136","8502","-4294958794","ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE","The directory service failed to lock a tree in preparation for a tree deletion because the tree was in use." +"00002137","8503","-4294958793","ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE","The directory service failed to identify the list of objects to delete while attempting a tree deletion." +"00002138","8504","-4294958792","ERROR_DS_SAM_INIT_FAILURE","Security Accounts Manager initialization failed because of the following error: %1. Error Status: 0000%2. Please shutdown this system and reboot into Directory Services Restore Mode - check the event log for more detailed information." +"00002139","8505","-4294958791","ERROR_DS_SENSITIVE_GROUP_VIOLATION","Only an administrator can modify the membership list of an administrative group." +"0000213A","8506","-4294958790","ERROR_DS_CANT_MOD_PRIMARYGROUPID","Cannot change the primary group ID of a domain controller account." +"0000213B","8507","-4294958789","ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD","An attempt is made to modify the base schema." +"0000213C","8508","-4294958788","ERROR_DS_NONSAFE_SCHEMA_CHANGE","Adding a new mandatory attribute to an existing class - deleting a mandatory attribute from an existing class - or adding an optional attribute to the special class Top that is not a backlink attribute" +"0000213D","8509","-4294958787","ERROR_DS_SCHEMA_UPDATE_DISALLOWED","Schema update is not allowed on this DC because the DC is not the schema FSMO Role Owner." +"0000213E","8510","-4294958786","ERROR_DS_CANT_CREATE_UNDER_SCHEMA","An object of this class cannot be created under the schema container. You can only create attribute-schema and class-schema objects under the schema container." +"0000213F","8511","-4294958785","ERROR_DS_INSTALL_NO_SRC_SCH_VERSION","The replica/child install failed to get the objectVersion attribute on the schema container on the source DC. Either the attribute is missing on the schema container or the credentials supplied do not have permission to read it." +"00002140","8512","-4294958784","ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE","The replica/child install failed to read the objectVersion attribute in the SCHEMA section of the file schema.ini in the system32 directory." +"00002141","8513","-4294958783","ERROR_DS_INVALID_GROUP_TYPE","The specified group type is invalid." +"00002142","8514","-4294958782","ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN","You cannot nest global groups in a mixed domain if the group is security-enabled." +"00002143","8515","-4294958781","ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN","You cannot nest local groups in a mixed domain if the group is security-enabled." +"00002144","8516","-4294958780","ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER","A global group cannot have a local group as a member." +"00002145","8517","-4294958779","ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER","A global group cannot have a universal group as a member." +"00002146","8518","-4294958778","ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER","A universal group cannot have a local group as a member." +"00002147","8519","-4294958777","ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER","A global group cannot have a cross-domain member." +"00002148","8520","-4294958776","ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER","A local group cannot have another cross domain local group as a member." +"00002149","8521","-4294958775","ERROR_DS_HAVE_PRIMARY_MEMBERS","A group with primary members cannot change to a security-disabled group." +"0000214A","8522","-4294958774","ERROR_DS_STRING_SD_CONVERSION_FAILED","The schema cache load failed to convert the string default SD on a class-schema object." +"0000214B","8523","-4294958773","ERROR_DS_NAMING_MASTER_GC","Only DSAs configured to be Global Catalog servers should be allowed to hold the Domain Naming Master FSMO role." +"0000214D","8525","-4294958771","ERROR_DS_COULDNT_UPDATE_SPNS","While processing a change to the DNS Host Name for an object - the Service Principal Name values could not be kept in sync." +"0000214E","8526","-4294958770","ERROR_DS_CANT_RETRIEVE_SD","The Security Descriptor attribute could not be read." +"0000214F","8527","-4294958769","ERROR_DS_KEY_NOT_UNIQUE","The object requested was not found - but an object with that key was found." +"00002150","8528","-4294958768","ERROR_DS_WRONG_LINKED_ATT_SYNTAX","The syntax of the linked attribute being added is incorrect. Forward links can only have syntax 2.5.5.1 - 2.5.5.7 - and 2.5.5.14 - and backlinks can only have syntax 2.5.5.1." +"00002151","8529","-4294958767","ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD","Security Account Manager needs to get the boot password." +"00002152","8530","-4294958766","ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY","Security Account Manager needs to get the boot key from floppy disk." +"00002153","8531","-4294958765","ERROR_DS_CANT_START","Directory Service cannot start." +"00002154","8532","-4294958764","ERROR_DS_INIT_FAILURE","Directory Services could not start." +"00002155","8533","-4294958763","ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION","The connection between client and server requires packet privacy or better." +"00002156","8534","-4294958762","ERROR_DS_SOURCE_DOMAIN_IN_FOREST","The source domain may not be in the same forest as destination." +"00002157","8535","-4294958761","ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST","The destination domain must be in the forest." +"00002158","8536","-4294958760","ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED","The operation requires that destination domain auditing be enabled." +"00002159","8537","-4294958759","ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN","The operation couldn't locate a DC for the source domain." +"0000215A","8538","-4294958758","ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER","The source object must be a group or user." +"0000215B","8539","-4294958757","ERROR_DS_SRC_SID_EXISTS_IN_FOREST","The source object's SID already exists in destination forest." +"0000215C","8540","-4294958756","ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH","The source and destination object must be of the same type." +"0000215D","8541","-4294958755","ERROR_SAM_INIT_FAILURE","Security Accounts Manager initialization failed because of the following error: %1. Error Status: 0000%2. Click OK to shut down the system and reboot into Safe Mode. Check the event log for detailed information." +"0000215E","8542","-4294958754","ERROR_DS_DRA_SCHEMA_INFO_SHIP","Schema information could not be included in the replication request." +"0000215F","8543","-4294958753","ERROR_DS_DRA_SCHEMA_CONFLICT","The replication operation could not be completed due to a schema incompatibility." +"00002160","8544","-4294958752","ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT","The replication operation could not be completed due to a previous schema incompatibility." +"00002161","8545","-4294958751","ERROR_DS_DRA_OBJ_NC_MISMATCH","The replication update could not be applied because either the source or the destination has not yet received information regarding a recent cross-domain move operation." +"00002162","8546","-4294958750","ERROR_DS_NC_STILL_HAS_DSAS","The requested domain could not be deleted because there exist domain controllers that still host this domain." +"00002163","8547","-4294958749","ERROR_DS_GC_REQUIRED","The requested operation can be performed only on a global catalog server." +"00002164","8548","-4294958748","ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY","A local group can only be a member of other local groups in the same domain." +"00002165","8549","-4294958747","ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS","Foreign security principals cannot be members of universal groups." +"00002166","8550","-4294958746","ERROR_DS_CANT_ADD_TO_GC","The attribute is not allowed to be replicated to the GC because of security reasons." +"00002167","8551","-4294958745","ERROR_DS_NO_CHECKPOINT_WITH_PDC","The checkpoint with the PDC could not be taken because there too many modifications being processed currently." +"00002168","8552","-4294958744","ERROR_DS_SOURCE_AUDITING_NOT_ENABLED","The operation requires that source domain auditing be enabled." +"00002169","8553","-4294958743","ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC","Security principal objects can only be created inside domain naming contexts." +"0000216A","8554","-4294958742","ERROR_DS_INVALID_NAME_FOR_SPN","A Service Principal Name" +"0000216B","8555","-4294958741","ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS","A Filter was passed that uses constructed attributes." +"0000216C","8556","-4294958740","ERROR_DS_UNICODEPWD_NOT_IN_QUOTES","The unicodePwd attribute value must be enclosed in double quotes." +"0000216D","8557","-4294958739","ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED","Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased." +"0000216E","8558","-4294958738","ERROR_DS_MUST_BE_RUN_ON_DST_DC","For security reasons - the operation must be run on the destination DC." +"0000216F","8559","-4294958737","ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER","For security reasons - the source DC must be NT4SP4 or greater." +"00002170","8560","-4294958736","ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ","Critical Directory Service System objects cannot be deleted during tree delete operations. The tree delete may have been partially performed." +"00002171","8561","-4294958735","ERROR_DS_INIT_FAILURE_CONSOLE","Directory Services could not start because of the following error: %1. Error Status: 0000%2. Please click OK to shutdown the system. You can use the recovery console to diagnose the system further." +"00002172","8562","-4294958734","ERROR_DS_SAM_INIT_FAILURE_CONSOLE","Security Accounts Manager initialization failed because of the following error: %1. Error Status: 0000%2. Please click OK to shutdown the system. You can use the recovery console to diagnose the system further." +"00002173","8563","-4294958733","ERROR_DS_FOREST_VERSION_TOO_HIGH","The version of the operating system is incompatible with the current AD DS forest functional level or AD LDS Configuration Set functional level. You must upgrade to a new version of the operating system before this server can become an AD DS Domain Controller or add an AD LDS Instance in this AD DS Forest or AD LDS Configuration Set." +"00002174","8564","-4294958732","ERROR_DS_DOMAIN_VERSION_TOO_HIGH","The version of the operating system installed is incompatible with the current domain functional level. You must upgrade to a new version of the operating system before this server can become a domain controller in this domain." +"00002175","8565","-4294958731","ERROR_DS_FOREST_VERSION_TOO_LOW","The version of the operating system installed on this server no longer supports the current AD DS Forest functional level or AD LDS Configuration Set functional level. You must raise the AD DS Forest functional level or AD LDS Configuration Set functional level before this server can become an AD DS Domain Controller or an AD LDS Instance in this Forest or Configuration Set." +"00002176","8566","-4294958730","ERROR_DS_DOMAIN_VERSION_TOO_LOW","The version of the operating system installed on this server no longer supports the current domain functional level. You must raise the domain functional level before this server can become a domain controller in this domain." +"00002177","8567","-4294958729","ERROR_DS_INCOMPATIBLE_VERSION","The version of the operating system installed on this server is incompatible with the functional level of the domain or forest." +"00002178","8568","-4294958728","ERROR_DS_LOW_DSA_VERSION","The functional level of the domain" +"00002179","8569","-4294958727","ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN","The forest functional level cannot be raised to the requested value since one or more domains are still in mixed domain mode. All domains in the forest must be in native mode - for you to raise the forest functional level." +"0000217A","8570","-4294958726","ERROR_DS_NOT_SUPPORTED_SORT_ORDER","The sort order requested is not supported." +"0000217B","8571","-4294958725","ERROR_DS_NAME_NOT_UNIQUE","The requested name already exists as a unique identifier." +"0000217C","8572","-4294958724","ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4","The machine account was created pre-NT4. The account needs to be recreated." +"0000217D","8573","-4294958723","ERROR_DS_OUT_OF_VERSION_STORE","The database is out of version store." +"0000217E","8574","-4294958722","ERROR_DS_INCOMPATIBLE_CONTROLS_USED","Unable to continue operation because multiple conflicting controls were used." +"0000217F","8575","-4294958721","ERROR_DS_NO_REF_DOMAIN","Unable to find a valid security descriptor reference domain for this partition." +"00002180","8576","-4294958720","ERROR_DS_RESERVED_LINK_ID","Schema update failed: The link identifier is reserved." +"00002181","8577","-4294958719","ERROR_DS_LINK_ID_NOT_AVAILABLE","Schema update failed: There are no link identifiers available." +"00002182","8578","-4294958718","ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER","An account group cannot have a universal group as a member." +"00002183","8579","-4294958717","ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE","Rename or move operations on naming context heads or read-only objects are not allowed." +"00002184","8580","-4294958716","ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC","Move operations on objects in the schema naming context are not allowed." +"00002185","8581","-4294958715","ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG","A system flag has been set on the object and does not allow the object to be moved or renamed." +"00002186","8582","-4294958714","ERROR_DS_MODIFYDN_WRONG_GRANDPARENT","This object is not allowed to change its grandparent container. Moves are not forbidden on this object - but are restricted to sibling containers." +"00002187","8583","-4294958713","ERROR_DS_NAME_ERROR_TRUST_REFERRAL","Unable to resolve completely - a referral to another forest is generated." +"00002188","8584","-4294958712","ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER","The requested action is not supported on standard server." +"00002189","8585","-4294958711","ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD","Could not access a partition of the directory service located on a remote server. Make sure at least one server is running for the partition in question." +"0000218A","8586","-4294958710","ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2","The directory cannot validate the proposed naming context" +"0000218B","8587","-4294958709","ERROR_DS_THREAD_LIMIT_EXCEEDED","The thread limit for this request was exceeded." +"0000218C","8588","-4294958708","ERROR_DS_NOT_CLOSEST","The Global catalog server is not in the closest site." +"0000218D","8589","-4294958707","ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF","The DS cannot derive a service principal name" +"0000218E","8590","-4294958706","ERROR_DS_SINGLE_USER_MODE_FAILED","The Directory Service failed to enter single user mode." +"0000218F","8591","-4294958705","ERROR_DS_NTDSCRIPT_SYNTAX_ERROR","The Directory Service cannot parse the script because of a syntax error." +"00002190","8592","-4294958704","ERROR_DS_NTDSCRIPT_PROCESS_ERROR","The Directory Service cannot process the script because of an error." +"00002191","8593","-4294958703","ERROR_DS_DIFFERENT_REPL_EPOCHS","The directory service cannot perform the requested operation because the servers involved are of different replication epochs" +"00002192","8594","-4294958702","ERROR_DS_DRS_EXTENSIONS_CHANGED","The directory service binding must be renegotiated due to a change in the server extensions information." +"00002193","8595","-4294958701","ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR","Operation not allowed on a disabled cross ref." +"00002194","8596","-4294958700","ERROR_DS_NO_MSDS_INTID","Schema update failed: No values for msDS-IntId are available." +"00002195","8597","-4294958699","ERROR_DS_DUP_MSDS_INTID","Schema update failed: Duplicate msDS-INtId. Retry the operation." +"00002196","8598","-4294958698","ERROR_DS_EXISTS_IN_RDNATTID","Schema deletion failed: attribute is used in rDNAttID." +"00002197","8599","-4294958697","ERROR_DS_AUTHORIZATION_FAILED","The directory service failed to authorize the request." +"00002198","8600","-4294958696","ERROR_DS_INVALID_SCRIPT","The Directory Service cannot process the script because it is invalid." +"00002199","8601","-4294958695","ERROR_DS_REMOTE_CROSSREF_OP_FAILED","The remote create cross reference operation failed on the Domain Naming Master FSMO. The operation's error is in the extended data." +"0000219A","8602","-4294958694","ERROR_DS_CROSS_REF_BUSY","A cross reference is in use locally with the same name." +"0000219B","8603","-4294958693","ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN","The DS cannot derive a service principal name" +"0000219C","8604","-4294958692","ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC","Writeable NCs prevent this DC from demoting." +"0000219D","8605","-4294958691","ERROR_DS_DUPLICATE_ID_FOUND","The requested object has a non-unique identifier and cannot be retrieved." +"0000219E","8606","-4294958690","ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT","Insufficient attributes were given to create an object. This object may not exist because it may have been deleted and already garbage collected." +"0000219F","8607","-4294958689","ERROR_DS_GROUP_CONVERSION_ERROR","The group cannot be converted due to attribute restrictions on the requested group type." +"000021A0","8608","-4294958688","ERROR_DS_CANT_MOVE_APP_BASIC_GROUP","Cross-domain move of non-empty basic application groups is not allowed." +"000021A1","8609","-4294958687","ERROR_DS_CANT_MOVE_APP_QUERY_GROUP","Cross-domain move of non-empty query based application groups is not allowed." +"000021A2","8610","-4294958686","ERROR_DS_ROLE_NOT_VERIFIED","The FSMO role ownership could not be verified because its directory partition has not replicated successfully with at least one replication partner." +"000021A3","8611","-4294958685","ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL","The target container for a redirection of a well known object container cannot already be a special container." +"000021A4","8612","-4294958684","ERROR_DS_DOMAIN_RENAME_IN_PROGRESS","The Directory Service cannot perform the requested operation because a domain rename operation is in progress." +"000021A5","8613","-4294958683","ERROR_DS_EXISTING_AD_CHILD_NC","The directory service detected a child partition below the requested partition name. The partition hierarchy must be created in a top down method." +"000021A6","8614","-4294958682","ERROR_DS_REPL_LIFETIME_EXCEEDED","The directory service cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime." +"000021A7","8615","-4294958681","ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER","The requested operation is not allowed on an object under the system container." +"000021A8","8616","-4294958680","ERROR_DS_LDAP_SEND_QUEUE_FULL","The LDAP servers network send queue has filled up because the client is not processing the results of its requests fast enough. No more requests will be processed until the client catches up. If the client does not catch up then it will be disconnected." +"000021A9","8617","-4294958679","ERROR_DS_DRA_OUT_SCHEDULE_WINDOW","The scheduled replication did not take place because the system was too busy to execute the request within the schedule window. The replication queue is overloaded. Consider reducing the number of partners or decreasing the scheduled replication frequency." +"000021AA","8618","-4294958678","ERROR_DS_POLICY_NOT_KNOWN","At this time - it cannot be determined if the branch replication policy is available on the hub domain controller. Please retry at a later time to account for replication latencies." +"000021AB","8619","-4294958677","ERROR_NO_SITE_SETTINGS_OBJECT","The site settings object for the specified site does not exist." +"000021AC","8620","-4294958676","ERROR_NO_SECRETS","The local account store does not contain secret material for the specified account." +"000021AD","8621","-4294958675","ERROR_NO_WRITABLE_DC_FOUND","Could not find a writable domain controller in the domain." +"000021AE","8622","-4294958674","ERROR_DS_NO_SERVER_OBJECT","The server object for the domain controller does not exist." +"000021AF","8623","-4294958673","ERROR_DS_NO_NTDSA_OBJECT","The NTDS Settings object for the domain controller does not exist." +"000021B0","8624","-4294958672","ERROR_DS_NON_ASQ_SEARCH","The requested search operation is not supported for ASQ searches." +"000021B1","8625","-4294958671","ERROR_DS_AUDIT_FAILURE","A required audit event could not be generated for the operation." +"000021B2","8626","-4294958670","ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE","The search flags for the attribute are invalid. The subtree index bit is valid only on single valued attributes." +"000021B3","8627","-4294958669","ERROR_DS_INVALID_SEARCH_FLAG_TUPLE","The search flags for the attribute are invalid. The tuple index bit is valid only on attributes of Unicode strings." +"000021B4","8628","-4294958668","ERROR_DS_HIERARCHY_TABLE_TOO_DEEP","The address books are nested too deeply. Failed to build the hierarchy table." +"000021B5","8629","-4294958667","ERROR_DS_DRA_CORRUPT_UTD_VECTOR","The specified up-to-date-ness vector is corrupt." +"000021B6","8630","-4294958666","ERROR_DS_DRA_SECRETS_DENIED","The request to replicate secrets is denied." +"000021B7","8631","-4294958665","ERROR_DS_RESERVED_MAPI_ID","Schema update failed: The MAPI identifier is reserved." +"000021B8","8632","-4294958664","ERROR_DS_MAPI_ID_NOT_AVAILABLE","Schema update failed: There are no MAPI identifiers available." +"000021B9","8633","-4294958663","ERROR_DS_DRA_MISSING_KRBTGT_SECRET","The replication operation failed because the required attributes of the local krbtgt object are missing." +"000021BA","8634","-4294958662","ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST","The domain name of the trusted domain already exists in the forest." +"000021BB","8635","-4294958661","ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST","The flat name of the trusted domain already exists in the forest." +"000021BC","8636","-4294958660","ERROR_INVALID_USER_PRINCIPAL_NAME","The User Principal Name" +"000021BD","8637","-4294958659","ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS","OID mapped groups cannot have members." +"000021BE","8638","-4294958658","ERROR_DS_OID_NOT_FOUND","The specified OID cannot be found." +"000021BF","8639","-4294958657","ERROR_DS_DRA_RECYCLED_TARGET","The replication operation failed because the target object referred by a link value is recycled." +"000021C0","8640","-4294958656","ERROR_DS_DISALLOWED_NC_REDIRECT","The redirect operation failed because the target object is in a NC different from the domain NC of the current domain controller." +"000021C1","8641","-4294958655","ERROR_DS_HIGH_ADLDS_FFL","The functional level of the AD LDS configuration set cannot be lowered to the requested value." +"000021C2","8642","-4294958654","ERROR_DS_HIGH_DSA_VERSION","The functional level of the domain" +"000021C3","8643","-4294958653","ERROR_DS_LOW_ADLDS_FFL","The functional level of the AD LDS configuration set cannot be raised to the requested value - because there exist one or more ADLDS instances that are at a lower incompatible functional level." +"000021C4","8644","-4294958652","ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION","The domain join cannot be completed because the SID of the domain you attempted to join was identical to the SID of this machine. This is a symptom of an improperly cloned operating system install. You should run sysprep on this machine in order to generate a new machine SID. Please see https://go.microsoft.com/fwlink/p/?linkid=168895 for more information." +"000021C5","8645","-4294958651","ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED","The undelete operation failed because the Sam Account Name or Additional Sam Account Name of the object being undeleted conflicts with an existing live object." +"000021C6","8646","-4294958650","ERROR_INCORRECT_ACCOUNT_TYPE","The system is not authoritative for the specified account and therefore cannot complete the operation. Please retry the operation using the provider associated with this account. If this is an online provider please use the provider's online site." +"0000229A","-4294958438","8858","NULL","" +"000022CA","-4294958390","8906","NULL","" +"0000230B","-4294958325","8971","NULL","" +"00002329","9001","-4294958295","DNS_ERROR_RCODE_FORMAT_ERROR","DNS server unable to interpret format." +"0000232A","9002","-4294958294","DNS_ERROR_RCODE_SERVER_FAILURE","DNS server failure." +"0000232B","9003","-4294958293","DNS_ERROR_RCODE_NAME_ERROR","DNS name does not exist." +"0000232C","9004","-4294958292","DNS_ERROR_RCODE_NOT_IMPLEMENTED","DNS request not supported by name server." +"0000232D","9005","-4294958291","DNS_ERROR_RCODE_REFUSED","DNS operation refused." +"0000232E","9006","-4294958290","DNS_ERROR_RCODE_YXDOMAIN","DNS name that ought not exist - does exist." +"0000232F","9007","-4294958289","DNS_ERROR_RCODE_YXRRSET","DNS RR set that ought not exist - does exist." +"00002330","9008","-4294958288","DNS_ERROR_RCODE_NXRRSET","DNS RR set that ought to exist - does not exist." +"00002331","9009","-4294958287","DNS_ERROR_RCODE_NOTAUTH","DNS server not authoritative for zone." +"00002332","9010","-4294958286","DNS_ERROR_RCODE_NOTZONE","DNS name in update or prereq is not in zone." +"00002338","9016","-4294958280","DNS_ERROR_RCODE_BADSIG","DNS signature failed to verify." +"00002339","9017","-4294958279","DNS_ERROR_RCODE_BADKEY","DNS bad key." +"0000233A","9018","-4294958278","DNS_ERROR_RCODE_BADTIME","DNS signature validity expired." +"0000238D","9101","-4294958195","DNS_ERROR_KEYMASTER_REQUIRED","Only the DNS server acting as the key master for the zone may perform this operation." +"0000238E","9102","-4294958194","DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE","This operation is not allowed on a zone that is signed or has signing keys." +"0000238F","9103","-4294958193","DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1","NSEC3 is not compatible with the RSA-SHA-1 algorithm. Choose a different algorithm or use NSEC." +"00002391","9105","-4294958191","DNS_ERROR_UNSUPPORTED_ALGORITHM","The specified algorithm is not supported." +"00002392","9106","-4294958190","DNS_ERROR_INVALID_KEY_SIZE","The specified key size is not supported." +"00002393","9107","-4294958189","DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE","One or more of the signing keys for a zone are not accessible to the DNS server. Zone signing will not be operational until this error is resolved." +"00002394","9108","-4294958188","DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION","The specified key storage provider does not support DPAPI++ data protection. Zone signing will not be operational until this error is resolved." +"00002395","9109","-4294958187","DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR","An unexpected DPAPI++ error was encountered. Zone signing will not be operational until this error is resolved." +"00002396","9110","-4294958186","DNS_ERROR_UNEXPECTED_CNG_ERROR","An unexpected crypto error was encountered. Zone signing may not be operational until this error is resolved." +"00002397","9111","-4294958185","DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION","The DNS server encountered a signing key with an unknown version. Zone signing will not be operational until this error is resolved." +"00002398","9112","-4294958184","DNS_ERROR_KSP_NOT_ACCESSIBLE","The specified key service provider cannot be opened by the DNS server." +"00002399","9113","-4294958183","DNS_ERROR_TOO_MANY_SKDS","The DNS server cannot accept any more signing keys with the specified algorithm and KSK flag value for this zone." +"0000239A","9114","-4294958182","DNS_ERROR_INVALID_ROLLOVER_PERIOD","The specified rollover period is invalid." +"0000239B","9115","-4294958181","DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET","The specified initial rollover offset is invalid." +"0000239C","9116","-4294958180","DNS_ERROR_ROLLOVER_IN_PROGRESS","The specified signing key is already in process of rolling over keys." +"0000239D","9117","-4294958179","DNS_ERROR_STANDBY_KEY_NOT_PRESENT","The specified signing key does not have a standby key to revoke." +"0000239E","9118","-4294958178","DNS_ERROR_NOT_ALLOWED_ON_ZSK","This operation is not allowed on a zone signing key" +"0000239F","9119","-4294958177","DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD","This operation is not allowed on an active signing key." +"000023A0","9120","-4294958176","DNS_ERROR_ROLLOVER_ALREADY_QUEUED","The specified signing key is already queued for rollover." +"000023A1","9121","-4294958175","DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE","This operation is not allowed on an unsigned zone." +"000023A2","9122","-4294958174","DNS_ERROR_BAD_KEYMASTER","This operation could not be completed because the DNS server listed as the current key master for this zone is down or misconfigured. Resolve the problem on the current key master for this zone or use another DNS server to seize the key master role." +"000023A3","9123","-4294958173","DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD","The specified signature validity period is invalid." +"000023A4","9124","-4294958172","DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT","The specified NSEC3 iteration count is higher than allowed by the minimum key length used in the zone." +"000023A5","9125","-4294958171","DNS_ERROR_DNSSEC_IS_DISABLED","This operation could not be completed because the DNS server has been configured with DNSSEC features disabled. Enable DNSSEC on the DNS server." +"000023A6","9126","-4294958170","DNS_ERROR_INVALID_XML","This operation could not be completed because the XML stream received is empty or syntactically invalid." +"000023A7","9127","-4294958169","DNS_ERROR_NO_VALID_TRUST_ANCHORS","This operation completed - but no trust anchors were added because all of the trust anchors received were either invalid - unsupported - expired - or would not become valid in less than 30 days." +"000023A8","9128","-4294958168","DNS_ERROR_ROLLOVER_NOT_POKEABLE","The specified signing key is not waiting for parental DS update." +"000023A9","9129","-4294958167","DNS_ERROR_NSEC3_NAME_COLLISION","Hash collision detected during NSEC3 signing. Specify a different user-provided salt - or use a randomly generated salt - and attempt to sign the zone again." +"000023AA","9130","-4294958166","DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1","NSEC is not compatible with the NSEC3-RSA-SHA-1 algorithm. Choose a different algorithm or use NSEC3." +"0000251D","9501","-4294957795","DNS_INFO_NO_RECORDS","No records found for given DNS query." +"0000251E","9502","-4294957794","DNS_ERROR_BAD_PACKET","Bad DNS packet." +"0000251F","9503","-4294957793","DNS_ERROR_NO_PACKET","No DNS packet." +"00002520","9504","-4294957792","DNS_ERROR_RCODE","DNS error - check rcode." +"00002521","9505","-4294957791","DNS_ERROR_UNSECURE_PACKET","Unsecured DNS packet." +"00002522","9506","-4294957790","DNS_REQUEST_PENDING","DNS query request is pending." +"0000254F","9551","-4294957745","DNS_ERROR_INVALID_TYPE","Invalid DNS type." +"00002550","9552","-4294957744","DNS_ERROR_INVALID_IP_ADDRESS","Invalid IP address." +"00002551","9553","-4294957743","DNS_ERROR_INVALID_PROPERTY","Invalid property." +"00002552","9554","-4294957742","DNS_ERROR_TRY_AGAIN_LATER","Try DNS operation again later." +"00002553","9555","-4294957741","DNS_ERROR_NOT_UNIQUE","Record for given name and type is not unique." +"00002554","9556","-4294957740","DNS_ERROR_NON_RFC_NAME","DNS name does not comply with RFC specifications." +"00002555","9557","-4294957739","DNS_STATUS_FQDN","DNS name is a fully-qualified DNS name." +"00002556","9558","-4294957738","DNS_STATUS_DOTTED_NAME","DNS name is dotted" +"00002557","9559","-4294957737","DNS_STATUS_SINGLE_PART_NAME","DNS name is a single-part name." +"00002558","9560","-4294957736","DNS_ERROR_INVALID_NAME_CHAR","DNS name contains an invalid character." +"00002559","9561","-4294957735","DNS_ERROR_NUMERIC_NAME","DNS name is entirely numeric." +"0000255A","9562","-4294957734","DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER","The operation requested is not permitted on a DNS root server." +"0000255B","9563","-4294957733","DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION","The record could not be created because this part of the DNS namespace has been delegated to another server." +"0000255C","9564","-4294957732","DNS_ERROR_CANNOT_FIND_ROOT_HINTS","The DNS server could not find a set of root hints." +"0000255D","9565","-4294957731","DNS_ERROR_INCONSISTENT_ROOT_HINTS","The DNS server found root hints but they were not consistent across all adapters." +"0000255E","9566","-4294957730","DNS_ERROR_DWORD_VALUE_TOO_SMALL","The specified value is too small for this parameter." +"0000255F","9567","-4294957729","DNS_ERROR_DWORD_VALUE_TOO_LARGE","The specified value is too large for this parameter." +"00002560","9568","-4294957728","DNS_ERROR_BACKGROUND_LOADING","This operation is not allowed while the DNS server is loading zones in the background. Please try again later." +"00002561","9569","-4294957727","DNS_ERROR_NOT_ALLOWED_ON_RODC","The operation requested is not permitted on against a DNS server running on a read-only DC." +"00002562","9570","-4294957726","DNS_ERROR_NOT_ALLOWED_UNDER_DNAME","No data is allowed to exist underneath a DNAME record." +"00002563","9571","-4294957725","DNS_ERROR_DELEGATION_REQUIRED","This operation requires credentials delegation." +"00002564","9572","-4294957724","DNS_ERROR_INVALID_POLICY_TABLE","Name resolution policy table has been corrupted. DNS resolution will fail until it is fixed. Contact your network administrator." +"00002581","9601","-4294957695","DNS_ERROR_ZONE_DOES_NOT_EXIST","DNS zone does not exist." +"00002582","9602","-4294957694","DNS_ERROR_NO_ZONE_INFO","DNS zone information not available." +"00002583","9603","-4294957693","DNS_ERROR_INVALID_ZONE_OPERATION","Invalid operation for DNS zone." +"00002584","9604","-4294957692","DNS_ERROR_ZONE_CONFIGURATION_ERROR","Invalid DNS zone configuration." +"00002585","9605","-4294957691","DNS_ERROR_ZONE_HAS_NO_SOA_RECORD","DNS zone has no start of authority" +"00002586","9606","-4294957690","DNS_ERROR_ZONE_HAS_NO_NS_RECORDS","DNS zone has no Name Server" +"00002587","9607","-4294957689","DNS_ERROR_ZONE_LOCKED","DNS zone is locked." +"00002588","9608","-4294957688","DNS_ERROR_ZONE_CREATION_FAILED","DNS zone creation failed." +"00002589","9609","-4294957687","DNS_ERROR_ZONE_ALREADY_EXISTS","DNS zone already exists." +"0000258A","9610","-4294957686","DNS_ERROR_AUTOZONE_ALREADY_EXISTS","DNS automatic zone already exists." +"0000258B","9611","-4294957685","DNS_ERROR_INVALID_ZONE_TYPE","Invalid DNS zone type." +"0000258C","9612","-4294957684","DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP","Secondary DNS zone requires master IP address." +"0000258D","9613","-4294957683","DNS_ERROR_ZONE_NOT_SECONDARY","DNS zone not secondary." +"0000258E","9614","-4294957682","DNS_ERROR_NEED_SECONDARY_ADDRESSES","Need secondary IP address." +"0000258F","9615","-4294957681","DNS_ERROR_WINS_INIT_FAILED","WINS initialization failed." +"00002590","9616","-4294957680","DNS_ERROR_NEED_WINS_SERVERS","Need WINS servers." +"00002591","9617","-4294957679","DNS_ERROR_NBSTAT_INIT_FAILED","NBTSTAT initialization call failed." +"00002592","9618","-4294957678","DNS_ERROR_SOA_DELETE_INVALID","Invalid delete of start of authority" +"00002593","9619","-4294957677","DNS_ERROR_FORWARDER_ALREADY_EXISTS","A conditional forwarding zone already exists for that name." +"00002594","9620","-4294957676","DNS_ERROR_ZONE_REQUIRES_MASTER_IP","This zone must be configured with one or more master DNS server IP addresses." +"00002595","9621","-4294957675","DNS_ERROR_ZONE_IS_SHUTDOWN","The operation cannot be performed because this zone is shut down." +"00002596","9622","-4294957674","DNS_ERROR_ZONE_LOCKED_FOR_SIGNING","This operation cannot be performed because the zone is currently being signed. Please try again later." +"000025B3","9651","-4294957645","DNS_ERROR_PRIMARY_REQUIRES_DATAFILE","Primary DNS zone requires datafile." +"000025B4","9652","-4294957644","DNS_ERROR_INVALID_DATAFILE_NAME","Invalid datafile name for DNS zone." +"000025B5","9653","-4294957643","DNS_ERROR_DATAFILE_OPEN_FAILURE","Failed to open datafile for DNS zone." +"000025B6","9654","-4294957642","DNS_ERROR_FILE_WRITEBACK_FAILED","Failed to write datafile for DNS zone." +"000025B7","9655","-4294957641","DNS_ERROR_DATAFILE_PARSING","Failure while reading datafile for DNS zone." +"000025E5","9701","-4294957595","DNS_ERROR_RECORD_DOES_NOT_EXIST","DNS record does not exist." +"000025E6","9702","-4294957594","DNS_ERROR_RECORD_FORMAT","DNS record format error." +"000025E7","9703","-4294957593","DNS_ERROR_NODE_CREATION_FAILED","Node creation failure in DNS." +"000025E8","9704","-4294957592","DNS_ERROR_UNKNOWN_RECORD_TYPE","Unknown DNS record type." +"000025E9","9705","-4294957591","DNS_ERROR_RECORD_TIMED_OUT","DNS record timed out." +"000025EA","9706","-4294957590","DNS_ERROR_NAME_NOT_IN_ZONE","Name not in DNS zone." +"000025EB","9707","-4294957589","DNS_ERROR_CNAME_LOOP","CNAME loop detected." +"000025EC","9708","-4294957588","DNS_ERROR_NODE_IS_CNAME","Node is a CNAME DNS record." +"000025ED","9709","-4294957587","DNS_ERROR_CNAME_COLLISION","A CNAME record already exists for given name." +"000025EE","9710","-4294957586","DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT","Record only at DNS zone root." +"000025EF","9711","-4294957585","DNS_ERROR_RECORD_ALREADY_EXISTS","DNS record already exists." +"000025F0","9712","-4294957584","DNS_ERROR_SECONDARY_DATA","Secondary DNS zone data error." +"000025F1","9713","-4294957583","DNS_ERROR_NO_CREATE_CACHE_DATA","Could not create DNS cache data." +"000025F2","9714","-4294957582","DNS_ERROR_NAME_DOES_NOT_EXIST","DNS name does not exist." +"000025F3","9715","-4294957581","DNS_WARNING_PTR_CREATE_FAILED","Could not create pointer" +"000025F4","9716","-4294957580","DNS_WARNING_DOMAIN_UNDELETED","DNS domain was undeleted." +"000025F5","9717","-4294957579","DNS_ERROR_DS_UNAVAILABLE","The directory service is unavailable." +"000025F6","9718","-4294957578","DNS_ERROR_DS_ZONE_ALREADY_EXISTS","DNS zone already exists in the directory service." +"000025F7","9719","-4294957577","DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE","DNS server not creating or reading the boot file for the directory service integrated DNS zone." +"000025F8","9720","-4294957576","DNS_ERROR_NODE_IS_DNAME","Node is a DNAME DNS record." +"000025F9","9721","-4294957575","DNS_ERROR_DNAME_COLLISION","A DNAME record already exists for given name." +"000025FA","9722","-4294957574","DNS_ERROR_ALIAS_LOOP","An alias loop has been detected with either CNAME or DNAME records." +"00002617","9751","-4294957545","DNS_INFO_AXFR_COMPLETE","DNS AXFR" +"00002618","9752","-4294957544","DNS_ERROR_AXFR","DNS zone transfer failed." +"00002619","9753","-4294957543","DNS_INFO_ADDED_LOCAL_WINS","Added local WINS server." +"00002649","9801","-4294957495","DNS_STATUS_CONTINUE_NEEDED","Secure update call needs to continue update request." +"0000267B","9851","-4294957445","DNS_ERROR_NO_TCPIP","TCP/IP network protocol not installed." +"0000267C","9852","-4294957444","DNS_ERROR_NO_DNS_SERVERS","No DNS servers configured for local system." +"00002685","-4294957435","9861","NULL","" +"000026AD","9901","-4294957395","DNS_ERROR_DP_DOES_NOT_EXIST","The specified directory partition does not exist." +"000026AE","9902","-4294957394","DNS_ERROR_DP_ALREADY_EXISTS","The specified directory partition already exists." +"000026AF","9903","-4294957393","DNS_ERROR_DP_NOT_ENLISTED","This DNS server is not enlisted in the specified directory partition." +"000026B0","9904","-4294957392","DNS_ERROR_DP_ALREADY_ENLISTED","This DNS server is already enlisted in the specified directory partition." +"000026B1","9905","-4294957391","DNS_ERROR_DP_NOT_AVAILABLE","The directory partition is not available at this time. Please wait a few minutes and try again." +"000026B2","9906","-4294957390","DNS_ERROR_DP_FSMO_ERROR","The operation failed because the domain naming master FSMO role could not be reached. The domain controller holding the domain naming master FSMO role is down or unable to service the request or is not running Windows Server 2003 or later." +"00002714","10004","-4294957292","WSAEINTR","A blocking operation was interrupted by a call to WSACancelBlockingCall." +"00002719","10009","-4294957287","WSAEBADF","The file handle supplied is not valid." +"0000271D","10013","-4294957283","WSAEACCES","An attempt was made to access a socket in a way forbidden by its access permissions." +"0000271E","10014","-4294957282","WSAEFAULT","The system detected an invalid pointer address in attempting to use a pointer argument in a call." +"00002726","10022","-4294957274","WSAEINVAL","An invalid argument was supplied." +"00002728","10024","-4294957272","WSAEMFILE","Too many open sockets." +"00002733","10035","-4294957261","WSAEWOULDBLOCK","A non-blocking socket operation could not be completed immediately." +"00002734","10036","-4294957260","WSAEINPROGRESS","A blocking operation is currently executing." +"00002735","10037","-4294957259","WSAEALREADY","An operation was attempted on a non-blocking socket that already had an operation in progress." +"00002736","10038","-4294957258","WSAENOTSOCK","An operation was attempted on something that is not a socket." +"00002737","10039","-4294957257","WSAEDESTADDRREQ","A required address was omitted from an operation on a socket." +"00002738","10040","-4294957256","WSAEMSGSIZE","A message sent on a datagram socket was larger than the internal message buffer or some other network limit - or the buffer used to receive a datagram into was smaller than the datagram itself." +"00002739","10041","-4294957255","WSAEPROTOTYPE","A protocol was specified in the socket function call that does not support the semantics of the socket type requested." +"0000273A","10042","-4294957254","WSAENOPROTOOPT","An unknown - invalid - or unsupported option or level was specified in a getsockopt or setsockopt call." +"0000273B","10043","-4294957253","WSAEPROTONOSUPPORT","The requested protocol has not been configured into the system - or no implementation for it exists." +"0000273C","10044","-4294957252","WSAESOCKTNOSUPPORT","The support for the specified socket type does not exist in this address family." +"0000273D","10045","-4294957251","WSAEOPNOTSUPP","The attempted operation is not supported for the type of object referenced." +"0000273E","10046","-4294957250","WSAEPFNOSUPPORT","The protocol family has not been configured into the system or no implementation for it exists." +"0000273F","10047","-4294957249","WSAEAFNOSUPPORT","An address incompatible with the requested protocol was used." +"00002740","10048","-4294957248","WSAEADDRINUSE","Only one usage of each socket address" +"00002741","10049","-4294957247","WSAEADDRNOTAVAIL","The requested address is not valid in its context." +"00002742","10050","-4294957246","WSAENETDOWN","A socket operation encountered a dead network." +"00002743","10051","-4294957245","WSAENETUNREACH","A socket operation was attempted to an unreachable network." +"00002744","10052","-4294957244","WSAENETRESET","The connection has been broken due to keep-alive activity detecting a failure while the operation was in progress." +"00002745","10053","-4294957243","WSAECONNABORTED","An established connection was aborted by the software in your host machine." +"00002746","10054","-4294957242","WSAECONNRESET","An existing connection was forcibly closed by the remote host." +"00002747","10055","-4294957241","WSAENOBUFS","An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full." +"00002748","10056","-4294957240","WSAEISCONN","A connect request was made on an already connected socket." +"00002749","10057","-4294957239","WSAENOTCONN","A request to send or receive data was disallowed because the socket is not connected and" +"0000274A","10058","-4294957238","WSAESHUTDOWN","A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call." +"0000274B","10059","-4294957237","WSAETOOMANYREFS","Too many references to some kernel object." +"0000274C","10060","-4294957236","WSAETIMEDOUT","A connection attempt failed because the connected party did not properly respond after a period of time - or established connection failed because connected host has failed to respond." +"0000274D","10061","-4294957235","WSAECONNREFUSED","No connection could be made because the target machine actively refused it." +"0000274E","10062","-4294957234","WSAELOOP","Cannot translate name." +"0000274F","10063","-4294957233","WSAENAMETOOLONG","Name component or name was too long." +"00002750","10064","-4294957232","WSAEHOSTDOWN","A socket operation failed because the destination host was down." +"00002751","10065","-4294957231","WSAEHOSTUNREACH","A socket operation was attempted to an unreachable host." +"00002752","10066","-4294957230","WSAENOTEMPTY","Cannot remove a directory that is not empty." +"00002753","10067","-4294957229","WSAEPROCLIM","A Windows Sockets implementation may have a limit on the number of applications that may use it simultaneously." +"00002754","10068","-4294957228","WSAEUSERS","Ran out of quota." +"00002755","10069","-4294957227","WSAEDQUOT","Ran out of disk quota." +"00002756","10070","-4294957226","WSAESTALE","File handle reference is no longer available." +"00002757","10071","-4294957225","WSAEREMOTE","Item is not available locally." +"0000276B","10091","-4294957205","WSASYSNOTREADY","WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable." +"0000276C","10092","-4294957204","WSAVERNOTSUPPORTED","The Windows Sockets version requested is not supported." +"0000276D","10093","-4294957203","WSANOTINITIALISED","Either the application has not called WSAStartup - or WSAStartup failed." +"00002775","10101","-4294957195","WSAEDISCON","Returned by WSARecv or WSARecvFrom to indicate the remote party has initiated a graceful shutdown sequence." +"00002776","10102","-4294957194","WSAENOMORE","No more results can be returned by WSALookupServiceNext." +"00002777","10103","-4294957193","WSAECANCELLED","A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled." +"00002778","10104","-4294957192","WSAEINVALIDPROCTABLE","The procedure call table is invalid." +"00002779","10105","-4294957191","WSAEINVALIDPROVIDER","The requested service provider is invalid." +"0000277A","10106","-4294957190","WSAEPROVIDERFAILEDINIT","The requested service provider could not be loaded or initialized." +"0000277B","10107","-4294957189","WSASYSCALLFAILURE","A system call has failed." +"0000277C","10108","-4294957188","WSASERVICE_NOT_FOUND","No such service is known. The service cannot be found in the specified name space." +"0000277D","10109","-4294957187","WSATYPE_NOT_FOUND","The specified class was not found." +"0000277E","10110","-4294957186","WSA_E_NO_MORE","No more results can be returned by WSALookupServiceNext." +"0000277F","10111","-4294957185","WSA_E_CANCELLED","A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled." +"00002780","10112","-4294957184","WSAEREFUSED","A database query failed because it was actively refused." +"000028A5","-4294956891","10405","NULL","" +"00002ABF","-4294956353","10943","NULL","" +"00002AF9","11001","-4294956295","WSAHOST_NOT_FOUND","No such host is known." +"00002AFA","11002","-4294956294","WSATRY_AGAIN","This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server." +"00002AFB","11003","-4294956293","WSANO_RECOVERY","A non-recoverable error occurred during a database lookup." +"00002AFC","11004","-4294956292","WSANO_DATA","The requested name is valid - but no data of the requested type was found." +"00002AFD","11005","-4294956291","WSA_QOS_RECEIVERS","At least one reserve has arrived." +"00002AFE","11006","-4294956290","WSA_QOS_SENDERS","At least one path has arrived." +"00002AFF","11007","-4294956289","WSA_QOS_NO_SENDERS","There are no senders." +"00002B00","11008","-4294956288","WSA_QOS_NO_RECEIVERS","There are no receivers." +"00002B01","11009","-4294956287","WSA_QOS_REQUEST_CONFIRMED","Reserve has been confirmed." +"00002B02","11010","-4294956286","WSA_QOS_ADMISSION_FAILURE","Error due to lack of resources." +"00002B03","11011","-4294956285","WSA_QOS_POLICY_FAILURE","Rejected for administrative reasons - bad credentials." +"00002B04","11012","-4294956284","WSA_QOS_BAD_STYLE","Unknown or conflicting style." +"00002B05","11013","-4294956283","WSA_QOS_BAD_OBJECT","Problem with some part of the filterspec or providerspecific buffer in general." +"00002B06","11014","-4294956282","WSA_QOS_TRAFFIC_CTRL_ERROR","Problem with some part of the flowspec." +"00002B07","11015","-4294956281","WSA_QOS_GENERIC_ERROR","General QOS error." +"00002B08","11016","-4294956280","WSA_QOS_ESERVICETYPE","An invalid or unrecognized service type was found in the flowspec." +"00002B09","11017","-4294956279","WSA_QOS_EFLOWSPEC","An invalid or inconsistent flowspec was found in the QOS structure." +"00002B0A","11018","-4294956278","WSA_QOS_EPROVSPECBUF","Invalid QOS provider-specific buffer." +"00002B0B","11019","-4294956277","WSA_QOS_EFILTERSTYLE","An invalid QOS filter style was used." +"00002B0C","11020","-4294956276","WSA_QOS_EFILTERTYPE","An invalid QOS filter type was used." +"00002B0D","11021","-4294956275","WSA_QOS_EFILTERCOUNT","An incorrect number of QOS FILTERSPECs were specified in the FLOWDESCRIPTOR." +"00002B0E","11022","-4294956274","WSA_QOS_EOBJLENGTH","An object with an invalid ObjectLength field was specified in the QOS provider-specific buffer." +"00002B0F","11023","-4294956273","WSA_QOS_EFLOWCOUNT","An incorrect number of flow descriptors was specified in the QOS structure." +"00002B10","11024","-4294956272","WSA_QOS_EUNKOWNPSOBJ","An unrecognized object was found in the QOS provider-specific buffer." +"00002B11","11025","-4294956271","WSA_QOS_EPOLICYOBJ","An invalid policy object was found in the QOS provider-specific buffer." +"00002B12","11026","-4294956270","WSA_QOS_EFLOWDESC","An invalid QOS flow descriptor was found in the flow descriptor list." +"00002B13","11027","-4294956269","WSA_QOS_EPSFLOWSPEC","An invalid or inconsistent flowspec was found in the QOS provider specific buffer." +"00002B14","11028","-4294956268","WSA_QOS_EPSFILTERSPEC","An invalid FILTERSPEC was found in the QOS provider-specific buffer." +"00002B15","11029","-4294956267","WSA_QOS_ESDMODEOBJ","An invalid shape discard mode object was found in the QOS provider specific buffer." +"00002B16","11030","-4294956266","WSA_QOS_ESHAPERATEOBJ","An invalid shaping rate object was found in the QOS provider-specific buffer." +"00002B17","11031","-4294956265","WSA_QOS_RESERVED_PETYPE","A reserved policy element was found in the QOS provider-specific buffer." +"00002B18","11032","-4294956264","WSA_SECURE_HOST_NOT_FOUND","No such host is known securely." +"00002B19","11033","-4294956263","WSA_IPSEC_NAME_POLICY_ERROR","Name based IPSEC policy could not be added." +"00002BBE","11198","-4294956098","NULL","" +"00002D49","11593","-4294955703","NULL","" +"00002DA4","11684","-4294955612","NULL","" +"00002DDC","11740","-4294955556","NULL","" +"00002EBD","11965","-4294955331","NULL","" +"00002ED7","11991","-4294955305","NULL","" +"00002EE1","12001","-4294955295","ERROR_INTERNET_OUT_OF_HANDLES","No more handles could be generated at this time." +"00002EE2","12002","-4294955294","ERROR_INTERNET_TIMEOUT","The request has timed out." +"00002EE3","12003","-4294955293","ERROR_INTERNET_EXTENDED_ERROR","An extended error was returned from the server. This is typically a string or buffer containing a verbose error message. Call InternetGetLastResponseInfo to retrieve the error text." +"00002EE4","12004","-4294955292","ERROR_INTERNET_INTERNAL_ERROR","An internal error has occurred." +"00002EE5","12005","-4294955291","ERROR_INTERNET_INVALID_URL","The URL is invalid." +"00002EE6","12006","-4294955290","ERROR_INTERNET_UNRECOGNIZED_SCHEME","The URL scheme could not be recognized - or is not supported." +"00002EE7","12007","-4294955289","ERROR_INTERNET_NAME_NOT_RESOLVED","The server name could not be resolved." +"00002EE8","12008","-4294955288","ERROR_INTERNET_PROTOCOL_NOT_FOUND","The requested protocol could not be located." +"00002EE9","12009","-4294955287","ERROR_INTERNET_INVALID_OPTION","A request to InternetQueryOption or InternetSetOption specified an invalid option value." +"00002EEA","12010","-4294955286","ERROR_INTERNET_BAD_OPTION_LENGTH","The length of an option supplied to InternetQueryOption or InternetSetOption is incorrect for the type of option specified." +"00002EEB","12011","-4294955285","ERROR_INTERNET_OPTION_NOT_SETTABLE","The requested option cannot be set - only queried." +"00002EEC","12012","-4294955284","ERROR_INTERNET_SHUTDOWN","WinINet support is being shut down or unloaded." +"00002EED","12013","-4294955283","ERROR_INTERNET_INCORRECT_USER_NAME","The request to connect and log on to an FTP server could not be completed because the supplied user name is incorrect." +"00002EEE","12014","-4294955282","ERROR_INTERNET_INCORRECT_PASSWORD","The request to connect and log on to an FTP server could not be completed because the supplied password is incorrect." +"00002EEF","12015","-4294955281","ERROR_INTERNET_LOGIN_FAILURE","The request to connect and log on to an FTP server failed." +"00002EF0","12016","-4294955280","ERROR_INTERNET_INVALID_OPERATION","The requested operation is invalid." +"00002EF1","12017","-4294955279","ERROR_INTERNET_OPERATION_CANCELLED","The operation was canceled - usually because the handle on which the request was operating was closed before the operation completed." +"00002EF2","12018","-4294955278","ERROR_INTERNET_INCORRECT_HANDLE_TYPE","The type of handle supplied is incorrect for this operation." +"00002EF3","12019","-4294955277","ERROR_INTERNET_INCORRECT_HANDLE_STATE","The requested operation cannot be carried out because the handle supplied is not in the correct state." +"00002EF4","12020","-4294955276","ERROR_INTERNET_NOT_PROXY_REQUEST","The request cannot be made via a proxy." +"00002EF5","12021","-4294955275","ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND","A required registry value could not be located." +"00002EF6","12022","-4294955274","ERROR_INTERNET_BAD_REGISTRY_PARAMETER","A required registry value was located but is an incorrect type or has an invalid value." +"00002EF7","12023","-4294955273","ERROR_INTERNET_NO_DIRECT_ACCESS","Direct network access cannot be made at this time." +"00002EF8","12024","-4294955272","ERROR_INTERNET_NO_CONTEXT","An asynchronous request could not be made because a zero context value was supplied." +"00002EF9","12025","-4294955271","ERROR_INTERNET_NO_CALLBACK","An asynchronous request could not be made because a callback function has not been set." +"00002EFA","12026","-4294955270","ERROR_INTERNET_REQUEST_PENDING","The required operation could not be completed because one or more requests are pending." +"00002EFB","12027","-4294955269","ERROR_INTERNET_INCORRECT_FORMAT","The format of the request is invalid." +"00002EFC","12028","-4294955268","ERROR_INTERNET_ITEM_NOT_FOUND","The requested item could not be located." +"00002EFD","12029","-4294955267","ERROR_INTERNET_CANNOT_CONNECT","The attempt to connect to the server failed." +"00002EFE","12030","-4294955266","ERROR_INTERNET_CONNECTION_ABORTED","The connection with the server has been terminated." +"00002EFF","12031","-4294955265","ERROR_INTERNET_CONNECTION_RESET","The connection with the server has been reset." +"00002F00","12032","-4294955264","ERROR_INTERNET_FORCE_RETRY","The function needs to redo the request." +"00002F01","12033","-4294955263","ERROR_INTERNET_INVALID_PROXY_REQUEST","The request to the proxy was invalid." +"00002F02","12034","-4294955262","ERROR_INTERNET_NEED_UI","A user interface or other blocking operation has been requested." +"00002F04","12036","-4294955260","ERROR_INTERNET_HANDLE_EXISTS","The request failed because the handle already exists." +"00002F05","12037","-4294955259","ERROR_INTERNET_SEC_CERT_DATE_INVALID","SSL certificate date that was received from the server is bad. The certificate is expired." +"00002F06","12038","-4294955258","ERROR_INTERNET_SEC_CERT_CN_INVALID","SSL certificate common name (host name field) is incorrect for example - if you entered www.server.com and the common name on the certificate says www.different.com." +"00002F07","12039","-4294955257","ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR","The application is moving from a non-SSL to an SSL connection because of a redirect." +"00002F08","12040","-4294955256","ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR","The application is moving from an SSL to an non-SSL connection because of a redirect." +"00002F09","12041","-4294955255","ERROR_INTERNET_MIXED_SECURITY","The content is not entirely secure. Some of the content being viewed may have come from unsecured servers." +"00002F0A","12042","-4294955254","ERROR_INTERNET_CHG_POST_IS_NON_SECURE","The application is posting and attempting to change multiple lines of text on a server that is not secure." +"00002F0B","12043","-4294955253","ERROR_INTERNET_POST_IS_NON_SECURE","The application is posting data to a server that is not secure." +"00002F0C","12044","-4294955252","ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED","The server is requesting client authentication." +"00002F0D","12045","-4294955251","ERROR_INTERNET_INVALID_CA","The function is unfamiliar with the Certificate Authority that generated the server's certificate." +"00002F0E","12046","-4294955250","ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP","Client authorization is not set up on this computer." +"00002F0F","12047","-4294955249","ERROR_INTERNET_ASYNC_THREAD_FAILED","The application could not start an asynchronous thread." +"00002F10","12048","-4294955248","ERROR_INTERNET_REDIRECT_SCHEME_CHANGE","The function could not handle the redirection - because the scheme changed (for example - HTTP to FTP)." +"00002F11","12049","-4294955247","ERROR_INTERNET_DIALOG_PENDING","Another thread has a password dialog box in progress." +"00002F12","12050","-4294955246","ERROR_INTERNET_RETRY_DIALOG","The dialog box should be retried." +"00002F14","12052","-4294955244","ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR","The data being submitted to an SSL connection is being redirected to a non-SSL connection." +"00002F15","12053","-4294955243","ERROR_INTERNET_INSERT_CDROM","The request requires a CD-ROM to be inserted in the CD-ROM drive to locate the resource requested." +"00002F16","12054","-4294955242","ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED","The requested resource requires Fortezza authentication." +"00002F17","12055","-4294955241","ERROR_INTERNET_SEC_CERT_ERRORS","The SSL certificate contains errors." +"00002F18","12056","-4294955240","ERROR_INTERNET_SEC_CERT_NO_REV","The SSL certificate was not revoked." +"00002F19","12057","-4294955239","ERROR_INTERNET_SEC_CERT_REV_FAILED","Revocation of the SSL certificate failed." +"00002F44","12100","-4294955196","ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN","Returned by the HttpRequest object if a requested operation cannot be performed before calling the Open method." +"00002F45","12101","-4294955195","ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND","Returned by the HttpRequest object if a requested operation cannot be performed before calling the Send method." +"00002F46","12102","-4294955194","ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND","Returned by the HttpRequest object if a requested operation cannot be performed after calling the Send method." +"00002F47","12103","-4294955193","ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN","Returned by the HttpRequest object if a specified option cannot be requested after the Open method has been called." +"00002F4E","12110","-4294955186","ERROR_FTP_TRANSFER_IN_PROGRESS","The requested operation cannot be made on the FTP session handle because an operation is already in progress." +"00002F4F","12111","-4294955185","ERROR_FTP_DROPPED","The FTP operation was not completed because the session was aborted." +"00002F50","12112","-4294955184","ERROR_FTP_NO_PASSIVE_MODE","Passive mode is not available on the server." +"00002F62","12130","-4294955166","ERROR_GOPHER_PROTOCOL_ERROR","An error was detected while parsing data returned from the Gopher server." +"00002F63","12131","-4294955165","ERROR_GOPHER_NOT_FILE","The request must be made for a file locator." +"00002F64","12132","-4294955164","ERROR_GOPHER_DATA_ERROR","An error was detected while receiving data from the Gopher server." +"00002F65","12133","-4294955163","ERROR_GOPHER_END_OF_DATA","The end of the data has been reached." +"00002F66","12134","-4294955162","ERROR_GOPHER_INVALID_LOCATOR","The supplied locator is not valid." +"00002F67","12135","-4294955161","ERROR_GOPHER_INCORRECT_LOCATOR_TYPE","The type of the locator is not correct for this operation." +"00002F68","12136","-4294955160","ERROR_GOPHER_NOT_GOPHER_PLUS","The requested operation can be made only against a Gopher+ server - or with a locator that specifies a Gopher+ operation." +"00002F69","12137","-4294955159","ERROR_GOPHER_ATTRIBUTE_NOT_FOUND","The requested attribute could not be located." +"00002F6A","12138","-4294955158","ERROR_GOPHER_UNKNOWN_LOCATOR","The locator type is unknown." +"00002F76","12150","-4294955146","ERROR_HTTP_HEADER_NOT_FOUND","The requested header could not be located." +"00002F77","12151","-4294955145","ERROR_HTTP_DOWNLEVEL_SERVER","The server did not return any headers." +"00002F78","12152","-4294955144","ERROR_HTTP_INVALID_SERVER_RESPONSE","The server response could not be parsed." +"00002F79","12153","-4294955143","ERROR_HTTP_INVALID_HEADER","The supplied header is invalid." +"00002F7A","12154","-4294955142","ERROR_HTTP_INVALID_QUERY_REQUEST","The request made to HttpQueryInfo is invalid." +"00002F7B","12155","-4294955141","ERROR_HTTP_HEADER_ALREADY_EXISTS","The header could not be added because it already exists." +"00002F7C","12156","-4294955140","ERROR_HTTP_REDIRECT_FAILED","The redirection failed because either the scheme changed (for example - HTTP to FTP) or all attempts made to redirect failed (default is five attempts)." +"00002F7D","12157","-4294955139","ERROR_INTERNET_SECURITY_CHANNEL_ERROR","The application experienced an internal error loading the SSL libraries." +"00002F7E","12158","-4294955138","ERROR_INTERNET_UNABLE_TO_CACHE_FILE","The function was unable to cache the file." +"00002F7F","12159","-4294955137","ERROR_INTERNET_TCPIP_NOT_INSTALLED","The required protocol stack is not loaded and the application cannot start WinSock." +"00002F80","12160","-4294955136","ERROR_HTTP_NOT_REDIRECTED","The HTTP request was not redirected." +"00002F81","12161","-4294955135","ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION","The HTTP cookie requires confirmation." +"00002F82","12162","-4294955134","ERROR_HTTP_COOKIE_DECLINED","The HTTP cookie was declined by the server." +"00002F83","12163","-4294955133","ERROR_INTERNET_DISCONNECTED","The Internet connection has been lost." +"00002F84","12164","-4294955132","ERROR_INTERNET_SERVER_UNREACHABLE","The website or server indicated is unreachable." +"00002F85","12165","-4294955131","ERROR_INTERNET_PROXY_SERVER_UNREACHABLE","The designated proxy server cannot be reached." +"00002F86","12166","-4294955130","ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT","There was an error in the automatic proxy configuration script." +"00002F87","12167","-4294955129","ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT","The automatic proxy configuration script could not be downloaded. The INTERNET_FLAG_MUST_CACHE_REQUEST flag was set." +"00002F88","12168","-4294955128","ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION","The redirection requires user confirmation." +"00002F89","12169","-4294955127","ERROR_INTERNET_SEC_INVALID_CERT","The SSL certificate is invalid." +"00002F8A","12170","-4294955126","ERROR_INTERNET_SEC_CERT_REVOKED","The SSL certificate was revoked." +"00002F8B","12171","-4294955125","ERROR_INTERNET_FAILED_DUETOSECURITYCHECK","The function failed due to a security check." +"00002F8C","12172","-4294955124","ERROR_INTERNET_NOT_INITIALIZED","Initialization of the WinINet API has not occurred. Indicates that a higher-level function - such as InternetOpen - has not been called yet." +"00002F8D","12173","-4294955123","ERROR_INTERNET_NEED_MSN_SSPI_PKG","Not currently implemented." +"00002F8E","12174","-4294955122","ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY","The MS-Logoff digest header has been returned from the website. This header specifically instructs the digest package to purge credentials for the associated realm. This error will only be returned if INTERNET_ERROR_MASK_LOGIN_FAILURE_DISPLAY_ENTITY_BODY option has been set; otherwise - ERROR_INTERNET_LOGIN_FAILURE is returned." +"00002F8F","12175","-4294955121","ERROR_INTERNET_DECODING_FAILED","WinINet failed to perform content decoding on the response. For more information - see the Content Encoding topic." +"00002F90","12176","-4294955120","ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE","The script type is not supported." +"00002F91","12177","-4294955119","ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR","An error was encountered while executing a script." +"00002F92","12178","-4294955118","ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR","Returned by WinHttpGetProxyForUrl when a proxy for the specified URL cannot be located." +"00002F93","12179","-4294955117","ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE","Indicates that a certificate is not valid for the requested usage (equivalent to CERT_E_WRONG_USAGE)." +"00002F94","12180","-4294955116","ERROR_WINHTTP_AUTODETECTION_FAILED","Returned by WinHttpDetectAutoProxyConfigUrl if WinHTTP was unable to discover the URL of the Proxy Auto-Configuration (PAC) file." +"00002F95","12181","-4294955115","ERROR_WINHTTP_HEADER_COUNT_EXCEEDED","Returned by WinHttpReceiveResponse when a larger number of headers were present in a response than WinHTTP could receive." +"00002F96","12182","-4294955114","ERROR_WINHTTP_HEADER_SIZE_OVERFLOW","Returned by WinHttpReceiveResponse when the size of headers received exceeds the limit for the request handle." +"00002F97","12183","-4294955113","ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW","Returned by WinHttpReceiveResponse when an overflow condition is encountered in the course of parsing chunked encoding." +"00002F98","12184","-4294955112","ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW","Returned when an incoming response exceeds an internal WinHTTP size limit." +"000032C8","13000","-4294954296","ERROR_IPSEC_QM_POLICY_EXISTS","The specified quick mode policy already exists." +"000032C9","13001","-4294954295","ERROR_IPSEC_QM_POLICY_NOT_FOUND","The specified quick mode policy was not found." +"000032CA","13002","-4294954294","ERROR_IPSEC_QM_POLICY_IN_USE","The specified quick mode policy is being used." +"000032CB","13003","-4294954293","ERROR_IPSEC_MM_POLICY_EXISTS","The specified main mode policy already exists." +"000032CC","13004","-4294954292","ERROR_IPSEC_MM_POLICY_NOT_FOUND","The specified main mode policy was not found." +"000032CD","13005","-4294954291","ERROR_IPSEC_MM_POLICY_IN_USE","The specified main mode policy is being used." +"000032CE","13006","-4294954290","ERROR_IPSEC_MM_FILTER_EXISTS","The specified main mode filter already exists." +"000032CF","13007","-4294954289","ERROR_IPSEC_MM_FILTER_NOT_FOUND","The specified main mode filter was not found." +"000032D0","13008","-4294954288","ERROR_IPSEC_TRANSPORT_FILTER_EXISTS","The specified transport mode filter already exists." +"000032D1","13009","-4294954287","ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND","The specified transport mode filter does not exist." +"000032D2","13010","-4294954286","ERROR_IPSEC_MM_AUTH_EXISTS","The specified main mode authentication list exists." +"000032D3","13011","-4294954285","ERROR_IPSEC_MM_AUTH_NOT_FOUND","The specified main mode authentication list was not found." +"000032D4","13012","-4294954284","ERROR_IPSEC_MM_AUTH_IN_USE","The specified main mode authentication list is being used." +"000032D5","13013","-4294954283","ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND","The specified default main mode policy was not found." +"000032D6","13014","-4294954282","ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND","The specified default main mode authentication list was not found." +"000032D7","13015","-4294954281","ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND","The specified default quick mode policy was not found." +"000032D8","13016","-4294954280","ERROR_IPSEC_TUNNEL_FILTER_EXISTS","The specified tunnel mode filter exists." +"000032D9","13017","-4294954279","ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND","The specified tunnel mode filter was not found." +"000032DA","13018","-4294954278","ERROR_IPSEC_MM_FILTER_PENDING_DELETION","The Main Mode filter is pending deletion." +"000032DB","13019","-4294954277","ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION","The transport filter is pending deletion." +"000032DC","13020","-4294954276","ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION","The tunnel filter is pending deletion." +"000032DD","13021","-4294954275","ERROR_IPSEC_MM_POLICY_PENDING_DELETION","The Main Mode policy is pending deletion." +"000032DE","13022","-4294954274","ERROR_IPSEC_MM_AUTH_PENDING_DELETION","The Main Mode authentication bundle is pending deletion." +"000032DF","13023","-4294954273","ERROR_IPSEC_QM_POLICY_PENDING_DELETION","The Quick Mode policy is pending deletion." +"000032E0","13024","-4294954272","WARNING_IPSEC_MM_POLICY_PRUNED","The Main Mode policy was successfully added - but some of the requested offers are not supported." +"000032E1","13025","-4294954271","WARNING_IPSEC_QM_POLICY_PRUNED","The Quick Mode policy was successfully added - but some of the requested offers are not supported." +"000035DD","-4294953507","13789","NULL","" +"000035E8","13800","-4294953496","ERROR_IPSEC_IKE_NEG_STATUS_BEGIN","ERROR_IPSEC_IKE_NEG_STATUS_BEGIN" +"000035EA","13802","-4294953494","ERROR_IPSEC_IKE_ATTRIB_FAIL","IKE security attributes are unacceptable." +"000035EB","13803","-4294953493","ERROR_IPSEC_IKE_NEGOTIATION_PENDING","IKE Negotiation in progress." +"000035EC","13804","-4294953492","ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR","General processing error." +"000035ED","13805","-4294953491","ERROR_IPSEC_IKE_TIMED_OUT","Negotiation timed out." +"000035EE","13806","-4294953490","ERROR_IPSEC_IKE_NO_CERT","IKE failed to find valid machine certificate. Contact your Network Security Administrator about installing a valid certificate in the appropriate Certificate Store." +"000035EF","13807","-4294953489","ERROR_IPSEC_IKE_SA_DELETED","IKE SA deleted by peer before establishment completed." +"000035F0","13808","-4294953488","ERROR_IPSEC_IKE_SA_REAPED","IKE SA deleted before establishment completed." +"000035F1","13809","-4294953487","ERROR_IPSEC_IKE_MM_ACQUIRE_DROP","Negotiation request sat in Queue too long." +"000035F2","13810","-4294953486","ERROR_IPSEC_IKE_QM_ACQUIRE_DROP","Negotiation request sat in Queue too long." +"000035F3","13811","-4294953485","ERROR_IPSEC_IKE_QUEUE_DROP_MM","Negotiation request sat in Queue too long." +"000035F4","13812","-4294953484","ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM","Negotiation request sat in Queue too long." +"000035F5","13813","-4294953483","ERROR_IPSEC_IKE_DROP_NO_RESPONSE","No response from peer." +"000035F6","13814","-4294953482","ERROR_IPSEC_IKE_MM_DELAY_DROP","Negotiation took too long." +"000035F7","13815","-4294953481","ERROR_IPSEC_IKE_QM_DELAY_DROP","Negotiation took too long." +"000035F8","13816","-4294953480","ERROR_IPSEC_IKE_ERROR","Unknown error occurred." +"000035F9","13817","-4294953479","ERROR_IPSEC_IKE_CRL_FAILED","Certificate Revocation Check failed." +"000035FA","13818","-4294953478","ERROR_IPSEC_IKE_INVALID_KEY_USAGE","Invalid certificate key usage." +"000035FB","13819","-4294953477","ERROR_IPSEC_IKE_INVALID_CERT_TYPE","Invalid certificate type." +"000035FC","13820","-4294953476","ERROR_IPSEC_IKE_NO_PRIVATE_KEY","IKE negotiation failed because the machine certificate used does not have a private key. IPsec certificates require a private key. Contact your Network Security administrator about replacing with a certificate that has a private key." +"000035FD","13821","-4294953475","ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY","Simultaneous rekeys were detected." +"000035FE","13822","-4294953474","ERROR_IPSEC_IKE_DH_FAIL","Failure in Diffie-Hellman computation." +"000035FF","13823","-4294953473","ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED","Don't know how to process critical payload." +"00003600","13824","-4294953472","ERROR_IPSEC_IKE_INVALID_HEADER","Invalid header." +"00003601","13825","-4294953471","ERROR_IPSEC_IKE_NO_POLICY","No policy configured." +"00003602","13826","-4294953470","ERROR_IPSEC_IKE_INVALID_SIGNATURE","Failed to verify signature." +"00003603","13827","-4294953469","ERROR_IPSEC_IKE_KERBEROS_ERROR","Failed to authenticate using Kerberos." +"00003604","13828","-4294953468","ERROR_IPSEC_IKE_NO_PUBLIC_KEY","Peer's certificate did not have a public key." +"00003605","13829","-4294953467","ERROR_IPSEC_IKE_PROCESS_ERR","Error processing error payload." +"00003606","13830","-4294953466","ERROR_IPSEC_IKE_PROCESS_ERR_SA","Error processing SA payload." +"00003607","13831","-4294953465","ERROR_IPSEC_IKE_PROCESS_ERR_PROP","Error processing Proposal payload." +"00003608","13832","-4294953464","ERROR_IPSEC_IKE_PROCESS_ERR_TRANS","Error processing Transform payload." +"00003609","13833","-4294953463","ERROR_IPSEC_IKE_PROCESS_ERR_KE","Error processing KE payload." +"0000360A","13834","-4294953462","ERROR_IPSEC_IKE_PROCESS_ERR_ID","Error processing ID payload." +"0000360B","13835","-4294953461","ERROR_IPSEC_IKE_PROCESS_ERR_CERT","Error processing Cert payload." +"0000360C","13836","-4294953460","ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ","Error processing Certificate Request payload." +"0000360D","13837","-4294953459","ERROR_IPSEC_IKE_PROCESS_ERR_HASH","Error processing Hash payload." +"0000360E","13838","-4294953458","ERROR_IPSEC_IKE_PROCESS_ERR_SIG","Error processing Signature payload." +"0000360F","13839","-4294953457","ERROR_IPSEC_IKE_PROCESS_ERR_NONCE","Error processing Nonce payload." +"00003610","13840","-4294953456","ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY","Error processing Notify payload." +"00003611","13841","-4294953455","ERROR_IPSEC_IKE_PROCESS_ERR_DELETE","Error processing Delete Payload." +"00003612","13842","-4294953454","ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR","Error processing VendorId payload." +"00003613","13843","-4294953453","ERROR_IPSEC_IKE_INVALID_PAYLOAD","Invalid payload received." +"00003614","13844","-4294953452","ERROR_IPSEC_IKE_LOAD_SOFT_SA","Soft SA loaded." +"00003615","13845","-4294953451","ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN","Soft SA torn down." +"00003616","13846","-4294953450","ERROR_IPSEC_IKE_INVALID_COOKIE","Invalid cookie received." +"00003617","13847","-4294953449","ERROR_IPSEC_IKE_NO_PEER_CERT","Peer failed to send valid machine certificate." +"00003618","13848","-4294953448","ERROR_IPSEC_IKE_PEER_CRL_FAILED","Certification Revocation check of peer's certificate failed." +"00003619","13849","-4294953447","ERROR_IPSEC_IKE_POLICY_CHANGE","New policy invalidated SAs formed with old policy." +"0000361A","13850","-4294953446","ERROR_IPSEC_IKE_NO_MM_POLICY","There is no available Main Mode IKE policy." +"0000361B","13851","-4294953445","ERROR_IPSEC_IKE_NOTCBPRIV","Failed to enabled TCB privilege." +"0000361C","13852","-4294953444","ERROR_IPSEC_IKE_SECLOADFAIL","Failed to load SECURITY.DLL." +"0000361D","13853","-4294953443","ERROR_IPSEC_IKE_FAILSSPINIT","Failed to obtain security function table dispatch address from SSPI." +"0000361E","13854","-4294953442","ERROR_IPSEC_IKE_FAILQUERYSSP","Failed to query Kerberos package to obtain max token size." +"0000361F","13855","-4294953441","ERROR_IPSEC_IKE_SRVACQFAIL","Failed to obtain Kerberos server credentials for ISAKMP/ERROR_IPSEC_IKE service. Kerberos authentication will not function. The most likely reason for this is lack of domain membership. This is normal if your computer is a member of a workgroup." +"00003620","13856","-4294953440","ERROR_IPSEC_IKE_SRVQUERYCRED","Failed to determine SSPI principal name for ISAKMP/ERROR_IPSEC_IKE service" +"00003621","13857","-4294953439","ERROR_IPSEC_IKE_GETSPIFAIL","Failed to obtain new SPI for the inbound SA from IPsec driver. The most common cause for this is that the driver does not have the correct filter. Check your policy to verify the filters." +"00003622","13858","-4294953438","ERROR_IPSEC_IKE_INVALID_FILTER","Given filter is invalid." +"00003623","13859","-4294953437","ERROR_IPSEC_IKE_OUT_OF_MEMORY","Memory allocation failed." +"00003624","13860","-4294953436","ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED","Failed to add Security Association to IPsec Driver. The most common cause for this is if the IKE negotiation took too long to complete. If the problem persists - reduce the load on the faulting machine." +"00003625","13861","-4294953435","ERROR_IPSEC_IKE_INVALID_POLICY","Invalid policy." +"00003626","13862","-4294953434","ERROR_IPSEC_IKE_UNKNOWN_DOI","Invalid DOI." +"00003627","13863","-4294953433","ERROR_IPSEC_IKE_INVALID_SITUATION","Invalid situation." +"00003628","13864","-4294953432","ERROR_IPSEC_IKE_DH_FAILURE","Diffie-Hellman failure." +"00003629","13865","-4294953431","ERROR_IPSEC_IKE_INVALID_GROUP","Invalid Diffie-Hellman group." +"0000362A","13866","-4294953430","ERROR_IPSEC_IKE_ENCRYPT","Error encrypting payload." +"0000362B","13867","-4294953429","ERROR_IPSEC_IKE_DECRYPT","Error decrypting payload." +"0000362C","13868","-4294953428","ERROR_IPSEC_IKE_POLICY_MATCH","Policy match error." +"0000362D","13869","-4294953427","ERROR_IPSEC_IKE_UNSUPPORTED_ID","Unsupported ID." +"0000362E","13870","-4294953426","ERROR_IPSEC_IKE_INVALID_HASH","Hash verification failed." +"0000362F","13871","-4294953425","ERROR_IPSEC_IKE_INVALID_HASH_ALG","Invalid hash algorithm." +"00003630","13872","-4294953424","ERROR_IPSEC_IKE_INVALID_HASH_SIZE","Invalid hash size." +"00003631","13873","-4294953423","ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG","Invalid encryption algorithm." +"00003632","13874","-4294953422","ERROR_IPSEC_IKE_INVALID_AUTH_ALG","Invalid authentication algorithm." +"00003633","13875","-4294953421","ERROR_IPSEC_IKE_INVALID_SIG","Invalid certificate signature." +"00003634","13876","-4294953420","ERROR_IPSEC_IKE_LOAD_FAILED","Load failed." +"00003635","13877","-4294953419","ERROR_IPSEC_IKE_RPC_DELETE","Deleted via RPC call." +"00003636","13878","-4294953418","ERROR_IPSEC_IKE_BENIGN_REINIT","Temporary state created to perform reinitialization. This is not a real failure." +"00003637","13879","-4294953417","ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY","The lifetime value received in the Responder Lifetime Notify is below the Windows 2000 configured minimum value. Please fix the policy on the peer machine." +"00003638","13880","-4294953416","ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION","The recipient cannot handle version of IKE specified in the header." +"00003639","13881","-4294953415","ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN","Key length in certificate is too small for configured security requirements." +"0000363A","13882","-4294953414","ERROR_IPSEC_IKE_MM_LIMIT","Max number of established MM SAs to peer exceeded." +"0000363B","13883","-4294953413","ERROR_IPSEC_IKE_NEGOTIATION_DISABLED","IKE received a policy that disables negotiation." +"0000363C","13884","-4294953412","ERROR_IPSEC_IKE_QM_LIMIT","Reached maximum quick mode limit for the main mode. New main mode will be started." +"0000363D","13885","-4294953411","ERROR_IPSEC_IKE_MM_EXPIRED","Main mode SA lifetime expired or peer sent a main mode delete." +"0000363E","13886","-4294953410","ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID","Main mode SA assumed to be invalid because peer stopped responding." +"0000363F","13887","-4294953409","ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH","Certificate doesn't chain to a trusted root in IPsec policy." +"00003640","13888","-4294953408","ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID","Received unexpected message ID." +"00003641","13889","-4294953407","ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD","Received invalid authentication offers." +"00003642","13890","-4294953406","ERROR_IPSEC_IKE_DOS_COOKIE_SENT","Sent DoS cookie notify to initiator." +"00003643","13891","-4294953405","ERROR_IPSEC_IKE_SHUTTING_DOWN","IKE service is shutting down." +"00003644","13892","-4294953404","ERROR_IPSEC_IKE_CGA_AUTH_FAILED","Could not verify binding between CGA address and certificate." +"00003645","13893","-4294953403","ERROR_IPSEC_IKE_PROCESS_ERR_NATOA","Error processing NatOA payload." +"00003646","13894","-4294953402","ERROR_IPSEC_IKE_INVALID_MM_FOR_QM","Parameters of the main mode are invalid for this quick mode." +"00003647","13895","-4294953401","ERROR_IPSEC_IKE_QM_EXPIRED","Quick mode SA was expired by IPsec driver." +"00003648","13896","-4294953400","ERROR_IPSEC_IKE_TOO_MANY_FILTERS","Too many dynamically added IKEEXT filters were detected." +"00003649","13897","-4294953399","ERROR_IPSEC_IKE_NEG_STATUS_END","ERROR_IPSEC_IKE_NEG_STATUS_END" +"0000364B","13899","-4294953397","ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE","Error in assigning inner IP address to initiator in tunnel mode." +"0000364C","13900","-4294953396","ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING","Require configuration payload missing." +"0000364D","13901","-4294953395","ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING","A negotiation running as the security principle who issued the connection is in progress." +"0000364E","13902","-4294953394","ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS","SA was deleted due to IKEv1/AuthIP co-existence suppress check." +"0000364F","13903","-4294953393","ERROR_IPSEC_IKE_RATELIMIT_DROP","Incoming SA request was dropped due to peer IP address rate limiting." +"00003650","13904","-4294953392","ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE","Peer does not support MOBIKE." +"00003651","13905","-4294953391","ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE","SA establishment is not authorized." +"00003652","13906","-4294953390","ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE","SA establishment is not authorized because there is not a sufficiently strong PKINIT-based credential." +"00003653","13907","-4294953389","ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY","SA establishment is not authorized. You may need to enter updated or different credentials such as a smartcard." +"00003654","13908","-4294953388","ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE","SA establishment is not authorized because there is not a sufficiently strong PKINIT-based credential. This might be related to certificate-to-account mapping failure for the SA." +"00003655","13909","-4294953387","ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END","ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END" +"00003657","13911","-4294953385","ERROR_IPSEC_SA_LIFETIME_EXPIRED","Packet was received on an IPsec SA whose lifetime has expired." +"00003658","13912","-4294953384","ERROR_IPSEC_WRONG_SA","Packet was received on an IPsec SA that does not match the packet characteristics." +"00003659","13913","-4294953383","ERROR_IPSEC_REPLAY_CHECK_FAILED","Packet sequence number replay check failed." +"0000365A","13914","-4294953382","ERROR_IPSEC_INVALID_PACKET","IPsec header and/or trailer in the packet is invalid." +"0000365B","13915","-4294953381","ERROR_IPSEC_INTEGRITY_CHECK_FAILED","IPsec integrity check failed." +"0000365C","13916","-4294953380","ERROR_IPSEC_CLEAR_TEXT_DROP","IPsec dropped a clear text packet." +"0000365D","13917","-4294953379","ERROR_IPSEC_AUTH_FIREWALL_DROP","IPsec dropped an incoming ESP packet in authenticated firewall mode. This drop is benign." +"0000365E","13918","-4294953378","ERROR_IPSEC_THROTTLE_DROP","IPsec dropped a packet due to DoS throttling." +"00003665","13925","-4294953371","ERROR_IPSEC_DOSP_BLOCK","IPsec DoS Protection matched an explicit block rule." +"00003666","13926","-4294953370","ERROR_IPSEC_DOSP_RECEIVED_MULTICAST","IPsec DoS Protection received an IPsec specific multicast packet which is not allowed." +"00003667","13927","-4294953369","ERROR_IPSEC_DOSP_INVALID_PACKET","IPsec DoS Protection received an incorrectly formatted packet." +"00003668","13928","-4294953368","ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED","IPsec DoS Protection failed to look up state." +"00003669","13929","-4294953367","ERROR_IPSEC_DOSP_MAX_ENTRIES","IPsec DoS Protection failed to create state because the maximum number of entries allowed by policy has been reached." +"0000366A","13930","-4294953366","ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED","IPsec DoS Protection received an IPsec negotiation packet for a keying module which is not allowed by policy." +"0000366B","13931","-4294953365","ERROR_IPSEC_DOSP_NOT_INSTALLED","IPsec DoS Protection has not been enabled." +"0000366C","13932","-4294953364","ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES","IPsec DoS Protection failed to create a per internal IP rate limit queue because the maximum number of queues allowed by policy has been reached." +"000036B0","14000","-4294953296","ERROR_SXS_SECTION_NOT_FOUND","The requested section was not present in the activation context." +"000036B1","14001","-4294953295","ERROR_SXS_CANT_GEN_ACTCTX","The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail." +"000036B2","14002","-4294953294","ERROR_SXS_INVALID_ACTCTXDATA_FORMAT","The application binding data format is invalid." +"000036B3","14003","-4294953293","ERROR_SXS_ASSEMBLY_NOT_FOUND","The referenced assembly is not installed on your system." +"000036B4","14004","-4294953292","ERROR_SXS_MANIFEST_FORMAT_ERROR","The manifest file does not begin with the required tag and format information." +"000036B5","14005","-4294953291","ERROR_SXS_MANIFEST_PARSE_ERROR","The manifest file contains one or more syntax errors." +"000036B6","14006","-4294953290","ERROR_SXS_ACTIVATION_CONTEXT_DISABLED","The application attempted to activate a disabled activation context." +"000036B7","14007","-4294953289","ERROR_SXS_KEY_NOT_FOUND","The requested lookup key was not found in any active activation context." +"000036B8","14008","-4294953288","ERROR_SXS_VERSION_CONFLICT","A component version required by the application conflicts with another component version already active." +"000036B9","14009","-4294953287","ERROR_SXS_WRONG_SECTION_TYPE","The type requested activation context section does not match the query API used." +"000036BA","14010","-4294953286","ERROR_SXS_THREAD_QUERIES_DISABLED","Lack of system resources has required isolated activation to be disabled for the current thread of execution." +"000036BB","14011","-4294953285","ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET","An attempt to set the process default activation context failed because the process default activation context was already set." +"000036BC","14012","-4294953284","ERROR_SXS_UNKNOWN_ENCODING_GROUP","The encoding group identifier specified is not recognized." +"000036BD","14013","-4294953283","ERROR_SXS_UNKNOWN_ENCODING","The encoding requested is not recognized." +"000036BE","14014","-4294953282","ERROR_SXS_INVALID_XML_NAMESPACE_URI","The manifest contains a reference to an invalid URI." +"000036BF","14015","-4294953281","ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED","The application manifest contains a reference to a dependent assembly which is not installed." +"000036C0","14016","-4294953280","ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED","The manifest for an assembly used by the application has a reference to a dependent assembly which is not installed." +"000036C1","14017","-4294953279","ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE","The manifest contains an attribute for the assembly identity which is not valid." +"000036C2","14018","-4294953278","ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE","The manifest is missing the required default namespace specification on the assembly element." +"000036C3","14019","-4294953277","ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE","The manifest has a default namespace specified on the assembly element but its value is not ""urn:schemas-microsoft-com:asm.v1""." +"000036C4","14020","-4294953276","ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT","The private manifest probed has crossed a path with an unsupported reparse point." +"000036C5","14021","-4294953275","ERROR_SXS_DUPLICATE_DLL_NAME","Two or more components referenced directly or indirectly by the application manifest have files by the same name." +"000036C6","14022","-4294953274","ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME","Two or more components referenced directly or indirectly by the application manifest have window classes with the same name." +"000036C7","14023","-4294953273","ERROR_SXS_DUPLICATE_CLSID","Two or more components referenced directly or indirectly by the application manifest have the same COM server CLSIDs." +"000036C8","14024","-4294953272","ERROR_SXS_DUPLICATE_IID","Two or more components referenced directly or indirectly by the application manifest have proxies for the same COM interface IIDs." +"000036C9","14025","-4294953271","ERROR_SXS_DUPLICATE_TLBID","Two or more components referenced directly or indirectly by the application manifest have the same COM type library TLBIDs." +"000036CA","14026","-4294953270","ERROR_SXS_DUPLICATE_PROGID","Two or more components referenced directly or indirectly by the application manifest have the same COM ProgIDs." +"000036CB","14027","-4294953269","ERROR_SXS_DUPLICATE_ASSEMBLY_NAME","Two or more components referenced directly or indirectly by the application manifest are different versions of the same component which is not permitted." +"000036CC","14028","-4294953268","ERROR_SXS_FILE_HASH_MISMATCH","A component's file does not match the verification information present in the component manifest." +"000036CD","14029","-4294953267","ERROR_SXS_POLICY_PARSE_ERROR","The policy manifest contains one or more syntax errors." +"000036CE","14030","-4294953266","ERROR_SXS_XML_E_MISSINGQUOTE","Manifest Parse Error : A string literal was expected - but no opening quote character was found." +"000036CF","14031","-4294953265","ERROR_SXS_XML_E_COMMENTSYNTAX","Manifest Parse Error : Incorrect syntax was used in a comment." +"000036D0","14032","-4294953264","ERROR_SXS_XML_E_BADSTARTNAMECHAR","Manifest Parse Error : A name was started with an invalid character." +"000036D1","14033","-4294953263","ERROR_SXS_XML_E_BADNAMECHAR","Manifest Parse Error : A name contained an invalid character." +"000036D2","14034","-4294953262","ERROR_SXS_XML_E_BADCHARINSTRING","Manifest Parse Error : A string literal contained an invalid character." +"000036D3","14035","-4294953261","ERROR_SXS_XML_E_XMLDECLSYNTAX","Manifest Parse Error : Invalid syntax for an xml declaration." +"000036D4","14036","-4294953260","ERROR_SXS_XML_E_BADCHARDATA","Manifest Parse Error : An Invalid character was found in text content." +"000036D5","14037","-4294953259","ERROR_SXS_XML_E_MISSINGWHITESPACE","Manifest Parse Error : Required white space was missing." +"000036D6","14038","-4294953258","ERROR_SXS_XML_E_EXPECTINGTAGEND","Manifest Parse Error : The character '>' was expected." +"000036D7","14039","-4294953257","ERROR_SXS_XML_E_MISSINGSEMICOLON","Manifest Parse Error : A semi colon character was expected." +"000036D8","14040","-4294953256","ERROR_SXS_XML_E_UNBALANCEDPAREN","Manifest Parse Error : Unbalanced parentheses." +"000036D9","14041","-4294953255","ERROR_SXS_XML_E_INTERNALERROR","Manifest Parse Error : Internal error." +"000036DA","14042","-4294953254","ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE","Manifest Parse Error : Whitespace is not allowed at this location." +"000036DB","14043","-4294953253","ERROR_SXS_XML_E_INCOMPLETE_ENCODING","Manifest Parse Error : End of file reached in invalid state for current encoding." +"000036DC","14044","-4294953252","ERROR_SXS_XML_E_MISSING_PAREN","Manifest Parse Error : Missing parenthesis." +"000036DD","14045","-4294953251","ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE","Manifest Parse Error : A single or double closing quote character" +"000036DE","14046","-4294953250","ERROR_SXS_XML_E_MULTIPLE_COLONS","Manifest Parse Error : Multiple colons are not allowed in a name." +"000036DF","14047","-4294953249","ERROR_SXS_XML_E_INVALID_DECIMAL","Manifest Parse Error : Invalid character for decimal digit." +"000036E0","14048","-4294953248","ERROR_SXS_XML_E_INVALID_HEXIDECIMAL","Manifest Parse Error : Invalid character for hexadecimal digit." +"000036E1","14049","-4294953247","ERROR_SXS_XML_E_INVALID_UNICODE","Manifest Parse Error : Invalid unicode character value for this platform." +"000036E2","14050","-4294953246","ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK","Manifest Parse Error : Expecting whitespace or '?'." +"000036E3","14051","-4294953245","ERROR_SXS_XML_E_UNEXPECTEDENDTAG","Manifest Parse Error : End tag was not expected at this location." +"000036E4","14052","-4294953244","ERROR_SXS_XML_E_UNCLOSEDTAG","Manifest Parse Error : The following tags were not closed: %1." +"000036E5","14053","-4294953243","ERROR_SXS_XML_E_DUPLICATEATTRIBUTE","Manifest Parse Error : Duplicate attribute." +"000036E6","14054","-4294953242","ERROR_SXS_XML_E_MULTIPLEROOTS","Manifest Parse Error : Only one top level element is allowed in an XML document." +"000036E7","14055","-4294953241","ERROR_SXS_XML_E_INVALIDATROOTLEVEL","Manifest Parse Error : Invalid at the top level of the document." +"000036E8","14056","-4294953240","ERROR_SXS_XML_E_BADXMLDECL","Manifest Parse Error : Invalid xml declaration." +"000036E9","14057","-4294953239","ERROR_SXS_XML_E_MISSINGROOT","Manifest Parse Error : XML document must have a top level element." +"000036EA","14058","-4294953238","ERROR_SXS_XML_E_UNEXPECTEDEOF","Manifest Parse Error : Unexpected end of file." +"000036EB","14059","-4294953237","ERROR_SXS_XML_E_BADPEREFINSUBSET","Manifest Parse Error : Parameter entities cannot be used inside markup declarations in an internal subset." +"000036EC","14060","-4294953236","ERROR_SXS_XML_E_UNCLOSEDSTARTTAG","Manifest Parse Error : Element was not closed." +"000036ED","14061","-4294953235","ERROR_SXS_XML_E_UNCLOSEDENDTAG","Manifest Parse Error : End element was missing the character '>'." +"000036EE","14062","-4294953234","ERROR_SXS_XML_E_UNCLOSEDSTRING","Manifest Parse Error : A string literal was not closed." +"000036EF","14063","-4294953233","ERROR_SXS_XML_E_UNCLOSEDCOMMENT","Manifest Parse Error : A comment was not closed." +"000036F0","14064","-4294953232","ERROR_SXS_XML_E_UNCLOSEDDECL","Manifest Parse Error : A declaration was not closed." +"000036F1","14065","-4294953231","ERROR_SXS_XML_E_UNCLOSEDCDATA","Manifest Parse Error : A CDATA section was not closed." +"000036F2","14066","-4294953230","ERROR_SXS_XML_E_RESERVEDNAMESPACE","Manifest Parse Error : The namespace prefix is not allowed to start with the reserved string ""xml""." +"000036F3","14067","-4294953229","ERROR_SXS_XML_E_INVALIDENCODING","Manifest Parse Error : System does not support the specified encoding." +"000036F4","14068","-4294953228","ERROR_SXS_XML_E_INVALIDSWITCH","Manifest Parse Error : Switch from current encoding to specified encoding not supported." +"000036F5","14069","-4294953227","ERROR_SXS_XML_E_BADXMLCASE","Manifest Parse Error : The name 'xml' is reserved and must be lower case." +"000036F6","14070","-4294953226","ERROR_SXS_XML_E_INVALID_STANDALONE","Manifest Parse Error : The standalone attribute must have the value 'yes' or 'no'." +"000036F7","14071","-4294953225","ERROR_SXS_XML_E_UNEXPECTED_STANDALONE","Manifest Parse Error : The standalone attribute cannot be used in external entities." +"000036F8","14072","-4294953224","ERROR_SXS_XML_E_INVALID_VERSION","Manifest Parse Error : Invalid version number." +"000036F9","14073","-4294953223","ERROR_SXS_XML_E_MISSINGEQUALS","Manifest Parse Error : Missing equals sign between attribute and attribute value." +"000036FA","14074","-4294953222","ERROR_SXS_PROTECTION_RECOVERY_FAILED","Assembly Protection Error : Unable to recover the specified assembly." +"000036FB","14075","-4294953221","ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT","Assembly Protection Error : The public key for an assembly was too short to be allowed." +"000036FC","14076","-4294953220","ERROR_SXS_PROTECTION_CATALOG_NOT_VALID","Assembly Protection Error : The catalog for an assembly is not valid - or does not match the assembly's manifest." +"000036FD","14077","-4294953219","ERROR_SXS_UNTRANSLATABLE_HRESULT","An HRESULT could not be translated to a corresponding Win32 error code." +"000036FE","14078","-4294953218","ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING","Assembly Protection Error : The catalog for an assembly is missing." +"000036FF","14079","-4294953217","ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE","The supplied assembly identity is missing one or more attributes which must be present in this context." +"00003700","14080","-4294953216","ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME","The supplied assembly identity has one or more attribute names that contain characters not permitted in XML names." +"00003701","14081","-4294953215","ERROR_SXS_ASSEMBLY_MISSING","The referenced assembly could not be found." +"00003702","14082","-4294953214","ERROR_SXS_CORRUPT_ACTIVATION_STACK","The activation context activation stack for the running thread of execution is corrupt." +"00003703","14083","-4294953213","ERROR_SXS_CORRUPTION","The application isolation metadata for this process or thread has become corrupt." +"00003704","14084","-4294953212","ERROR_SXS_EARLY_DEACTIVATION","The activation context being deactivated is not the most recently activated one." +"00003705","14085","-4294953211","ERROR_SXS_INVALID_DEACTIVATION","The activation context being deactivated is not active for the current thread of execution." +"00003706","14086","-4294953210","ERROR_SXS_MULTIPLE_DEACTIVATION","The activation context being deactivated has already been deactivated." +"00003707","14087","-4294953209","ERROR_SXS_PROCESS_TERMINATION_REQUESTED","A component used by the isolation facility has requested to terminate the process." +"00003708","14088","-4294953208","ERROR_SXS_RELEASE_ACTIVATION_CONTEXT","A kernel mode component is releasing a reference on an activation context." +"00003709","14089","-4294953207","ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY","The activation context of system default assembly could not be generated." +"0000370A","14090","-4294953206","ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE","The value of an attribute in an identity is not within the legal range." +"0000370B","14091","-4294953205","ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME","The name of an attribute in an identity is not within the legal range." +"0000370C","14092","-4294953204","ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE","An identity contains two definitions for the same attribute." +"0000370D","14093","-4294953203","ERROR_SXS_IDENTITY_PARSE_ERROR","The identity string is malformed. This may be due to a trailing comma - more than two unnamed attributes - missing attribute name or missing attribute value." +"0000370E","14094","-4294953202","ERROR_MALFORMED_SUBSTITUTION_STRING","A string containing localized substitutable content was malformed. Either a dollar sign" +"0000370F","14095","-4294953201","ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN","The public key token does not correspond to the public key specified." +"00003710","14096","-4294953200","ERROR_UNMAPPED_SUBSTITUTION_STRING","A substitution string had no mapping." +"00003711","14097","-4294953199","ERROR_SXS_ASSEMBLY_NOT_LOCKED","The component must be locked before making the request." +"00003712","14098","-4294953198","ERROR_SXS_COMPONENT_STORE_CORRUPT","The component store has been corrupted." +"00003713","14099","-4294953197","ERROR_ADVANCED_INSTALLER_FAILED","An advanced installer failed during setup or servicing." +"00003714","14100","-4294953196","ERROR_XML_ENCODING_MISMATCH","The character encoding in the XML declaration did not match the encoding used in the document." +"00003715","14101","-4294953195","ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT","The identities of the manifests are identical but their contents are different." +"00003716","14102","-4294953194","ERROR_SXS_IDENTITIES_DIFFERENT","The component identities are different." +"00003717","14103","-4294953193","ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT","The assembly is not a deployment." +"00003718","14104","-4294953192","ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY","The file is not a part of the assembly." +"00003719","14105","-4294953191","ERROR_SXS_MANIFEST_TOO_BIG","The size of the manifest exceeds the maximum allowed." +"0000371A","14106","-4294953190","ERROR_SXS_SETTING_NOT_REGISTERED","The setting is not registered." +"0000371B","14107","-4294953189","ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE","One or more required members of the transaction are not present." +"0000371C","14108","-4294953188","ERROR_SMI_PRIMITIVE_INSTALLER_FAILED","The SMI primitive installer failed during setup or servicing." +"0000371D","14109","-4294953187","ERROR_GENERIC_COMMAND_FAILED","A generic command executable returned a result that indicates failure." +"0000371E","14110","-4294953186","ERROR_SXS_FILE_HASH_MISSING","A component is missing file verification information in its manifest." +"000037A1","14241","-4294953055","NULL","" +"000037FA","14330","-4294952966","NULL","" +"0000384E","14414","-4294952882","NULL","" +"000038F5","14581","-4294952715","NULL","" +"0000399D","14749","-4294952547","NULL","" +"00003A5C","14940","-4294952356","NULL","" +"00003A98","15000","-4294952296","ERROR_EVT_INVALID_CHANNEL_PATH","The specified channel path is invalid." +"00003A99","15001","-4294952295","ERROR_EVT_INVALID_QUERY","The specified query is invalid." +"00003A9A","15002","-4294952294","ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND","The publisher metadata cannot be found in the resource." +"00003A9B","15003","-4294952293","ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND","The template for an event definition cannot be found in the resource" +"00003A9C","15004","-4294952292","ERROR_EVT_INVALID_PUBLISHER_NAME","The specified publisher name is invalid." +"00003A9D","15005","-4294952291","ERROR_EVT_INVALID_EVENT_DATA","The event data raised by the publisher is not compatible with the event template definition in the publisher's manifest." +"00003A9F","15007","-4294952289","ERROR_EVT_CHANNEL_NOT_FOUND","The specified channel could not be found. Check channel configuration." +"00003AA0","15008","-4294952288","ERROR_EVT_MALFORMED_XML_TEXT","The specified xml text was not well-formed. See Extended Error for more details." +"00003AA1","15009","-4294952287","ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL","The caller is trying to subscribe to a direct channel which is not allowed. The events for a direct channel go directly to a logfile and cannot be subscribed to." +"00003AA2","15010","-4294952286","ERROR_EVT_CONFIGURATION_ERROR","Configuration error." +"00003AA3","15011","-4294952285","ERROR_EVT_QUERY_RESULT_STALE","The query result is stale / invalid. This may be due to the log being cleared or rolling over after the query result was created. Users should handle this code by releasing the query result object and reissuing the query." +"00003AA4","15012","-4294952284","ERROR_EVT_QUERY_RESULT_INVALID_POSITION","Query result is currently at an invalid position." +"00003AA5","15013","-4294952283","ERROR_EVT_NON_VALIDATING_MSXML","Registered MSXML doesn't support validation." +"00003AA6","15014","-4294952282","ERROR_EVT_FILTER_ALREADYSCOPED","An expression can only be followed by a change of scope operation if it itself evaluates to a node set and is not already part of some other change of scope operation." +"00003AA7","15015","-4294952281","ERROR_EVT_FILTER_NOTELTSET","Can't perform a step operation from a term that does not represent an element set." +"00003AA8","15016","-4294952280","ERROR_EVT_FILTER_INVARG","Left hand side arguments to binary operators must be either attributes - nodes or variables and right hand side arguments must be constants." +"00003AA9","15017","-4294952279","ERROR_EVT_FILTER_INVTEST","A step operation must involve either a node test or - in the case of a predicate - an algebraic expression against which to test each node in the node set identified by the preceding node set can be evaluated." +"00003AAA","15018","-4294952278","ERROR_EVT_FILTER_INVTYPE","This data type is currently unsupported." +"00003AAB","15019","-4294952277","ERROR_EVT_FILTER_PARSEERR","A syntax error occurred at position %1!d!." +"00003AAC","15020","-4294952276","ERROR_EVT_FILTER_UNSUPPORTEDOP","This operator is unsupported by this implementation of the filter." +"00003AAD","15021","-4294952275","ERROR_EVT_FILTER_UNEXPECTEDTOKEN","The token encountered was unexpected." +"00003AAE","15022","-4294952274","ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL","The requested operation cannot be performed over an enabled direct channel. The channel must first be disabled before performing the requested operation." +"00003AAF","15023","-4294952273","ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE","Channel property %1!s! contains invalid value. The value has invalid type - is outside of valid range - can't be updated or is not supported by this type of channel." +"00003AB0","15024","-4294952272","ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE","Publisher property %1!s! contains invalid value. The value has invalid type - is outside of valid range - can't be updated or is not supported by this type of publisher." +"00003AB1","15025","-4294952271","ERROR_EVT_CHANNEL_CANNOT_ACTIVATE","The channel fails to activate." +"00003AB2","15026","-4294952270","ERROR_EVT_FILTER_TOO_COMPLEX","The xpath expression exceeded supported complexity. Please simplify it or split it into two or more simple expressions." +"00003AB3","15027","-4294952269","ERROR_EVT_MESSAGE_NOT_FOUND","the message resource is present but the message is not found in the string/message table." +"00003AB4","15028","-4294952268","ERROR_EVT_MESSAGE_ID_NOT_FOUND","The message id for the desired message could not be found." +"00003AB5","15029","-4294952267","ERROR_EVT_UNRESOLVED_VALUE_INSERT","The substitution string for insert index" +"00003AB6","15030","-4294952266","ERROR_EVT_UNRESOLVED_PARAMETER_INSERT","The description string for parameter reference" +"00003AB7","15031","-4294952265","ERROR_EVT_MAX_INSERTS_REACHED","The maximum number of replacements has been reached." +"00003AB8","15032","-4294952264","ERROR_EVT_EVENT_DEFINITION_NOT_FOUND","The event definition could not be found for event id" +"00003AB9","15033","-4294952263","ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND","The locale specific resource for the desired message is not present." +"00003ABA","15034","-4294952262","ERROR_EVT_VERSION_TOO_OLD","The resource is too old to be compatible." +"00003ABB","15035","-4294952261","ERROR_EVT_VERSION_TOO_NEW","The resource is too new to be compatible." +"00003ABC","15036","-4294952260","ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY","The channel at index %1!d! of the query can't be opened." +"00003ABD","15037","-4294952259","ERROR_EVT_PUBLISHER_DISABLED","The publisher has been disabled and its resource is not available. This usually occurs when the publisher is in the process of being uninstalled or upgraded." +"00003ABE","15038","-4294952258","ERROR_EVT_FILTER_OUT_OF_RANGE","Attempted to create a numeric type that is outside of its valid range." +"00003AE8","15080","-4294952216","ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE","The subscription fails to activate." +"00003AE9","15081","-4294952215","ERROR_EC_LOG_DISABLED","The log of the subscription is in disabled state - and cannot be used to forward events to. The log must first be enabled before the subscription can be activated." +"00003AEA","15082","-4294952214","ERROR_EC_CIRCULAR_FORWARDING","When forwarding events from local machine to itself - the query of the subscription can't contain target log of the subscription." +"00003AEB","15083","-4294952213","ERROR_EC_CREDSTORE_FULL","The credential store that is used to save credentials is full." +"00003AEC","15084","-4294952212","ERROR_EC_CRED_NOT_FOUND","The credential used by this subscription can't be found in credential store." +"00003AED","15085","-4294952211","ERROR_EC_NO_ACTIVE_CHANNEL","No active channel is found for the query." +"00003AFC","15100","-4294952196","ERROR_MUI_FILE_NOT_FOUND","The resource loader failed to find MUI file." +"00003AFD","15101","-4294952195","ERROR_MUI_INVALID_FILE","The resource loader failed to load MUI file because the file fail to pass validation." +"00003AFE","15102","-4294952194","ERROR_MUI_INVALID_RC_CONFIG","The RC Manifest is corrupted with garbage data or unsupported version or missing required item." +"00003AFF","15103","-4294952193","ERROR_MUI_INVALID_LOCALE_NAME","The RC Manifest has invalid culture name." +"00003B00","15104","-4294952192","ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME","The RC Manifest has invalid ultimatefallback name." +"00003B01","15105","-4294952191","ERROR_MUI_FILE_NOT_LOADED","The resource loader cache doesn't have loaded MUI entry." +"00003B02","15106","-4294952190","ERROR_RESOURCE_ENUM_USER_STOP","User stopped resource enumeration." +"00003B03","15107","-4294952189","ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED","UI language installation failed." +"00003B04","15108","-4294952188","ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME","Locale installation failed." +"00003B06","15110","-4294952186","ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE","A resource does not have default or neutral value." +"00003B07","15111","-4294952185","ERROR_MRM_INVALID_PRICONFIG","Invalid PRI config file." +"00003B08","15112","-4294952184","ERROR_MRM_INVALID_FILE_TYPE","Invalid file type." +"00003B09","15113","-4294952183","ERROR_MRM_UNKNOWN_QUALIFIER","Unknown qualifier." +"00003B0A","15114","-4294952182","ERROR_MRM_INVALID_QUALIFIER_VALUE","Invalid qualifier value." +"00003B0B","15115","-4294952181","ERROR_MRM_NO_CANDIDATE","No Candidate found." +"00003B0C","15116","-4294952180","ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE","The ResourceMap or NamedResource has an item that does not have default or neutral resource.." +"00003B0D","15117","-4294952179","ERROR_MRM_RESOURCE_TYPE_MISMATCH","Invalid ResourceCandidate type." +"00003B0E","15118","-4294952178","ERROR_MRM_DUPLICATE_MAP_NAME","Duplicate Resource Map." +"00003B0F","15119","-4294952177","ERROR_MRM_DUPLICATE_ENTRY","Duplicate Entry." +"00003B10","15120","-4294952176","ERROR_MRM_INVALID_RESOURCE_IDENTIFIER","Invalid Resource Identifier." +"00003B11","15121","-4294952175","ERROR_MRM_FILEPATH_TOO_LONG","Filepath too long." +"00003B12","15122","-4294952174","ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE","Unsupported directory type." +"00003B16","15126","-4294952170","ERROR_MRM_INVALID_PRI_FILE","Invalid PRI File." +"00003B17","15127","-4294952169","ERROR_MRM_NAMED_RESOURCE_NOT_FOUND","NamedResource Not Found." +"00003B1F","15135","-4294952161","ERROR_MRM_MAP_NOT_FOUND","ResourceMap Not Found." +"00003B20","15136","-4294952160","ERROR_MRM_UNSUPPORTED_PROFILE_TYPE","Unsupported MRT profile type." +"00003B21","15137","-4294952159","ERROR_MRM_INVALID_QUALIFIER_OPERATOR","Invalid qualifier operator." +"00003B22","15138","-4294952158","ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE","Unable to determine qualifier value or qualifier value has not been set." +"00003B23","15139","-4294952157","ERROR_MRM_AUTOMERGE_ENABLED","Automerge is enabled in the PRI file." +"00003B24","15140","-4294952156","ERROR_MRM_TOO_MANY_RESOURCES","Too many resources defined for package." +"00003B60","15200","-4294952096","ERROR_MCA_INVALID_CAPABILITIES_STRING","The monitor returned a DDC/CI capabilities string that did not comply with the ACCESS.bus 3.0 - DDC/CI 1.1 or MCCS 2 Revision 1 specification." +"00003B61","15201","-4294952095","ERROR_MCA_INVALID_VCP_VERSION","The monitor's VCP Version" +"00003B62","15202","-4294952094","ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION","The monitor does not comply with the MCCS specification it claims to support." +"00003B63","15203","-4294952093","ERROR_MCA_MCCS_VERSION_MISMATCH","The MCCS version in a monitor's mccs_ver capability does not match the MCCS version the monitor reports when the VCP Version" +"00003B64","15204","-4294952092","ERROR_MCA_UNSUPPORTED_MCCS_VERSION","The Monitor Configuration API only works with monitors that support the MCCS 1.0 specification - MCCS 2.0 specification or the MCCS 2.0 Revision 1 specification." +"00003B65","15205","-4294952091","ERROR_MCA_INTERNAL_ERROR","An internal Monitor Configuration API error occurred." +"00003B66","15206","-4294952090","ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED","The monitor returned an invalid monitor technology type. CRT - Plasma and LCD" +"00003B67","15207","-4294952089","ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE","The caller of SetMonitorColorTemperature specified a color temperature that the current monitor did not support. This error implies that the monitor violated the MCCS 2.0 or MCCS 2.0 Revision 1 specification." +"00003B92","15250","-4294952046","ERROR_AMBIGUOUS_SYSTEM_DEVICE","The requested system device cannot be identified due to multiple indistinguishable devices potentially matching the identification criteria." +"00003BC3","15299","-4294951997","ERROR_SYSTEM_DEVICE_NOT_FOUND","The requested system device cannot be found." +"00003BC4","15300","-4294951996","ERROR_HASH_NOT_SUPPORTED","Hash generation for the specified hash version and hash type is not enabled on the server." +"00003BC5","15301","-4294951995","ERROR_HASH_NOT_PRESENT","The hash requested from the server is not available or no longer valid." +"00003BD9","15321","-4294951975","ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED","The secondary interrupt controller instance that manages the specified interrupt is not registered." +"00003BDA","15322","-4294951974","ERROR_GPIO_CLIENT_INFORMATION_INVALID","The information supplied by the GPIO client driver is invalid." +"00003BDB","15323","-4294951973","ERROR_GPIO_VERSION_NOT_SUPPORTED","The version specified by the GPIO client driver is not supported." +"00003BDC","15324","-4294951972","ERROR_GPIO_INVALID_REGISTRATION_PACKET","The registration packet supplied by the GPIO client driver is not valid." +"00003BDD","15325","-4294951971","ERROR_GPIO_OPERATION_DENIED","The requested operation is not supported for the specified handle." +"00003BDE","15326","-4294951970","ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE","The requested connect mode conflicts with an existing mode on one or more of the specified pins." +"00003BDF","15327","-4294951969","ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED","The interrupt requested to be unmasked is not masked." +"00003C28","15400","-4294951896","ERROR_CANNOT_SWITCH_RUNLEVEL","The requested run level switch cannot be completed successfully." +"00003C29","15401","-4294951895","ERROR_INVALID_RUNLEVEL_SETTING","The service has an invalid run level setting. The run level for a service must not be higher than the run level of its dependent services." +"00003C2A","15402","-4294951894","ERROR_RUNLEVEL_SWITCH_TIMEOUT","The requested run level switch cannot be completed successfully since one or more services will not stop or restart within the specified timeout." +"00003C2B","15403","-4294951893","ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT","A run level switch agent did not respond within the specified timeout." +"00003C2C","15404","-4294951892","ERROR_RUNLEVEL_SWITCH_IN_PROGRESS","A run level switch is currently in progress." +"00003C2D","15405","-4294951891","ERROR_SERVICES_FAILED_AUTOSTART","One or more services failed to start during the service startup phase of a run level switch." +"00003C8D","15501","-4294951795","ERROR_COM_TASK_STOP_PENDING","The task stop request cannot be completed immediately since task needs more time to shutdown." +"00003CF0","15600","-4294951696","ERROR_INSTALL_OPEN_PACKAGE_FAILED","Package could not be opened." +"00003CF1","15601","-4294951695","ERROR_INSTALL_PACKAGE_NOT_FOUND","Package was not found." +"00003CF2","15602","-4294951694","ERROR_INSTALL_INVALID_PACKAGE","Package data is invalid." +"00003CF3","15603","-4294951693","ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED","Package failed updates - dependency or conflict validation." +"00003CF4","15604","-4294951692","ERROR_INSTALL_OUT_OF_DISK_SPACE","There is not enough disk space on your computer. Please free up some space and try again." +"00003CF5","15605","-4294951691","ERROR_INSTALL_NETWORK_FAILURE","There was a problem downloading your product." +"00003CF6","15606","-4294951690","ERROR_INSTALL_REGISTRATION_FAILURE","Package could not be registered." +"00003CF7","15607","-4294951689","ERROR_INSTALL_DEREGISTRATION_FAILURE","Package could not be unregistered." +"00003CF8","15608","-4294951688","ERROR_INSTALL_CANCEL","User cancelled the install request." +"00003CF9","15609","-4294951687","ERROR_INSTALL_FAILED","Install failed. Please contact your software vendor." +"00003CFA","15610","-4294951686","ERROR_REMOVE_FAILED","Removal failed. Please contact your software vendor." +"00003CFB","15611","-4294951685","ERROR_PACKAGE_ALREADY_EXISTS","The provided package is already installed - and reinstallation of the package was blocked. Check the AppXDeployment-Server event log for details." +"00003CFC","15612","-4294951684","ERROR_NEEDS_REMEDIATION","The application cannot be started. Try reinstalling the application to fix the problem." +"00003CFD","15613","-4294951683","ERROR_INSTALL_PREREQUISITE_FAILED","A Prerequisite for an install could not be satisfied." +"00003CFE","15614","-4294951682","ERROR_PACKAGE_REPOSITORY_CORRUPTED","The package repository is corrupted." +"00003CFF","15615","-4294951681","ERROR_INSTALL_POLICY_FAILURE","To install this application you need either a Windows developer license or a sideloading-enabled system." +"00003D00","15616","-4294951680","ERROR_PACKAGE_UPDATING","The application cannot be started because it is currently updating." +"00003D01","15617","-4294951679","ERROR_DEPLOYMENT_BLOCKED_BY_POLICY","The package deployment operation is blocked by policy. Please" +"00003D02","15618","-4294951678","ERROR_PACKAGES_IN_USE","The package could not be installed because resources it modifies are currently in use." +"00003D03","15619","-4294951677","ERROR_RECOVERY_FILE_CORRUPT","The package could not be recovered because necessary data for recovery have been corrupted." +"00003D04","15620","-4294951676","ERROR_INVALID_STAGED_SIGNATURE","The signature is invalid. To register in developer mode - AppxSignature.p7x and AppxBlockMap.xml must be valid or should not be present." +"00003D05","15621","-4294951675","ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED","An error occurred while deleting the package's previously existing application data." +"00003D06","15622","-4294951674","ERROR_INSTALL_PACKAGE_DOWNGRADE","The package could not be installed because a higher version of this package is already installed." +"00003D07","15623","-4294951673","ERROR_SYSTEM_NEEDS_REMEDIATION","An error in a system binary was detected. Try refreshing the PC to fix the problem." +"00003D08","15624","-4294951672","ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN","A corrupted CLR NGEN binary was detected on the system." +"00003D09","15625","-4294951671","ERROR_RESILIENCY_FILE_CORRUPT","The operation could not be resumed because necessary data for recovery have been corrupted." +"00003D0A","15626","-4294951670","ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING","The package could not be installed because the Windows Firewall service is not running. Enable the Windows Firewall service and try again." +"00003D16","-4294951658","15638","NULL","" +"00003D54","15700","-4294951596","APPMODEL_ERROR_NO_PACKAGE","The process has no package identity." +"00003D55","15701","-4294951595","APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT","The package runtime information is corrupted." +"00003D56","15702","-4294951594","APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT","The package identity is corrupted." +"00003D57","15703","-4294951593","APPMODEL_ERROR_NO_APPLICATION","The process has no application identity." +"00003DB8","15800","-4294951496","ERROR_STATE_LOAD_STORE_FAILED","Loading the state store failed." +"00003DB9","15801","-4294951495","ERROR_STATE_GET_VERSION_FAILED","Retrieving the state version for the application failed." +"00003DBA","15802","-4294951494","ERROR_STATE_SET_VERSION_FAILED","Setting the state version for the application failed." +"00003DBB","15803","-4294951493","ERROR_STATE_STRUCTURED_RESET_FAILED","Resetting the structured state of the application failed." +"00003DBC","15804","-4294951492","ERROR_STATE_OPEN_CONTAINER_FAILED","State Manager failed to open the container." +"00003DBD","15805","-4294951491","ERROR_STATE_CREATE_CONTAINER_FAILED","State Manager failed to create the container." +"00003DBE","15806","-4294951490","ERROR_STATE_DELETE_CONTAINER_FAILED","State Manager failed to delete the container." +"00003DBF","15807","-4294951489","ERROR_STATE_READ_SETTING_FAILED","State Manager failed to read the setting." +"00003DC0","15808","-4294951488","ERROR_STATE_WRITE_SETTING_FAILED","State Manager failed to write the setting." +"00003DC1","15809","-4294951487","ERROR_STATE_DELETE_SETTING_FAILED","State Manager failed to delete the setting." +"00003DC2","15810","-4294951486","ERROR_STATE_QUERY_SETTING_FAILED","State Manager failed to query the setting." +"00003DC3","15811","-4294951485","ERROR_STATE_READ_COMPOSITE_SETTING_FAILED","State Manager failed to read the composite setting." +"00003DC4","15812","-4294951484","ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED","State Manager failed to write the composite setting." +"00003DC5","15813","-4294951483","ERROR_STATE_ENUMERATE_CONTAINER_FAILED","State Manager failed to enumerate the containers." +"00003DC6","15814","-4294951482","ERROR_STATE_ENUMERATE_SETTINGS_FAILED","State Manager failed to enumerate the settings." +"00003DC7","15815","-4294951481","ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED","The size of the state manager composite setting value has exceeded the limit." +"00003DC8","15816","-4294951480","ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED","The size of the state manager setting value has exceeded the limit." +"00003DC9","15817","-4294951479","ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED","The length of the state manager setting name has exceeded the limit." +"00003DCA","15818","-4294951478","ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED","The length of the state manager container name has exceeded the limit." +"00003DE1","15841","-4294951455","ERROR_API_UNAVAILABLE","This API cannot be used in the context of the caller's application type." +"00003E44","15940","-4294951356","NULL","" +"00004016","16406","-4294950890","NULL","" +"000040CF","16591","-4294950705","NULL","" +"00004146","16710","-4294950586","NULL","" +"000041F4","16884","-4294950412","NULL","" +"0000433D","17213","-4294950083","NULL","" +"000043F9","17401","-4294949895","NULL","" +"000044CC","17612","-4294949684","NULL","" +"0000471E","18206","-4294949090","NULL","" +"00004808","18440","-4294948856","NULL","" +"00004910","18704","-4294948592","NULL","" +"00004966","18790","-4294948506","NULL","" +"00004A65","19045","-4294948251","NULL","" +"00004BF9","19449","-4294947847","NULL","" +"00004CC2","19650","-4294947646","NULL","" +"00004D2D","19757","-4294947539","NULL","" +"00004DB8","19896","-4294947400","NULL","" +"00004E90","20112","-4294947184","NULL","" +"00004FA2","20386","-4294946910","NULL","" +"00005112","20754","-4294946542","NULL","" +"000051CF","20943","-4294946353","NULL","" +"00005249","21065","-4294946231","NULL","" +"00005299","21145","-4294946151","NULL","" +"0000530C","21260","-4294946036","NULL","" +"000053C4","21444","-4294945852","NULL","" +"00005492","21650","-4294945646","NULL","" +"00005542","21826","-4294945470","NULL","" +"0000556E","21870","-4294945426","NULL","" +"000055BC","21948","-4294945348","NULL","" +"00005636","22070","-4294945226","NULL","" +"00005812","22546","-4294944750","NULL","" +"00005844","22596","-4294944700","NULL","" +"000058F7","22775","-4294944521","NULL","" +"00005A6A","23146","-4294944150","NULL","" +"00005AA5","23205","-4294944091","NULL","" +"00005C0E","23566","-4294943730","NULL","" +"00005FE9","24553","-4294942743","NULL","" +"00006056","24662","-4294942634","NULL","" +"0000626E","25198","-4294942098","NULL","" +"000062B6","25270","-4294942026","NULL","" +"0000651F","25887","-4294941409","NULL","" +"000065AA","26026","-4294941270","NULL","" +"000065BA","26042","-4294941254","NULL","" +"00006F50","28496","-4294938800","NULL","" +"00007052","28754","-4294938542","NULL","" +"00007190","29072","-4294938224","NULL","" +"00007617","30231","-4294937065","NULL","" +"00007747","30535","-4294936761","NULL","" +"00007865","30821","-4294936475","NULL","" +"00007B86","31622","-4294935674","NULL","" +"00007C12","31762","-4294935534","NULL","" +"00007C78","31864","-4294935432","NULL","" +"00007CE1","31969","-4294935327","NULL","" +"00007D12","32018","-4294935278","NULL","" +"00007DFF","32255","-4294935041","NULL","" +"00007EC9","32457","-4294934839","NULL","" +"00007F83","32643","-4294934653","NULL","" +"00007FCC","32716","-4294934580","NULL","" +"0000F06A","61546","-4294905750","NULL","" +"0000F06B","61547","-4294905749","NULL","" +"0000F0DA","61658","-4294905638","NULL","" +"0000174B","5963","-4294961333","ERROR_CLUSTER_DISK_NOT_CONNECTED","This value was also named ERROR_CLUSTER_NODE_EVACUATION_IN_PROGRESS" +"00240001","2359297","-4292607999","WU_S_SERVICE_STOP","Service stopped" +"00240002","2359298","-4292607998","WU_S_SELFUPDATE","Agent selfupdates" +"00240003","2359299","-4292607997","WU_S_UPDATE_ERROR","Overall operation completed but error occurred while processing one or more specified updates." +"00240004","2359300","-4292607996","WU_S_MARKED_FOR_DISCONNECT","The caller attempted to disconnect an operation but the operation is busy calling back so the callback is marked for disconnect later" +"00240005","2359301","-4292607995","WU_S_REBOOT_REQUIRED","The system needs to be rebooted to complete installation." +"00240006","2359302","-4292607994","SUS_S_ALREADY_INSTALLED","The update to be installed is already installed" +"00240007","2359303","-4292607993","WU_S_ALREADY_UNINSTALLED","The update to be uninstalled is already not installed." +"00240008","2359304","-4292607992","WU_S_ALREADY_DOWNLOADED","The update to be downloaded is already downloaded" +"80000007","-2147483641","2147483655","E_ABORT","" +"80004001","-2147467263","2147500033","E_NOTIMPL","" +"80004002","-2147467262","2147500034","E_Nointerface","" +"80004003","-2147467261","2147500035","E_Pointer","Invalid pointer" +"80004004","-2147467260","2147500036","E_ABORT","Operation Aborted" +"80004005","-2147467259","2147500037","E_Fail","Resource missing" +"80004015","-2147467243","2147500053","CO_E_WRONG_SERVER_IDENTITY","" +"80008083","-2147450749","2147516547","","Missing dependency on `Microsoft.DotNet.DesktopRuntime.8`." +"8000FFFF","-2147418113","2147549183","E_UNEXPECTED","" +"80010100","-2147417856","2147549440","RPC_E_SYS_CALL_FAILED","" +"80010105","-2147417851","2147549445","RPC_E_Serverfault","" +"80010108","-2147417848","2147549448","RPC_E_Disconnected","" +"8004005","134234117","-4160733179","","Resource missing" +"80040154","-2147221164","2147746132","REGDB_E_CLASSNOTREG","" +"800401F3","-2147221005","2147746291","CO_E_Classstring","" +"800401FD","-2147220995","2147746301","CO_E_Objnotconnected","Object is not connected to server" +"80040206","-2147220986","2147746310","EVENT_E_INTERNALERROR","There will be event messages in Application/System log regarding the errors." +"80070001","-2147024895","2147942401","ERROR_INVALID_FUNCTION","Windows cannot install required files." +"80070002","-2147024894","2147942402","ERROR_FILE_NOT_FOUND","The System cannot find the file specified" +"80070003","-2147024893","2147942403","COR_E_DIRECTORYNOTFOUND","The specified path couldn't be found - ALLUSERSPROFILE Microsoft network dir doesn't exist" +"80070005","-2147024891","2147942405","ERROR_ACCESS_DENIED","The authentication method is not supported." +"80070006","-2147024890","2147942406","E_Handle","Handle not valid error" +"80070008","-2147024888","2147942408","ERROR_NOT_ENOUGH_MEMORY","The system is out of memory." +"8007000B","-2147024885","2147942411","COR_E_BADIMAGEFORMAT","The format of the DLL or executable being loaded is invalid" +"8007000D","-2147024883","2147942413","Error_invalid_data","" +"8007000E","-2147024882","2147942414","E_OUTOFMEMORY","" +"80070017","-2147024873","2147942423","ERROR_CRC","Data error (cyclic redundancy check)." +"8007001F","-2147024865","2147942431","ERROR_GEN_FAILURE","A device attached to the system is not functioning" +"80070020","-2147024864","2147942432","STIERR_SHARING_VIOLATION","The process cannot access the file because it is being used by another process" +"8007003","-4160720893","134246403","","The request is not supported." +"80070032","-2147024846","2147942450","ERROR_NOT_SUPPORTED","" +"80070050","-2147024816","2147942480","ERROR_FILE_EXISTS","" +"80070052","-2147024814","2147942482","ERROR_CANNOT_MAKE","The directory or file cannot be created" +"80070057","-2147024809","2147942487","ERROR_INVALID_PARAMETER - E_INVALIDARG","One or more arguments are not valid error - Invalid proxy server name was specified in the user-IE settings and hence WinhttpSetProxySettings call fails with E_INVALIDARG error. " +"80070070","-2147024784","2147942512","ERROR_DISK_FULL","There is not enough space on the disk" +"8007007A","-2147024774","2147942522","ERROR_INSUFFICIENT_BUFFER","" +"8007007B","-2147024773","2147942523","STIERR_INVALID_DEVICE_NAME","" +"8007007E","-2147024770","2147942526","ERROR_MOD_NOT_FOUND","The specified module could not be found." +"8007007F","-2147024769","2147942527","ERROR_PROC_NOT_FOUND","The specified procedure could not be found." +"80070080","-2147024768","2147942528","ERROR_WAIT_NO_CHILDREN","There are no child processes to wait for" +"800700A1","-2147024735","2147942561","ERROR_BAD_PATHNAME","" +"800700B6","-2147024714","2147942582","ERROR_INVALID_ORDINAL","" +"800700C1","-2147024703","2147942593","ERROR_BAD_EXE_FORMAT","is not a valid Win32 application" +"800700D8","-2147024680","2147942616","","This version of this application is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher. (Should this have `Architecture: x64`?)" +"800700E7","-2147024665","2147942631","Error_Pipe_Busy","All pipe instances are busy" +"80070103","-2147024637","2147942659","ERROR_NO_MORE_ITEMS:","" +"8007010B","-2147024629","2147942667","ERROR_DIRECTORY","The directory name is invalid" +"8007012E","-2147024594","2147942702","Error_Disk_Too_Fragmented","" +"800701E7","-2147024409","2147942887","Error_Invalid_Address","" +"800703E3","-2147023901","2147943395","Error_Operation_Aborted","The I/O operation has been aborted because of either a thread exit or an application request" +"800703E5","-2147023899","2147943397","ERROR_IO_PENDING","" +"800703E6","-2147023898","2147943398","Error_Noaccess to memory location","Invalid access to memory location" +"800703E7","-2147023897","2147943399","Error_Swaperror","Error performing inpage operation" +"800703EB","-2147023893","2147943403","Error_Can_Not_Complete","Cannot complete this function" +"800703ED","-2147023891","2147943405","ERROR_UNRECOGNIZED_VOLUME","The volume does not contain a recognized file system" +"800703F0","-2147023888","2147943408","ERROR_NO_TOKEN","An attempt was made to reference a token that does not exist" +"8007041D","-2147023843","2147943453","ERROR_SERVICE_REQUEST_TIMEOUT","The service did not respond to the start or control request in a timely fashion" +"8007041E","-2147023842","2147943454","Error_Service_No_Thread","A thread could not be created for this service" +"8007041F","-2147023841","2147943455","ERROR_SERVICE_DATABASE_LOCKED","The service database is locked" +"80070422","-2147023838","2147943458","ERROR_SERVICE_DISABLED","The service cannot be started." +"80070424","-2147023836","2147943460","ERROR_SERVICE_DOES_NOT_EXIST","The specified service does not exist as an installed service." +"80070426","-2147023834","2147943462","ERROR_SERVICE_NOT_ACTIVE","The service has not been started" +"8007042B","-2147023829","2147943467","ERROR_PROCESS_ABORTED","" +"8007042C","-2147023828","2147943468","Error_Service_Dependency_Fail","" +"80070433","-2147023821","2147943475","ERROR_SERVICE_DEPENDENCY_DELETED","" +"80070437","-2147023817","2147943479","Error_Different_Service_Account","" +"8007043B","-2147023813","2147943483","ERROR_SERVICE_NOT_IN_EXE","The executable program that this service is configured to run does not implement the service. netsvcs registry value in HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Svchost registry key should contain the service names that can be run in that service host. On XP and Windows 2003" +"8007045A","-2147023782","2147943514","ERROR_DLL_INIT_FAILED","" +"8007045B","-2147023781","2147943515","ERROR_SHUTDOWN_IN_PROGRESS","" +"80070490","-2147023728","2147943568","E_PROP_ID_UNSUPPORTED","Permission denied / [Problem initializing or using session variables] or Element not found" +"800704C7","-2147023673","2147943623","ERROR_CANCELLED","Cancelled by user" +"800704DD","-2147023651","2147943645","Error_Not_Logged_On to network","" +"80070502","-2147023614","2147943682","Error_Stack_Buffer_Overrun","The system detected an overrun of a stack-based buffer in this application" +"80070570","-2147023504","2147943792","ERROR_FILE_CORRUPT","" +"8007057F","-2147023489","2147943807","Error_Cannot_Find_WND_Class","Cannot find windows class" +"8007058D","-2147023475","2147943821","Error_Control_ID_Not_Found","" +"800705AA","-2147023446","2147943850","ERROR_NO_SYSTEM_RESOURCE","Insufficient system resources exist to complete the requested service" +"800705AD","-2147023443","2147943853","Error_Working_Set_Quota","Insufficient quota to complete the requested service" +"800705AF","-2147023441","2147943855","ERROR_COMMITMENT_LIMIT","The paging file is too small for this operation to complete" +"800705B4","-2147023436","2147943860","Error_Timeout","" +"80070643","-2147023293","2147944003","ERROR_INSTALL_FAILURE","" +"80070652","-2147023278","2147944018","ERROR_INSTALL_ALREADY_RUNNING ErrorClientUpdateInProgress","" +"80070661","-2147023263","2147944033","ERROR_INSTALL_PLATFORM_UNSUPPORTED","This installation package is not supported by this processor type. Does this manifest have `Architecture: x86`? It might need to be `x64`." +"8007066A","-2147023254","2147944042","Error_Patch_Target_Not_Found","The program to be upgraded may be missing or the patch may upgrade a different version of the program" +"800706A6","-2147023194","2147944102","RPC_S_Invalid_Binding","Terminal Services optional component is installed on the machine" +"800706B5","-2147023179","2147944117","RPC_S_Unknown_IF","Eventlog service is not running." +"800706BA","-2147023174","2147944122","RPC_S_SERVER_UNAVAILABLE","" +"800706BB","-2147023173","2147944123","RPC_S_SERVER_TOO_BUSY","The RPC server is too busy to complete this operation" +"800706BE","-2147023170","2147944126","RPC_S_CALL_FAILED","" +"800706BF","-2147023169","2147944127","PRC_S_Call_Failed_DNE","" +"800706C6","-2147023162","2147944134","RPC_S_Invalid_Bound","The array bounds are invalid" +"800706F7","-2147023113","2147944183","RPC_X_Bad_Stub_Data","This can occur after a control selfupdate that has not fully completed and requires a reboot. The controls may need to be reregistered." +"80070704","-2147023100","2147944196","Error_Unknown_Port","" +"80070BC2","-2147021886","2147945410","ErrorControlRebootRequired","" +"8007276B","-2147014805","2147952491","WSASYSNOTREADY","The description of WSASYSNOTREADY says WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable. It seems that something is wrong with networking components on the system." +"8007277B","-2147014789","2147952507","WSASYSCALLFAILURE","A system call that should never fail has failed" +"80072AF9","-2147013895","2147953401","WSAHOST_NOT_FOUND","" +"80072AFC","-2147013892","2147953404","WSANO_DATA","" +"80072EE2","-2147012894","2147954402","ERROR_INTERNET_TIMEOUT","The request has timed out." +"80072EE4","-2147012892","2147954404","ERROR_INTERNET_INTERNAL_ERROR","An internal error has occurred." +"80072EE5","-2147012891","2147954405","Error_Internet_Invalid_URL","" +"80072EE6","-2147012890","2147954406","ERROR_INTERNET_UNRECOGNIZED_SCHEME","The URL scheme could not be recognized or is not supported." +"80072EE7","-2147012889","2147954407","ERROR_INTERNET_NAME_NOT_RESOLVED","The server name or address could not be resolved." +"80072EEF","-2147012881","2147954415","ERROR_INTERNET_LOGIN_FAILURE","" +"80072EF1","-2147012879","2147954417","ERROR_INTERNET_OPERATION_CANCELLED","" +"80072EF2","-2147012878","2147954418","Error_Internet_Incorrect_handle_type","" +"80072EF3","-2147012877","2147954419","Error_Internet_Incorrect_Handle_State","" +"80072EFD","-2147012867","2147954429","ERROR_INTERNET_CANNOT_CONNECT","The attempt to connect to the server failed. The operation timed out. Network or Firewall Error." +"80072EFE","-2147012866","2147954430","ERROR_INTERNET_CONNECTION_ABORTED","The connection with the server has been terminated." +"80072F0C","-2147012852","2147954444","Error_Internet_Client_Auth_Cert_Needed","" +"80072F0D","-2147012851","2147954445","ERROR_INTERNET_INVALID_CA","" +"80072F76","-2147012746","2147954550","ERROR_HTTP_HEADER_NOT_FOUND","Network or Firewall Error. The requested header could not be located." +"80072F78","-2147012744","2147954552","ERROR_HTTP_INVALID_SERVER_RESPONSE","The server response could not be parsed." +"80072F7C","-2147012740","2147954556","ERROR_HTTP_REDIRECT_FAILED","" +"80072F83","-2147012733","2147954563","ERROR_INTERNET_DISCONNECTED","" +"80072F8C","-2147012724","2147954572","ERROR_INTERNET_NOT_INITIALIZED","" +"80072F8F","-2147012721","2147954575","ERROR_INTERNET_SECURE_FAILURE ErrorClockWrong","One or more errors were found in the Secure Sockets Layer (SSL) certificate sent by the server." +"800736B1","-2147010895","2147956401","Error_SXS_Cant_gen_Actctx","This application has failed to start because the application configuration is incorrect." +"80073CF3","2147958003","-2147009293","","Error Installing Dependency - Windows cannot install this package because it depends on a framework (version) that could not be found." +"8007F001","-2146963455","2148003841","STATUS_FAILED_LANGUAGE_TYPE","Setup cannot update your files because the language\installed on your system is different from the update language." +"8007F002","-2146963454","2148003842","STATUS_CHECKED_FREE_MISMATCH","Setup cannot update a checked (debug) system with a free (retail) version of " +"8007F003","-2146963453","2148003843","STATUS_NOT_ENOUGH_SPACE","There is not enough disk space on to install . Setup requires a minimum of d additional megabytes of free space or if you also want to archive the files for uninstall" +"8007F004","-2146963452","2148003844","STATUS_INSUFFICIENT_PRIVS","You do not have permission to update . Please" +"8007F007","-2146963449","2148003847","STATUS_CANT_FIND_INF","Setup could not find the update.inf file needed to update your system." +"8007F008","-2146963448","2148003848","STATUS_UPDATE_SUCCESSFUL","has been updated. Remove any disks from the floppy disk drives and choose OK to restart your computer. If you change or add any components to your system" +"8007F009","-2146963447","2148003849","STATUS_UPDATE_UNSUCCESSFUL","installation did not complete." +"8007F00A","-2146963446","2148003850","STATUS_SHUTDOWN_UNSUCCESSFUL","Setup was unable to shutdown system. Please shutdown your system manually." +"8007F00B","-2146963445","2148003851","STATUS_FILE_NOT_FOUND_IN_SETUP_LOG","Could not locate entry for HAL.DLL in SETUP.LOG to determine type of HAL to update." +"8007F00C","-2146963444","2148003852","STATUS_INVALID_INF_FILE","The file is not correct." +"8007F00D","-2146963443","2148003853","STATUS_USER_CANCELLED","Setup canceled." +"8007F00E","-2146963442","2148003854","STATUS_PLATFORM_MISMATCH","This is for a different hardware platform." +"8007F00F","-2146963441","2148003855","STR_CAPTION","Setup" +"8007F010","-2146963440","2148003856","STR_WARNCAPTION","Setup Warning" +"8007F011","-2146963439","2148003857","STR_ERRCAPTION","Setup Error" +"8007F012","-2146963438","2148003858","STR_FAILED_TO_DELETE_OR_RENAME","The file is open or in use by another application. Close all other applications and then click Retry." +"8007F013","-2146963437","2148003859","STR_FAILED_TO_SAVE_REGISTRY","Setup could not backup registry key to file" +"8007F014","-2146963436","2148003860","STR_FAILED_TO_READ_REGISTRY","Setup could not backup registry value" +"8007F015","-2146963435","2148003861","STR_ASK_DIRTY_UNINSTALL","Select 'OK' to undo the changes that have been made" +"8007F016","-2146963434","2148003862","STR_LEAVING_DIRTY","has been partially updated and may not work properly." +"8007F017","-2146963433","2148003863","STR_ARE_YOU_SURE_CANCEL","Are you sure you want to cancel?" +"8007F018","-2146963432","2148003864","STR_SOURCE_MEDIA_NAME_UNINSTALL","Uninstall Directory" +"8007F019","-2146963431","2148003865","STR_SOURCE_MEDIA_NAME","Uninstall Directory" +"8007F01A","-2146963430","2148003866","STR_SOURCE_MEDIA_NAME_SYSTEM","System Files" +"8007F01B","-2146963429","2148003867","STR_INST_HOTFIX","Setup found hotfixes on your system. Would you like to install these hotfixes now?" +"8007F01C","-2146963428","2148003868","STR_UNINST_ALREADY_CREATED","You have already created an Uninstall directory. Doing this again will overwrite your current uninstall directory. Are you sure you want to do this?" +"8007F01D","-2146963427","2148003869","STR_OEM_FILE","Your computer vendor installed this file on your computer. Do you want Setup to replace this file?" +"8007F01E","-2146963426","2148003870","STR_CATALOG_INSTALL_FAILED","Failed to install catalog files." +"8007F01F","-2146963425","2148003871","STR_ADD_REGISTRY_FAILED","Failed to add registry entry." +"8007F020","-2146963424","2148003872","STATUS_BUILD_VERSION_MISMATCH","Setup has detected that the build version of the system installed does not match the update you are applying to it. You can only install this update only on Build %d ." +"8007F021","-2146963423","2148003873","STATUS_SP_VERSION_GREATER","The version of Windows you have installed does not match the update you are trying to install." +"8007F022","-2146963422","2148003874","STATUS_CANT_SPAWN_HOTFIX","Setup could not start the hotfix installation program." +"8007F023","-2146963421","2148003875","STATUS_CANT_FIND_TAG","Setup could not locate the files." +"8007F024","-2146963420","2148003876","STATUS_OVERWRITE_UNINSTALL","WARNING: You have chosen to overwrite your existing uninstall: If you continue" +"8007F026","-2146963418","2148003878","STATUS_WININET_LOAD_FAILED","This Web-based update requires Internet Explorer 3.0 or later. For instructions on how to download a version of this update that does not require a Web connection during installation" +"8007F027","-2146963417","2148003879","STATUS_CANT_INSTALL_SP_ON_DTC","This has not been qualified by your hardware vendor for installation on this copy of Datacenter Server. Please contact your hardware vendor for additional information on obtaining a that has been qualified for your system configuration." +"8007F028","-2146963416","2148003880","STATUS_NECESSARY_FILES_NOT_PRESENT","Not all files necessary to perform an integrated installation are present." +"8007F029","-2146963415","2148003881","STATUS_SPOOLER_NOT_STARTED","Cannot install . The Print Spooler service is not started." +"8007F02A","-2146963414","2148003882","STATUS_MUST_RESTART_FIRST","The system must be restarted before installing the " +"8007F02B","-2146963413","2148003883","STATUS_NOT_ENOUGH_WITH_UNINST","You do not have enough free disk space on % to archive the uninstall files. To install with backup files for uninstall" +"8007F02C","-2146963412","2148003884","STATUS_CANT_FIND_RSAENHS","Unable to locate RSAENHS.DLL in the update directory" +"8007F02D","-2146963411","2148003885","STATUS_CANT_FIND_ENCININF","Unable to locate UPDENCIN.INF in the update directory" +"8007F02E","-2146963410","2148003886","STATUS_CANT_FIND_ENCTSINF","Unable to locate UPDENCTS.INF in the update directory" +"8007F02F","-2146963409","2148003887","STATUS_ENCINST_PROCESS_FAILED","High encryption ENCINST process failed." +"8007F030","-2146963408","2148003888","STATUS_ENCINST_UPGRADE_FAILED","High encryption upgrade failed." +"8007F031","-2146963407","2148003889","STR_USAGE_UPDATE","AVAILABLE SWITCHES: [/help] [/quiet] [/passive] [/uninstall] [/norestart] [/forcerestart] [/l] [/n] [/o] [/f] [/integrate:] [/d:] /help Displays this message SETUP MODES /quiet Quiet mode (no user interaction or displ" +"8007F032","-2146963406","2148003890","STR_BUILDING_CAB","Creating file" +"8007F033","-2146963405","2148003891","STR_DOWNLOADING","Downloading files and patches" +"8007F034","-2146963404","2148003892","STR_ARCHIVING_FILES","Backing up files" +"8007F035","-2146963403","2148003893","STR_ARCHIVING_FILE","Backing up files" +"8007F036","-2146963402","2148003894","STR_INSTALLING_FILES","Installing files" +"8007F037","-2146963401","2148003895","STR_INSTALLING_FILE","Installing files" +"8007F038","-2146963400","2148003896","STR_FINISHING_INSTALL","Finishing installation" +"8007F039","-2146963399","2148003897","STR_WELCOME_LINE","Welcome to the Setup Wizard" +"8007F03A","-2146963398","2148003898","STR_RESTART","&Restart" +"8007F03B","-2146963397","2148003899","STR_COMPLETE","installation is complete. You must restart your computer for the update to take effect." +"8007F03D","-2146963395","2148003901","STR_CANT_CANCEL_NOW","Please wait while Setup updates your system files." +"8007F03E","-2146963394","2148003902","STR_MUST_ACCEPT_TIP","Must accept license agreement before installing" +"8007F03F","-2146963393","2148003903","STR_NEED_TO_CONNECT","Setup needs to connect to the internet now to download files and patches for installation." +"8007F040","-2146963392","2148003904","STR_READY_TO_REPLACE","Setup is ready to begin replacing system files." +"8007F041","-2146963391","2148003905","STR_CONNECTING","Connecting to" +"8007F042","-2146963390","2148003906","STR_CONNECTED","Connected to" +"8007F043","-2146963389","2148003907","STR_ESTIMATE","estimate" +"8007F044","-2146963388","2148003908","STR_MINUTES","minutes" +"8007F045","-2146963387","2148003909","STR_SECONDS","seconds" +"8007F046","-2146963386","2148003910","STR_DOWNLOAD_REMAINING","KB remaining" +"8007F047","-2146963385","2148003911","STR_DOWNLOAD_COMPLETE","Download complete" +"8007F048","-2146963384","2148003912","STR_DOWNLOAD_UNPACKING","Download complete" +"8007F049","-2146963383","2148003913","STR_DOWNLOAD_FAILURE","The following error occurred while Setup attempted to download the files from the Internet:" +"8007F04A","-2146963382","2148003914","STR_UNKNOWN_ERROR","The server did not respond (error code %d)." +"8007F04B","-2146963381","2148003915","STR_INTERNET_TIMEOUT","The server did not respond." +"8007F04C","-2146963380","2148003916","STR_DOWNLOAD_RETRY_TEXT","If this error persists after you have clicked Retry several times" +"8007F04D","-2146963379","2148003917","STR_HASH_FAILURE_1","Setup determined that the following downloaded file is corrupt:" +"8007F04E","-2146963378","2148003918","STR_HASH_FAILURE_2","Setup determined that the following downloaded files are corrupt:" +"8007F04F","-2146963377","2148003919","STR_DOWNLOAD_GIVE_UP","Setup was unable to download all the files necessary for installation." +"8007F050","-2146963376","2148003920","STR_COPYING_FILE_DELAYED","Copied file (delayed)" +"8007F051","-2146963375","2148003921","STR_ERROR_COPY_SLIP","An error has occurred copying files from the Service Pack share to the distribution share." +"8007F052","-2146963374","2148003922","STR_SLIPSTREAM_SUCCESSFUL","Integrated install has completed successfully." +"8007F053","-2146963373","2148003923","STR_SLIPSTREAM_FAILED","Failed to copy some or all of the files necessary for integrated install. Please check that: a) No network or copy errors occurred during the integration process b) The format of the destination directory is correct. The files to be integrated" +"8007F054","-2146963372","2148003924","STR_SVCPACK_CMD","Service Pack started with following command line" +"8007F055","-2146963371","2148003925","STR_DOWNLOAD_SIZE","bytes downloaded." +"8007F056","-2146963370","2148003926","STR_NO_SVCPACK","No Service Pack" +"8007F057","-2146963369","2148003927","STR_MISSING_FILE","The file is missing from the installation. The file must be present for Setup to continue. Press OK to cancel Setup." +"8007F058","-2146963368","2148003928","STR_READY_TO_ENCINST","Setup is ready to begin upgrade of uninstall to high encryption." +"8007F059","-2146963367","2148003929","STR_SLIPSTREAM_LANGUAGE_MISMATCH","Integrated install failed. The language type or platform for the destination directory and must be the same." +"8007F05A","-2146963366","2148003930","STATUS_CANT_OPEN_LOG","Error opening file" +"8007F05B","-2146963365","2148003931","STR_SKIPPING_FILE","Skipped copying file:" +"8007F05C","-2146963364","2148003932","STR_COPY_FILE","Copying file" +"8007F05D","-2146963363","2148003933","STR_SVC_INFO","In order to successfully complete this installation" +"8007F05E","-2146963362","2148003934","STR_SVC_STOP_ERR","Setup was unable to stop the following service" +"8007F05F","-2146963361","2148003935","STR_SVC_ASKREBOOT","A reboot will probably be required in order to successfully complete this installation. Do you wish to continue?" +"8007F060","-2146963360","2148003936","STR_SVC_START_ERR","Setup was unable to re-start the following service: ." +"8007F061","-2146963359","2148003937","ERR_STD_PREFIX","Setup encountered an error:" +"8007F062","-2146963358","2148003938","STR_COPYING_FILE","Copied file:" +"8007F063","-2146963357","2148003939","STR_SPAWNING_PROCESS","Starting process:" +"8007F064","-2146963356","2148003940","STATUS_INVALID_VER_FILE","The update.ver file is not correct." +"8007F065","-2146963355","2148003941","STR_DOMESTIC_TAG1","US/Canada Only" +"8007F066","-2146963354","2148003942","STR_DOMESTIC_TAG2","Domestic Use Only" +"8007F067","-2146963353","2148003943","STR_DOMESTIC_TAG3","US and Canada Use Only" +"8007F06A","-2146963350","2148003946","STATUS_SP_VERSION_GREATER_1","Setup has detected that the Service Pack version of the system installed is newer than the update you are applying to it. You can only install this update on Service Pack." +"8007F06B","-2146963349","2148003947","STATUS_SP_VERSION_GREATER_2","Setup has detected that the Service Pack version of this system is newer than the update you are applying. There is no need to install this update." +"8007F06C","-2146963348","2148003948","STATUS_FPNW_FIXUP_FAILED","Setup failed to access or correctly modify your SETUP.LOG file." +"8007F06D","-2146963347","2148003949","STATUS_WRONG_PLATFORM","The version of software you are running does not match the system you are running it on." +"8007F06E","-2146963346","2148003950","STATUS_FAILURE_COPYING_FILES","Failed to completely copy all of the updated files." +"8007F06F","-2146963345","2148003951","STATUS_FAILED_TO_SET_DIR","Failed to set the directory." +"8007F070","-2146963344","2148003952","STATUS_SETUP_ERROR","An error in updating your system has occurred." +"8007F075","-2146963339","2148003957","STATUS_SUCCESS_NOREBOOT","has been updated. You must reboot for these changes to take effect. If you change or add any components to your system" +"8007F076","-2146963338","2148003958","STATUS_SP_VERSION_LESSER","Setup has detected that the version of the Service Pack installed on your system is lower than what is necessary to apply this hotfix. At minimum" +"8007F078","-2146963336","2148003960","STATUS_NO_UNINSTALL_AVAILABLE","You cannot uninstall" +"8007F07A","-2146963334","2148003962","STATUS_SUCCESS_NOREBOOTNEC","has been updated. If you change or add any components to your system" +"8007F07B","-2146963333","2148003963","STATUS_UNINST_NOREBOOTNEC","Hotfix successfully uninstalled." +"8007F07C","-2146963332","2148003964","STR_SECURITY_PROVIDER_WARNING","The existing file contains High Encryption security" +"8007F07F","-2146963329","2148003967","STR_UNINST_HOTFIX","Hotfixes have been found on your system. Would you like to Uninstall these hotfixes now?" +"8007F080","-2146963328","2148003968","STR_OLD_UNINST_EXISTS","An old Uninstall directory has been found. Would you like to overwrite this directory with new Uninstall information?" +"8007F081","-2146963327","2148003969","STR_LICENSE_DECLINED","You have chosen to decline the License Agreement. Setup cannot continue." +"8007F082","-2146963326","2148003970","STR_NO_LICENSE_TXT","No LICENSE.TXT file was found in your Hotfix directory. Setup cannot continue." +"8007F083","-2146963325","2148003971","STR_INSUFF_RESOURCES","Insufficient resources are available. Setup cannot continue." +"8007F084","-2146963324","2148003972","STR_FILE_READ_ERROR","Error reading LICENSE.TXT file. Setup cannot continue." +"8007F085","-2146963323","2148003973","STR_DELETE_OLD_UNINST","This old uninstall directory cannot be used to uninstall this Hotfix" +"8007F086","-2146963322","2148003974","STR_HOTFIXES_FOUND","The following hotfixes are installed:" +"8007F087","-2146963321","2148003975","STR_HOTFIXES_NOT_FOUND","No Hotfixes are installed." +"8007F088","-2146963320","2148003976","STR_CAT_VERSIONS_EQUAL","Catalog file versions are equal" +"8007F089","-2146963319","2148003977","STR_WINDOWS_TYPE1","Windows NT 4.0" +"8007F08A","-2146963318","2148003978","STR_WINDOWS_TYPE2","Windows 2000" +"8007F08B","-2146963317","2148003979","STR_LICENSE_AGREEMENT","License Agreement" +"8007F08C","-2146963316","2148003980","STR_SELECT_OPTIONS","Select Options" +"8007F08D","-2146963315","2148003981","STR_UPDATING_YOUR_SYSTEM","Updating Your System" +"8007F08E","-2146963314","2148003982","STR_WIZ1_STATIC3","Before you install this update" +"8007F08F","-2146963313","2148003983","STR_WIZ2_STATIC1","Please read the following license agreement. To continue with setup" +"8007F090","-2146963312","2148003984","STR_WIZ2_RADIO1","I &Do Not Agree" +"8007F091","-2146963311","2148003985","STR_WIZ2_RADIO2","I &Agree" +"8007F092","-2146963310","2148003986","STR_ASK_BACKUP","If you want to remove later" +"8007F093","-2146963309","2148003987","STR_ARCHIVE1","&Archive Files" +"8007F094","-2146963308","2148003988","STR_ARCHIVE2","&Do Not Archive Files" +"8007F095","-2146963307","2148003989","STR_WIZ4_STATIC2","Please wait while setup inspects your current configuration" +"8007F096","-2146963306","2148003990","STR_WIZ4_STATIC_OPERATION","Inspecting your current configuration" +"8007F097","-2146963305","2148003991","STR_WIZ4_STATIC_DETAILS","inspecting current configuration" +"8007F098","-2146963304","2148003992","STR_WIZ4_STATIC","Inspecting current configuration" +"8007F099","-2146963303","2148003993","STR_WIZ5_STATIC1","Completing the Setup Wizard" +"8007F09A","-2146963302","2148003994","STR_WIZ5_STATIC2_REBOOT","You have successfully completed the Setup Wizard. To apply the changes" +"8007F09B","-2146963301","2148003995","STR_WIZ5_STATIC2_NOREBOOT","You have successfully completed the Setup Wizard. To close this wizard" +"8007F09C","-2146963300","2148003996","STR_WIZ5_CHECK1","&Do not restart now" +"8007F09D","-2146963299","2148003997","STR_WIZCAPTION","Setup Wizard" +"8007F09E","-2146963298","2148003998","STR_ANALYZE_DISK","Checking for necessary space" +"8007F09F","-2146963297","2148003999","STR_BUILDING_CAB_CAPTION","Creating Cabinets" +"8007F0A0","-2146963296","2148004000","STR_CLEAN_REG","Updating the registry keys" +"8007F0A1","-2146963295","2148004001","STR_CANCEL","Cancel" +"8007F0A2","-2146963294","2148004002","STR_DOWNLOAD_UNPACKING_DETAILS","Unpacking: %d remaining" +"8007F0A3","-2146963293","2148004003","STR_NO","No LICENSE.TXT file was found in your Hotfix directory. Setup cannot continue. ::No Uninstall directory: Setup is executing. Please wait for Setup to complete :No Service Pack" +"8007F0A4","-2146963292","2148004004","STR_README","Read Me:readmesp.htm" +"8007F0A5","-2146963291","2148004005","STR_README_FILE","readmesp.htm" +"8007F0A6","-2146963290","2148004006","STR_SLIPSTREAM_EVAL_DESTINATION","Integrated install failed. The destination directory contains an evaluation copy of Windows." +"8007F0A7","-2146963289","2148004007","STR_WINDOWS_TYPE3","Windows XP" +"8007F0A8","-2146963288","2148004008","STR_NOUNINSTALL","No Uninstall directory" +"8007F0A9","-2146963287","2148004009","STR_SRVPACK","Service Pack" +"8007F0AA","-2146963286","2148004010","STR_WINDOWS_TYPE0","Windows" +"8007F0AB","-2146963285","2148004011","STR_SPOOLER_ENABLE","For Setup to continue" +"8007F0AC","-2146963284","2148004012","STR_USAGE_UPDATE_NOSLPSTRM","AVAILABLE SWITCHES: [/help] [/quiet] [/passive] [/uninstall] [/norestart] [/forcerestart] [/l] [/n] [/o] [/f] [/integrate:] /help Displays this message SETUP MODES /quiet Quiet mode (no user interaction or display)" +"8007F0AD","-2146963283","2148004013","STR_FONT","Verdana Bold" +"8007F0AE","-2146963282","2148004014","STR_CHOOSE_UNINST_DIR","Select an existing folder or make a new folder in which to store uninstall information." +"8007F0AF","-2146963281","2148004015","STR_ARCHIVE_DRIVE_INVALID","You have selected a folder that is not on your local computer. The current state of the computer can be archived only on your local computer." +"8007F0B0","-2146963280","2148004016","STR_STARTING_SERVICES","Starting services" +"8007F0B1","-2146963279","2148004017","STR_STARTING_SERVICE","Starting service" +"8007F0B2","-2146963278","2148004018","STR_STOPPING_SERVICES","Stopping services" +"8007F0B3","-2146963277","2148004019","STR_STOPPING_SERVICE","Stopping services" +"8007F0B4","-2146963276","2148004020","STR_WINDOWS_TYPE4","Windows Server 2003" +"8007F0C0","-2146963264","2148004032","STR_BLOCKLIST_HF_MSG","Setup cannot install this hotfix because one or more of its files are out of date. Please download and install the latest version of fix ." +"8007F0C1","-2146963263","2148004033","STR_BLOCKLIST_SP_MSGA","This service pack contains files that are missing some of the fixes which were previously installed on this computer. To prevent possible problems" +"8007F0C2","-2146963262","2148004034","STR_BLOCKLIST_SP_MSGB","In order to have the fixes contained in both the service pack and the previously installed hotfixes" +"8007F0C3","-2146963261","2148004035","STR_BLOCKLIST_SP_MSGC","Do you want to continue installing this service pack?" +"8007F0C4","-2146963260","2148004036","STR_BLOCKLIST_SP_MSGD","The service pack install cannot continue until these hotfixes are applied to your system." +"8007F0C5","-2146963259","2148004037","STR_GENERALCAPTION","2%" +"8007F0C6","-2146963258","2148004038","STATUS_BUILD_VERSION_MISMATCH2","Setup has detected that the build version of the system installed does not match the update you are applying to it. You can only install this update only on Build %d ." +"8007F0C7","-2146963257","2148004039","STR_SLPSTRM_COPY","Integrating files" +"8007F0C8","-2146963256","2148004040","STR_SLPSTRM_WIZ4_STATIC2","Please wait while setup integrates files from Windows Service Pack into your Windows installation folder." +"8007F0C9","-2146963255","2148004041","STR_SLPSTRMUPDATING_YOUR_SYSTEM","Updating Your Windows Share" +"8007F0CA","-2146963254","2148004042","STR_RESTORE_POINT_DESC","Installed ." +"8007F0CB","-2146963253","2148004043","STATUS_VLK_BLOCKED","The Product Key used to install Windows is invalid. Please contact your system administrator or retailer immediately to obtain a valid Product Key. You may also contact Microsoft Corporation-Anti-Piracy Team by emailing [email protected]" +"8007F0CC","-2146963252","2148004044","STATUS_KERNEL_NONSTD","The core system file (kernel) used to start this computer is not a Microsoft Windows file. The Service Pack will not be installed. For more information" +"8007F0CD","-2146963251","2148004045","STR_VLK_CHECK","Checking product key" +"8007F0CE","-2146963250","2148004046","STR_SET_RESTOREPOINT","Creating restore point" +"8007F0CF","-2146963249","2148004047","STR_PERFORM_INVENTORY","Performing inventory" +"8007F0D0","-2146963248","2148004048","STR_BUILD_THIRDPARTYDRIVERS","Creating Third Party Driver List" +"8007F0D1","-2146963247","2148004049","STR_DISK_USAGEFORINSTALL","Estimating space for installation" +"8007F0D2","-2146963246","2148004050","STR_DISK_USAGEFORUNINSTALL","Estimating space for uninstallation" +"8007F0D3","-2146963245","2148004051","STR_PROCESSES_BEFOREARCHIVE","Running processes before install" +"8007F0D4","-2146963244","2148004052","STR_REGISTRY_BACKUP","Backing up registry" +"8007F0D5","-2146963243","2148004053","STR_PROCESSES_AFTERINSTALL","Running processes after install" +"8007F0D6","-2146963242","2148004054","STR_PERFORM_CLEANUP","Performing cleanup" +"8007F0D7","-2146963241","2148004055","STR_OPTIONAL_EXCLUSIONWARNING","Windows has detected that one or more protected files on your computer have been modified. The Service Pack contains updated versions of those files" +"8007F0D8","-2146963240","2148004056","STR_WIZ1_STATIC3_XP","Before you install this update" +"8007F0D9","-2146963239","2148004057","STR_ARCHIVE_FOLDER_INVALID","The folder name is longer than the limit of 226 bytes. Enter a shorter name." +"8007F0DA","-2146963238","2148004058","STR_FAILED_INF_INTEGRITY","Setup could not verify the integrity of the file Update.inf. Make sure the Cryptographic service is running on this computer." +"8007F0DB","-2146963237","2148004059","STR_BLOCKLIST_FIXNUMBER","Fix Number" +"8007F0DC","-2146963236","2148004060","STR_BLOCKLIST_FILENAME","File Name" +"8007F0DD","-2146963235","2148004061","STR_BLOCKLIST_VERSION","Version" +"8007F0DE","-2146963234","2148004062","STR_WIZ4_NOARCHIVE","Please wait while setup inspects your current configuration and updates your files." +"8007F0DF","-2146963233","2148004063","STATUS_SP_BUILD_TO_BUILD","This Service Pack cannot be installed on top of the build currently installed on your computer. Cancel this installation process" +"8007F0E0","-2146963232","2148004064","STR_UNABLE_TO_VERIFY","Setup could not verify the integrity of one or more installed files." +"8007F0E2","-2146963230","2148004066","STR_ERR_PRINT_EULA","Unable to print the END USER LICENSE AGREEMENT" +"8007F0E3","-2146963229","2148004067","STR_WINDOWS_TYPE","Windows" +"8007F0E4","-2146963228","2148004068","STATUS_WINDOWS_VERSION_NEWER","The version of Windows you have installed is newer than the update you are trying to install. There is no need to install this update." +"8007F0E5","-2146963227","2148004069","STATUS_PACKAGE_NOT_APPLICABLE","This package does not apply to the operating system you are running" +"8007F0E6","-2146963226","2148004070","STR_SAFEMODE_INSTALL","You are trying to install while the system is in safe mode. This is not recommended unless the system does not function in normal mode." +"8007F0E7","-2146963225","2148004071","STR_APPLYING_HOTPATCHES","Applying Hotpatches" +"8007F0E8","-2146963224","2148004072","STATUS_INVALID_BRANCHES_INF","The branches.inf file is invalid." +"8007F0E9","-2146963223","2148004073","STATUS_INVALID_UPDATEBR_INF","The updatebr.inf file is invalid." +"8007F0EA","-2146963222","2148004074","STR_PACKAGE_MIGRATE_FAILED","Failed to migrate dependent packages." +"8007F0EC","-2146963220","2148004076","STR_PERFORM_MIGRATION","Performing migration" +"8007F0ED","-2146963219","2148004077","STATUS_NO_BRANCH_AVAILABLE","Required installation branch was not found in INF file." +"8007F0EE","-2146963218","2148004078","STR_BLOCKLIST_PACKAGE","Package" +"8007F0EF","-2146963217","2148004079","STR_MIGRATE_BLOCKLIST_MSG","The installation cannot continue because the following packages might not be valid:" +"8007F0F0","-2146963216","2148004080","STR_BRANCH_CAPTION","Branch info" +"8007F0F1","-2146963215","2148004081","STATUS_INCOMPARABLE_BRANCHES","Files from the package are incompatible with files on your system." +"8007F0F2","-2146963214","2148004082","STR_MIGRATE_BLOCKLIST_REC","Reinstall the packages listed above" +"8007F0F3","-2146963213","2148004083","STR_UNKNOWN_PACKAGE","Unknown" +"8007F0F4","-2146963212","2148004084","STATUS_PREREQUISITE_FAILED","Setup cannot continue because one or more pre-requisites required to install failed. For More details check the Log File. Update.exe can throw this error when it starts to download if the computer is running under battery power (there may be a fix for this in the future)." +"8007F0F5","-2146963211","2148004085","STR_WINDOWS_TYPE5","Windows XP Version 2003" +"8007F0F6","-2146963210","2148004086","NULL","" +"8007F0F7","-2146963209","2148004087","STR_HFSLP_ERROR","An error occurred while attempting to integrate this software update package. Verify that the architecture" +"8007F0F8","-2146963208","2148004088","STR_HFSLP_EXPRESS","Express software update packages cannot be integrated. To download a version of the fix that can be integrated" +"8007F0F9","-2146963207","2148004089","STR_HFSLP_EXTRACTED","Extracted packages cannot be integrated. The /integrate switch must be used with the original software update package." +"8007F0FA","-2146963206","2148004090","STR_HFSLP_NOTFOUND","Setup was unable to locate the distribution folder that you wish to integrate with this software update package. The /integrate switch requires the full path to the distribution folder." +"8007F200","-2146962944","2148004352","STATUS_MORE_FILES_FOR_DOWNLOAD","More byte ranges required." +"8007F201","-2146962943","2148004353","STATUS_READY_TO_INSTALL","Required payload available" +"8007F202","-2146962942","2148004354","STATUS_PATCH_NOT_FOUND","The delta was not found in the PSF. Update cannot find information about how to upgrade this binary. SUS can terminate installation." +"8007F203","-2146962941","2148004355","STATUS_PATCH_FILE_CORRUPT","Update cannot find information about how to upgrade this binary" +"8007F204","-2146962940","2148004356","STATUS_INDEXFILE_CORRUPT","Index file does not have a valid signature. Index file has an invalid signature. The package is corrupt. SUS can terminate installation." +"8007F205","-2146962939","2148004357","STR_UPDATE_ALREADY_RUNNING","Setup has detected that another update is in progress. Please complete that installation or removal and try again." +"8007F206","-2146962938","2148004358","STATUS_RETRY_REFRESH_INVENTORY","The state of machine changed since last inventory analysis. Update.exe has to restart the process with /si." +"8007F207","-2146962937","2148004359","STATUS_RETRY_SELF_CONTAINED","Two consecutive attempts to download delta failed without any progress and there is no use in continuing as express package. Revert to self-contained package." +"8007F220","-2146962912","2148004384","STATUS_CONTINUE_INVENTORY","error codes should not be returned out of update.exe" +"8007F221","-2146962911","2148004385","ERROR_INDEXFILE_NOT_FOUND","error codes should not be returned out of update.exe" +"80080005","-2146959355","2148007941","CO_E_Server_Exec_Failure","" +"80080008","-2146959352","2148007944","CO_E_SERVER_STOPPING","" +"80090006","-2146893818","2148073478","NTE_Bad_Signature","" +"8009000B","-2146893813","2148073483","NTE_Bad_Key_State","" +"80090017","-2146893801","2148073495","NTE_PROV_TYPE_NOT_DEF","" +"8009001D","-2146893795","2148073501","Error_Write_Fault","" +"80090305","-2146893051","2148074245","SEC_E_SECPKG_NOT_FOUND","The requested security package does not exist" +"80090331","-2146893007","2148074289","Sec_E_Algorithm_Mismatch","The client and the server cannot communicate" +"8009033F","-2146892993","2148074303","SEC_E_Shutdown_IN_Progress","" +"80092003","-2146885629","2148081667","CRYPT_E_File_Error","An error occurred while reading or writing to a file" +"8009200D","-2146885619","2148081677","Crypt_E_Bad_Msg","Not a cryptographic message or the cryptographic message is not formatted correctly" +"80092026","-2146885594","2148081702","Crypt_E_Security_Settings","The cryptographic operation failed due to a local security option setting" +"8009310B","2148086027","-2146881269","","ASN1 bad tag value met." +"80096001","-2146869247","2148098049","Trust_E_System_Error","A system-level error occurred while verifying trust" +"80096005","-2146869243","2148098053","Trust_E_Time_Stamp could not be verified","" +"80096010","-2146869232","2148098064","Trust_E_Bad_Digest","The digital signature of the object did not verify" +"80096019","-2146869223","2148098073","TRUST_E_BASIC_CONSTRAINTS","" +"800A0046","-2146828218","2148139078","CTL_PermissionDenied","olectl.h" +"800A01AD","-2146827859","2148139437","ActiveX component can't create object", +"800A01AE","-2146827858","2148139438","IXP_NNTP_NO_SUCH_ARTICLE_FOUND","This can occur after a control selfupdate that has not fully completed and requires a reboot." +"800A138F","-2146823281","2148144015","ERROR_RESOURCE_NOT_FOUND","Javascript runtime error" +"800B0001","-2146762751","2148204545","Trust_E_Provider_Unknown","" +"800B0002","-2146762750","2148204546","Trust_E_ActionUnknown","The trust verification action specified is not supported by the specified trust provider." +"800B0003","-2146762749","2148204547","TRUST_E_SUBJECT_FORM_UNKNOWN","The form specified by the subject is not one supported or known by the specified trust provider" +"800B0004","-2146762748","2148204548","TRUST_E_SUBJECT_NOT_TRUSTED","The subject is not trusted for the specified action." +"800B0100","-2146762496","2148204800","TRUST_E_NOSIGNATURE","No signature was present in the subject" +"800B0101","-2146762495","2148204801","Cert_E_Expired","Verifying against the current system clock or the timestamp in the signed file" +"800B0109","-2146762487","2148204809","CERT_E_UNTRUSTEDROOT","A certificate chain processed" +"800B010D","-2146762483","2148204813","Cert_E_Untrustedtestroot","The certification path terminates with the test root which is not trusted with the current policy settings" +"800B0110","-2146762480","2148204816","CERT_E_WRONG_USAGE","" +"800C0002","-2146697214","2148270082","Inet_E_Invalid_URL","" +"800F0101","-2146500351","2148466945","SPAPI_E_Section_Not_Found","The required section was not found in the INF" +"800F020B","-2146500085","2148467211","SPAPI_E_No_Such_Devinst","device instance does not exist" +"800F0217","-2146500073","2148467223","SPAPI_E_Bad_Service_Installsect","A service installation section in this INF is invalid" +"800F022B","-2146500053","2148467243","SPAPI_E_DI_Dont_Install","The class installer has denied the request to install or upgrade this device" +"800F022F","-2146500049","2148467247","SPAPI_E_No_Catalog_for_OEM_INF","The third-party INF does not contain digital signature information" +"800F0244","-2146500028","2148467268","SPAPI_E_Signature_Osattribure_Mismatch","The software was tested for compliance on a different version of Windows and may not be compatible with this version" +"800FF8F0","-2146436880","2148530416","NULL","" +"800FFBBE","-2146436162","2148531134","NULL","" +"800FFC02","-2146436094","2148531202","NULL","" +"800FFC0D","-2146436083","2148531213","NULL","" +"80131700","-2146232576","2148734720","","Dependency on `WindowsFeatues`,specifically `netfx3`." +"80190064","-2145845148","2149122148","BG_E_HTTP_ERROR_100","The request can be continued." +"80190065","-2145845147","2149122149","BG_E_HTTP_ERROR_101","The server switched protocols in an upgrade header." +"801900C8","-2145845048","2149122248","BG_E_HTTP_ERROR_200","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"801900C9","-2145845047","2149122249","BG_E_HTTP_ERROR_201","The request was fulfilled and resulted in the creation of a new resource." +"801900CA","-2145845046","2149122250","BG_E_HTTP_ERROR_202","The request was accepted for processing" +"801900CB","-2145845045","2149122251","BG_E_HTTP_ERROR_203","The returned metadata in the entity-header is not the definitive set available from the server of origin." +"801900CC","-2145845044","2149122252","BG_E_HTTP_ERROR_204","The server has fulfilled the request" +"801900CD","-2145845043","2149122253","BG_E_HTTP_ERROR_205","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"801900CE","-2145845042","2149122254","BG_E_HTTP_ERROR_206","The server fulfilled the partial GET request for the resource." +"8019012C","-2145844948","2149122348","BG_E_HTTP_ERROR_300","The server could not return the requested data." +"8019012D","-2145844947","2149122349","BG_E_HTTP_ERROR_301","The requested resource was assigned to a new permanent Uniform Resource Identifier (URI)" +"8019012E","-2145844946","2149122350","BG_E_HTTP_ERROR_302","The requested resource was assigned a different Uniform Resource Identifier (URI). This change is temporary." +"8019012F","-2145844945","2149122351","BG_E_HTTP_ERROR_303","The response to the request is under a different Uniform Resource Identifier (URI) and must be retrieved using a GET method on that resource." +"80190130","-2145844944","2149122352","BG_E_HTTP_ERROR_304","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"80190131","-2145844943","2149122353","BG_E_HTTP_ERROR_305","The requested resource must be accessed through the proxy given by the location field." +"80190133","-2145844941","2149122355","BG_E_HTTP_ERROR_307","The URL has been temporarily relocated. Try again later." +"80190190","-2145844848","2149122448","BG_E_HTTP_ERROR_400","The server cannot process the request because the syntax is not valid." +"80190191","-2145844847","2149122449","BG_E_HTTP_ERROR_401","The requested resource requires user authentication." +"80190192","-2145844846","2149122450","BG_E_HTTP_ERROR_402","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"80190193","-2145844845","2149122451","BG_E_HTTP_ERROR_403","The client does not have sufficient access rights to the requested server object." +"80190194","-2145844844","2149122452","BG_E_HTTP_ERROR_404","The requested URL does not exist on the server." +"80190195","-2145844843","2149122453","BG_E_HTTP_ERROR_405","The method used is not allowed." +"80190196","-2145844842","2149122454","BG_E_HTTP_ERROR_406","No responses acceptable to the client were found." +"80190197","-2145844841","2149122455","BG_E_HTTP_ERROR_407","Proxy authentication is required." +"80190198","-2145844840","2149122456","BG_E_HTTP_ERROR_408","The server timed out waiting for the request." +"80190199","-2145844839","2149122457","BG_E_HTTP_ERROR_409","The request could not be completed because of a conflict with the current state of the resource. The user should resubmit the request with more information." +"8019019A","-2145844838","2149122458","BG_E_HTTP_ERROR_410","The requested resource is not currently available at the server" +"8019019B","-2145844837","2149122459","BG_E_HTTP_ERROR_411","The server cannot accept the request without a defined content length." +"8019019C","-2145844836","2149122460","BG_E_HTTP_ERROR_412","The precondition given in one or more of the request header fields evaluated to false when it was tested on the server." +"8019019D","-2145844835","2149122461","BG_E_HTTP_ERROR_413","The server cannot process the request because the request entity is too large." +"8019019E","-2145844834","2149122462","BG_E_HTTP_ERROR_414","The server cannot process the request because the request Uniform Resource Identifier (URI) is longer than the server can interpret." +"8019019F","-2145844833","2149122463","BG_E_HTTP_ERROR_415","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"801901A1","-2145844831","2149122465","BG_E_HTTP_ERROR_417","The server could not meet the expectation given in an Expect request-header field." +"801901C1","-2145844799","2149122497","BG_E_HTTP_ERROR_449","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"801901F4","-2145844748","2149122548","BG_E_HTTP_ERROR_500","The server encountered an unexpected condition that prevented it from fulfilling the request." +"801901F5","-2145844747","2149122549","BG_E_HTTP_ERROR_501","The server does not support the functionality required to fulfill the request." +"801901F6","-2145844746","2149122550","BG_E_HTTP_ERROR_502","The server" +"801901F7","-2145844745","2149122551","BG_E_HTTP_ERROR_503","The service is temporarily overloaded." +"801901F8","-2145844744","2149122552","BG_E_HTTP_ERROR_504","The request was timed out waiting for a gateway. Can typically be a DNS issue" +"801901F9","-2145844743","2149122553","BG_E_HTTP_ERROR_505","The server does not support the HTTP protocol version that was used in the request message." +"801901FA","-2145844742","2149122554","NULL","" +"80194000","-2145828864","2149138432","BITS_MC_JOB_CANCELLED","The administrator canceled job on behalf of %3. The job ID was %1." +"80194001","-2145828863","2149138433","BITS_MC_FILE_DELETION_FAILED","While canceling job" +"80194002","-2145828862","2149138434","BITS_MC_FILE_DELETION_FAILED_MORE","Due to space limitations" +"80194003","-2145828861","2149138435","BITS_MC_JOB_PROPERTY_CHANGE","The administrator modified the property of job. The job ID was %1." +"80194004","-2145828860","2149138436","BITS_MC_JOB_TAKE_OWNERSHIP","The administrator took ownership of job. The job ID was %1." +"80194005","-2145828859","2149138437","BITS_MC_JOB_SCAVENGED","Job was canceled after being inactive for more than xx days. The job ID was %1." +"80194006","-2145828858","2149138438","BITS_MC_JOB_NOTIFICATION_FAILURE","Job failed to notify its associated application. BITS will retry in xx minutes. The job ID was %1." +"80194007","-2145828857","2149138439","BITS_MC_STATE_FILE_CORRUPT","The BITS job list is not in a recognized format. It may have been created by a different version of BITS. The job list has been cleared." +"80194008","-2145828856","2149138440","BITS_MC_FAILED_TO_START","The BITS server failed to start. Try restarting the service at a later time." +"80200001","-2145386495","2149580801","BG_E_Not_Found","The requested job was not found." +"80200002","-2145386494","2149580802","BG_E_INVALID_STATE","The requested action is not allowed in the current job state. The job might have been canceled or completed transferring. It is in a read-only state now." +"80200003","-2145386493","2149580803","BG_E_EMPTY","There are no files attached to this job. Attach files to the job" +"80200004","-2145386492","2149580804","BG_E_FILE_NOT_AVAILABLE","No file is available because no URL generated an error." +"80200005","-2145386491","2149580805","BG_E_PROTOCOL_NOT_AVAILABLE","No protocol is available because no URL generated an error." +"80200006","-2145386490","2149580806","BG_S_ERROR_CONTEXT_NONE","No errors have occurred." +"80200007","-2145386489","2149580807","BG_E_ERROR_CONTEXT_UNKNOWN","The error occurred in an unknown location." +"80200008","-2145386488","2149580808","BG_E_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER","The error occurred in the Background Intelligent Transfer Service (BITS) queue manager." +"80200009","-2145386487","2149580809","BG_E_ERROR_CONTEXT_LOCAL_FILE","The error occurred while the local file was being processed. Verify that the file is not in use" +"8020000A","-2145386486","2149580810","BG_E_ERROR_CONTEXT_REMOTE_FILE","The error occurred while the local file was being processed. Verify that the file is not in use" +"8020000B","-2145386485","2149580811","BG_E_ERROR_CONTEXT_GENERAL_TRANSPORT","The error occurred in the transport layer. The client could not connect to the server." +"8020000C","-2145386484","2149580812","BG_E_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION","The error occurred while the notification callback was being processed. Background Intelligent Transfer Service (BITS) will try again later." +"8020000D","-2145386483","2149580813","BG_E_Destination_Locked","The destination file system volume is not available. Verify that another program" +"8020000E","-2145386482","2149580814","BG_E_VOLUME_CHANGED","The destination volume has changed. If the disk is removable" +"8020000F","-2145386481","2149580815","BG_E_ERROR_INFORMATION_UNAVAILABLE","No errors have occurred." +"80200010","-2145386480","2149580816","BG_E_NETWORK_DISCONNECTED","There are currently no active network connections. Background Intelligent Transfer Service (BITS) will try again when an adapter is connected." +"80200011","-2145386479","2149580817","BG_E_MISSING_FILE_SIZE","When BITS sends a HEAD request and server/proxy doesn't return Content-Length header in the response" +"80200012","-2145386478","2149580818","BG_E_INSUFFICIENT_HTTP_SUPPORT","The server does not support HTTP 1.1." +"80200013","-2145386477","2149580819","BG_E_INSUFFICIENT_RANGE_SUPPORT","BITS uses range header in HTTP requests to request parts of a file. If the server or proxy doesn't understand Range requests and returns full file instead of the requested range" +"80200014","-2145386476","2149580820","BG_E_REMOTE_NOT_SUPPORTED","Background Intelligent Transfer Service (BITS) cannot be used remotely." +"80200015","-2145386475","2149580821","BG_E_NEW_OWNER_DIFF_MAPPING","The drive mapping for the job is different for the current owner than for the previous owner. Use a UNC path instead." +"80200016","-2145386474","2149580822","BG_E_NEW_OWNER_NO_FILE_ACCESS","The new owner has insufficient access to the local files for the job. The new owner might not have permissions to access the job files. Verify that the new owner has sufficient permissions" +"80200017","-2145386473","2149580823","BG_S_PARTIAL_COMPLETE","Some of the transferred files were deleted because they were incomplete" +"80200018","-2145386472","2149580824","BG_E_PROXY_LIST_TOO_LARGE","The HTTP proxy list cannot be longer than 32" +"80200019","-2145386471","2149580825","BG_E_PROXY_BYPASS_LIST_TOO_LARGE","The HTTP proxy bypass list cannot be longer than 32" +"8020001A","-2145386470","2149580826","BG_S_UNABLE_TO_DELETE_FILES","Some of the temporary files could not be deleted. Check the system event log for the complete list of files that could not be deleted." +"8020001B","-2145386469","2149580827","BG_E_INVALID_SERVER_RESPONSE","The server-response was not valid. The server was not following the defined protocol. Resume the job" +"8020001C","-2145386468","2149580828","BG_E_TOO_MANY_FILES","No more files can be added to this job." +"8020001D","-2145386467","2149580829","BG_E_LOCAL_FILE_CHANGED","The local file was changed during the transfer. Recreate the job" +"8020001E","-2145386466","2149580830","BG_E_ERROR_CONTEXT_REMOTE_APPLICATION","The program on the remote server reported the error." +"8020001F","-2145386465","2149580831","BG_E_SESSION_NOT_FOUND","The specified session could not be found on the server. Background Intelligent Transfer Service (BITS) will try again." +"80200020","-2145386464","2149580832","BG_E_TOO_LARGE","The job is too large for the server to accept. This job might exceed a job size limit set by the server administrator. Reduce the size of the job" +"80200021","-2145386463","2149580833","BG_E_STRING_TOO_LONG","The specified string is too long." +"80200022","-2145386462","2149580834","BG_E_CLIENT_SERVER_PROTOCOL_MISMATCH","The client and server versions of Background Intelligent Transfer Service (BITS) are incompatible." +"80200023","-2145386461","2149580835","BG_E_SERVER_EXECUTE_ENABLE","Scripting OR execute permissions are enabled on the IIS virtual directory associated with the job. To upload files to the virtual directory" +"80200024","-2145386460","2149580836","BG_E_No_Progress BITS","The job is not making headway. The server may be misconfigured. Background Intelligent Transfer Service (BITS) will try again later." +"80200025","-2145386459","2149580837","BG_E_USERNAME_TOO_LARGE","The user name cannot be longer than 300 characters. Try again with a shorter name." +"80200026","-2145386458","2149580838","BG_E_PASSWORD_TOO_LARGE","The password cannot be longer than 300 characters. Try again with a shorter password." +"80200027","-2145386457","2149580839","BG_E_INVALID_AUTH_TARGET","The authentication target specified in the credentials is not defined." +"80200028","-2145386456","2149580840","BG_E_INVALID_AUTH_SCHEME","The authentication scheme specified in the credentials is not defined." +"80200029","-2145386455","2149580841","BG_E_FILE_NOT_FOUND","The specified file name does not match any of the files in the job." +"8020002A","-2145386454","2149580842","BG_S_PROXY_CHANGED","The proxy server was changed." +"8020002B","-2145386453","2149580843","BG_E_INVALID_RANGE","The requested byte range extends beyond the end of the web page. Use byte ranges that are wholly within the page." +"8020002C","-2145386452","2149580844","BG_E_OVERLAPPING_RANGES","The list of byte ranges contains some overlapping ranges" +"8020002D","-2145386451","2149580845","BG_E_CONNECT_FAILURE","A connection could not be established." +"8020002E","-2145386450","2149580846","BG_E_CONNECTION_CLOSED","The connection was prematurely closed." +"8020002F","-2145386449","2149580847","BG_E_KEEP_ALIVE_FAILURE","The connection for a request that specifies the Keep-alive header was closed unexpectedly." +"80200030","-2145386448","2149580848","BG_E_MESSAGE_LENGTH_LIMIT_EXCEEDED","A message was received that exceeded the specified limit when sending a request or receiving a response from the server." +"80200031","-2145386447","2149580849","BG_E_NAME_RESOLUTION_FAILURE","The host name could not be found." +"80200032","-2145386446","2149580850","BG_E_PENDING","An internal asynchronous request is pending." +"80200033","-2145386445","2149580851","BG_E_PIPELINE_FAILURE","" +"80200034","-2145386444","2149580852","BG_E_PROTOCOL_ERROR","The response received from the server was complete but indicated a protocol-level error." +"80200035","-2145386443","2149580853","BG_E_PROXY_NAME_RESOLUTION_FAILURE","The proxy name could not be found." +"80200036","-2145386442","2149580854","BG_E_RECEIVE_FAILURE","A complete response was not received from the server." +"80200037","-2145386441","2149580855","BG_E_REQUEST_CANCELED","The request was canceled." +"80200038","-2145386440","2149580856","BG_E_SECURE_CHANNEL_FAILURE","An error occurred while establishing a connection using SSL." +"80200039","-2145386439","2149580857","BG_E_SEND_FAILURE","complete request could not be sent to the remote server." +"8020003A","-2145386438","2149580858","BG_E_SERVER_PROTOCOL_VIOLATION","The server response was not valid." +"8020003B","-2145386437","2149580859","BG_E_TIMEOUT","The operation exceeded the time limit." +"8020003C","-2145386436","2149580860","BG_E_TRUST_FAILURE","A server certificate could not be validated." +"8020003D","-2145386435","2149580861","BG_E_UNKNOWN_ERROR","A unknown error occured." +"8020003E","-2145386434","2149580862","BG_E_BLOCKED_BY_POLICY","Group Policy settings prevent background jobs from running at this time." +"8020003F","-2145386433","2149580863","BG_E_INVALID_PROXY_INFO","The supplied proxy server or bypass list is invalid." +"80200040","-2145386432","2149580864","BG_E_INVALID_CREDENTIALS","The format of the supplied security credentials is invalid." +"80240001","-2145124351","2149842945","SUS_E_NO_SERVICE","for whatever reason" +"80240002","-2145124350","2149842946","SUS_E_MAX_CAPACITY_REACHED","maximum capacity of the service is reached" +"80240003","-2145124349","2149842947","SUS_E_UNKNOWN_ID","id not found" +"80240004","-2145124348","2149842948","SUS_E_NOT_INITIALIZED","object is not correctly initialized" +"80240005","-2145124347","2149842949","SUS_E_RANGEOVERLAP","Update handler attempted to request a byte range that overlapped a previously requested byte range" +"80240006","-2145124346","2149842950","SUS_E_TOOMANYRANGES","Update handler attempted to request too many ranges" +"80240007","-2145124345","2149842951","SUS_S_ALREADY_UNINSTALLED - SUS_E_INVALIDINDEX","The update to be uninstalled is already not installed - An attempt was made to use an invalid index" +"80240008","-2145124344","2149842952","SUS_E_ITEMNOTFOUND","A query was made for an item with a particular key and that key was not found" +"80240009","-2145124343","2149842953","SUS_E_OPERATIONINPROGRESS","The caller attempted to perform an operation on an interface while another operation was in progress." +"8024000A","-2145124342","2149842954","SUS_E_COULDNOTCANCEL","The caller attempted to cancel an operation that is not cancelable" +"8024000B","-2145124341","2149842955","SUS_E_CALL_CANCELLED","call has been cancelled" +"8024000C","-2145124340","2149842956","SUS_E_NOOP","no operation is needed" +"8024000D","-2145124339","2149842957","SUS_E_XML_MISSINGDATA","the SUS agent is attempting to parse an update-XML blob and has not found expected data" +"8024000E","-2145124338","2149842958","SUS_E_XML_INVALID","the SUS agent is attempting to parse an update-XML blob and has encountered data that is invalid" +"8024000F","-2145124337","2149842959","SUS_E_CYCLE_DETECTED","cycle detected in meta data" +"80240010","-2145124336","2149842960","SUS_E_TOO_DEEP_RELATION","too deep relation ship found" +"80240011","-2145124335","2149842961","SUS_E_REG_VALUE_INVALI","registry value was read but is invalid" +"80240012","-2145124334","2149842962","SUS_E_REG_VALUE_INVALID","registry value was read but is invalid" +"80240013","-2145124333","2149842963","SUS_E_EE_UNKNOWN_EXPRESSION","an expression handler was passed an expression that it doesn't know about" +"80240014","-2145124332","2149842964","SUS_E_EE_INVALID_EXPRESSION","an expression handler was passed an expression that is bad." +"80240015","-2145124331","2149842965","SUS_E_EE_MISSING_METADATA","an expression handler was passed an expression that requires an applicability metadata blob" +"80240016","-2145124330","2149842966","SUS_E_INSTALL_NOT_ALLOWE","try to install while another install is going on or reboot is pending" +"80240017","-2145124329","2149842967","SUS_E_NOT_APPLICABLE","install is not needed because no updates are applicable" +"80240018","-2145124328","2149842968","WU_E_NO_USERTOKEN","operation failed due to missing user token" +"80240019","-2145124327","2149842969","WU_E_EXCLUSIVE_INSTALL_CONFliCT","try to install an exclusive update with other updates at the same time" +"8024001A","-2145124326","2149842970","WU_E_POLICY_NOT_SET","policy value is not set" +"8024001B","-2145124325","2149842971","WU_E_SELFUPDATE_IN_PROGRESS","self-update in progress" +"8024001C","-2145124324","2149842972","SUS_E_WRONGMSIVERSION","" +"8024001D","-2145124323","2149842973","WU_E_INVALID_UPDATE","an update had bogus metadata" +"8024001E","-2145124322","2149842974","WU_E_SERVICE_STOP","call was aborted due to service stop or system shut down" +"8024001F","-2145124321","2149842975","SUS_E_NO_CONNECTION","no network connection is available to finish the operation" +"80240020","-2145124320","2149842976","SUS_E_NO_INTERACTIVE_USER","interactive user is missing to finish the operation" +"80240021","-2145124319","2149842977","WU_E_TIME_OUT","operation timed out" +"80240022","-2145124318","2149842978","WU_E_ALL_UPDATES_FAILED","operation failed on all specified updates" +"80240023","-2145124317","2149842979","WU_E_EULAS_DECLINED","EULA-for all the updates are declined" +"80240024","-2145124316","2149842980","WU_E_NO_UPDATE","there are no update" +"80240025","-2145124315","2149842981","WU_E_USER_ACCESS_DISABLED","User access to Windows Update is prevented by Group Policy setting" +"80240026","-2145124314","2149842982","WU_E_INVALID_UPDATE_TYPE","invalid type of update" +"80240027","-2145124313","2149842983","WU_E_URL_TOO_LONG","URL is too long" +"80240028","-2145124312","2149842984","WU_E_UNINSTALL_NOT_ALLOWED","uninstall is not allowed due to non managed environment" +"80240029","-2145124311","2149842985","WU_E_INVALID_PRODUCT_LICENSE","A product with an invalid license was found on the system." +"8024002A","-2145124310","2149842986","WU_E_MISSING_HANDLER","A component required for detecting applicable updates was missing." +"8024002B","-2145124309","2149842987","WU_E_LEGACYSERVER","The Sus server we are talking to is a Legacy Sus Server (Sus Server 1.0)" +"8024002C","-2145124308","2149842988","WU_E_BIN_SOURCE_ABSENT","A binary-delta patch failed because the source was required" +"8024002D","-2145124307","2149842989","WU_E_FF_SOURCE_ABSENT","a full-file patch failed because the source was required" +"8024002E","-2145124306","2149842990","SUS_E_WU_DISABLED","non managed server access is disallowed" +"8024002F","-2145124305","2149842991","WU_E_CALL_CANCELLED_BY_POLICY","call cancelled because of DisableWindowsUpdateAccess policy takes effect" +"80240030","-2145124304","2149842992","WU_E_INVALID_PROXY_SERVER","invalid format for proxy list" +"80240031","-2145124303","2149842993","WU_E_INVALID_FILE","file is not of the right format" +"80240032","-2145124302","2149842994","WU_E_INVALID_CRITERIA","invalid criteria string" +"80240033","-2145124301","2149842995","WU_E_EULA_UNAVAILABLE","EULA download failure" +"80240034","-2145124300","2149842996","WU_E_DOWNLOAD_FAILED","Failed to download" +"80240035","-2145124299","2149842997","WU_E_UPDATE_NOT_PROCESSED","INTERNAL ONLY: The update was not processed." +"80240036","-2145124298","2149842998","WU_E_INVALID_OPERATION","The operation is invalid for the object-current state." +"80240037","-2145124297","2149842999","WU_E_NOT_SUPPORTED","The invoked functionality is not supported (80240037" +"80240FFF","-2145120257","2149847039","WU_E_UNEXPECTED","generic unexpected failure" +"80241001","-2145120255","2149847041","WU_E_MSI_WRONG_VERSION","The MSI version on the machine is less than what we expect (SUS 2.0 requires MSI 3.0)" +"80241002","-2145120254","2149847042","WU_E_MSI_NOT_CONFIGURED","MSI is not configured" +"80241003","-2145120253","2149847043","WU_E_MSP_DISABLED","MSI patching is disabled by policy" +"80241FFF","-2145116161","2149851135","U_E_MSP_UNEXPECTED","generic unexpected MSP failure" +"80242000","-2145116160","2149851136","SUS_E_UH_REMOTEUNAVAILABLE","The caller requested a remote object" +"80242001","-2145116159","2149851137","WU_E_UH_LOCALONLY","The caller requested a remote object" +"80242002","-2145116158","2149851138","WU_E_UH_UNKNOWNHANDLER","The caller requested an unknown handler object" +"80242003","-2145116157","2149851139","WU_E_UH_REMOTEALREADYACTIVE","The caller requested an unknown handler object" +"80242004","-2145116156","2149851140","SUS_E_UH_DOESNOTSUPPORTACTION","The update does not support the current action (install or uninstall)" +"80242005","-2145116155","2149851141","SUS_E_UH_WRONGHANDLER","The caller tried to use the wrong handler for an action" +"80242006","-2145116154","2149851142","SUS_E_UH_INVALIDMETADATA","The caller passed an update with invalid metadata to the handler" +"80242007","-2145116153","2149851143","SUS_E_UH_INSTALLERHUNG","The installer took too long and was terminated" +"80242008","-2145116152","2149851144","SUS_E_UH_OPERATIONCANCELLED","The install was canceled via a handler method (as opposed to" +"80242009","-2145116151","2149851145","SUS_E_UH_BADHANDLERXML","The XML contained in the handler specific data for the update is invalid." +"8024200A","-2145116150","2149851146","WU_E_UH_CANREQUIREINPUT","The update may require user input so can not be installed in this context." +"8024200B","-2145116149","2149851147","SUS_E_UH_INSTALLERFAILURE","At least one update passed to the handler failed to install." +"8024200C","-2145116148","2149851148","WU_E_UH_FALLBACKTOSELFCONTAINED","Handler should fall back to self-contained from delta." +"8024200D","-2145116147","2149851149","SUS_E_UH_NEEDANOTHERDOWNLOAD","The installer requires more data to be downloaded" +"8024200E","-2145116146","2149851150","WU_E_UH_NOTIFYFAILURE","The attempted operation was not allowed" +"80242FFF","-2145112065","2149855231","WU_E_UH_UNEXPECTED","generic unexpected update handler failure" +"80243FFF","-2145107969","2149859327","WU_E_AUCLIENT_UNEXPECTED","generic unexpected UI [AU Client] failures" +"80244000","-2145107968","2149859328","WU_E_PT_SOAPCLIENT_BASE","Used as a base to map SOAPCLIENT_ERROR errors." +"80244001","-2145107967","2149859329","SUS_E_PT_SOAPCLIENT_INITIALIZE","SOAPCLIENT_INITIALIZE_ERROR initialization failed - most likely an MSXML installation problem" +"80244002","-2145107966","2149859330","WU_E_PT_SOAPCLIENT_OUTOFMEMORY","SOAPCLIENT_OUTOFMEMORY out of memory" +"80244003","-2145107965","2149859331","WU_E_PT_SOAPCLIENT_GENERATE","SOAPCLIENT_GENERATE_ERROR failed in generating the response" +"80244004","-2145107964","2149859332","SUS_E_PT_SOAPCLIENT_CONNECT","failed connecting to server" +"80244005","-2145107963","2149859333","WU_E_PT_SOAPCLIENT_SEND","SOAPCLIENT_SEND_ERROR failed in sending message. This generic error has been deprecated in favor of the more specific underlying WinHTTP errors" +"80244006","-2145107962","2149859334","WU_E_PT_SOAPCLIENT_SERVER","SOAPCLIENT_SERVER_ERROR server error" +"80244007","-2145107961","2149859335","WU_E_PT_SOAPCLIENT_SOAPFAULT","SOAPCLIENT_SOAPFAULT a SOAP Fault was returned by the server. See the more specific WU_E_PT_SOAP_xxxx mappings when a SOAP fault was returned by the server." +"80244008","-2145107960","2149859336","SUS_E_PT_SOAPCLIENT_PARSEFAULT","SOAPCLIENT_PARSEFAULT_ERROR failed in parsing SOAP fault" +"80244009","-2145107959","2149859337","WU_E_PT_SOAPCLIENT_READ","SOAPCLIENT_READ_ERROR failed in reading response" +"8024400A","-2145107958","2149859338","SUS_E_PT_SOAPCLIENT_PARSE","failed in parsing response" +"8024400B","-2145107957","2149859339","WU_E_PT_SOAP_VERSION","SOAP_E_VERSION_MISMATCH Invalid namespace for the SOAP envelope" +"8024400C","-2145107956","2149859340","WU_E_PT_SOAP_MUST_UNDERSTAND","SOAP_E_MUST_UNDERSTAND Child of header with mustUnderstand attribute = 1 wasn't understood or obeyed" +"8024400D","-2145107955","2149859341","SUS_E_PT_SOAP_CLIENT","SOAP_E_CLIENT The message was malformed or incomplete. No reason to retry unless problem fixed." +"8024400E","-2145107954","2149859342","SUS_E_PT_SOAP_SERVER","The message was OK but server couldn't process at the moment. Same message *may* succeed at a later time." +"8024400F","-2145107953","2149859343","WU_E_PT_WMI_ERROR","An unspecified error occurred using WMI" +"80244010","-2145107952","2149859344","SUS_E_PT_EXCEEDED_MAX_SERVER_TRIPS","The maximum allowed number of round trips to the server was exceeded" +"80244011","-2145107951","2149859345","SUS_E_PT_SUS_SERVER_NOT_SET","WUServer policy value is missing in the registry" +"80244012","-2145107950","2149859346","WU_E_PT_DOUBLE_INITIALIZATION","object is initialized second time" +"80244013","-2145107949","2149859347","WU_E_PT_INVALID_COMPUTER_NAME","Cannot determine computer name" +"80244014","-2145107948","2149859348","WU_E_PT_INVALID_COMPUTER_LSID","Cannot determine computer LSID" +"80244015","-2145107947","2149859349","SUS_E_PT_REFRESH_CACHE_REQUIRED","Server replied with InvalidCookie or ServerChanged Caller should refresh its internal state then repeat the call to Protocol Talker" +"80244016","-2145107946","2149859350","SUS_E_PT_HTTP_STATUS_BAD_REQUEST","Http status 400 - invalid syntax" +"80244017","-2145107945","2149859351","SUS_E_PT_HTTP_STATUS_DENIED","Http status 401 - access denied" +"80244018","-2145107944","2149859352","SUS_E_PT_HTTP_STATUS_FORBIDDEN","Http status 403 - request forbidden" +"80244019","-2145107943","2149859353","SUS_E_PT_HTTP_STATUS_NOT_FOUND","Http status 404 - object not found" +"8024401A","-2145107942","2149859354","SUS_E_PT_HTTP_STATUS_BAD_METHOD","Http status 405 - method is not allowed" +"8024401B","-2145107941","2149859355","SUS_E_PT_HTTP_STATUS_PROXY_AUTH_REQ","Http status 407 - proxy authentication required" +"8024401C","-2145107940","2149859356","WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT","Http status 408 - server timed out waiting for request" +"8024401D","-2145107939","2149859357","WU_E_PT_HTTP_STATUS_CONFLICT","Http status 409 - user should resubmit with more info" +"8024401E","-2145107938","2149859358","WU_E_PT_HTTP_STATUS_GONE","Http status 410 - the resource is no longer available" +"8024401F","-2145107937","2149859359","WU_E_PT_HTTP_STATUS_SERVER_ERROR","Http status 500 - internal server error" +"80244020","-2145107936","2149859360","WU_E_PT_HTTP_STATUS_NOT_SUPPORTED","Http status 501 - required not supported" +"80244021","-2145107935","2149859361","SUS_E_PT_HTTP_STATUS_BAD_GATEWAY","Http status 502 - error response received from gateway" +"80244022","-2145107934","2149859362","SUS_E_PT_HTTP_STATUS_SERVICE_UNAVAIL","Http status 503 - temporarily overloaded)" +"80244023","-2145107933","2149859363","SUS_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT","Http status 504 - timed out waiting for gateway" +"80244024","-2145107932","2149859364","WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP","Http status 505 - HTTP version not supported" +"80244025","-2145107931","2149859365","SUS_E_PT_FILE_LOCATIONS_CHANGED","Server replied with FileLocationsChange Caller should refresh its internal state then repeat the call to Protocol Talker" +"80244026","-2145107930","2149859366","SUS_E_PT_REGISTRATION_NOT_SUPPORTED","Client doesn't support registration with non-SUS server" +"80244027","-2145107929","2149859367","WU_E_PT_NO_AUTH_PLUGINS_REQUESTED","Server returned an empty AuthInfo list" +"80244028","-2145107928","2149859368","SUS_E_PT_NO_AUTH_COOKIES_CREATED","The client was unable to create any valid auth cookies" +"80244029","-2145107927","2149859369","WU_E_PT_INVALID_CONFIG_PROP","One of the Config ConfigurationProperty values was wrong" +"8024402A","-2145107926","2149859370","WU_E_PT_CONFIG_PROP_MISSING","One of the Config ConfigurationProperty values was wrong" +"8024402B","-2145107925","2149859371","WU_E_PT_HTTP_STATUS_NOT_MAPPED","Http status other than 200" +"8024402C","-2145107924","2149859372","WU_E_PT_WINHTTP_NAME_NOT_RESOLVED","Winhttp SendRequest/ReceiveResponse failed with 2ee7 error. Either the proxy server or target server name can not be resolved. Corresponding to ERROR_WINHTTP_NAME_NOT_RESOLVED. Stop/Restart service or reboot the machine if you see this error frequently." +"80244FFF","-2145103873","2149863423","WU_E_PT_UNEXPECTED","generic unexpected protocol talker failure" +"80245001","-2145103871","2149863425","WU_E_REDIRECTOR_LOAD_XML","The XML extracted from the wuredir.cab failed to load into the DOM" +"80245002","-2145103870","2149863426","WU_E_REDIRECTOR_S_FALSE","An expected XML element node" +"80245003","-2145103869","2149863427","WU_E_REDIRECTOR_ID_SMALLER","The redirectorId in the downloaded wuredir.cab is smaller than the cached cab." +"8024502D","-2145103827","2149863469","WU_E_PT_SAME_REDIR_ID","During recovery Protocol Talker failed to download a wuredir.cab with a newer redirectorId from the server" +"8024502E","-2145103826","2149863470","WU_E_PT_NO_MANAGED_RECOVER","A redirector recovery action was specified" +"80245FFF","-2145099777","2149867519","WU_E_REDIRECTOR_UNEXPECTED","generic unexpected redirector failure" +"80246001","-2145099775","2149867521","SUS_E_DM_URLNOTAVAILABLE","The requested file does not have an URL" +"80246002","-2145099774","2149867522","SUS_E_DM_INCORRECTFILEHASH","The file digest did not match the expected value" +"80246003","-2145099773","2149867523","WU_E_DM_UNKNOWNALGORITHM","The file metadata requested an unknown hash algorithm" +"80246004","-2145099772","2149867524","WU_E_DM_NEEDDOWNLOADREQUEST","A download request from a download handler is required." +"80246005","-2145099771","2149867525","SUS_E_DM_NONETWORK","Network connection was not available" +"80246006","-2145099770","2149867526","SUS_E_DM_WRONGBITSVERSION","The version of BITS installed on the machine is not compatible." +"80246007","-2145099769","2149867527","SUS_E_DM_NOTDOWNLOADED","The update has not been downloaded." +"80246008","-2145099768","2149867528","SUS_E_DM_FAILTOCONNECTTOBITS","Failed to create the IBackgroundCopyManager interface to BITS. The BITS service may have been disabled" +"80246009","-2145099767","2149867529","WU_E_DM_BITSTRANSFERERROR","A BITS transfer error occurred" +"80246FFF","-2145095681","2149871615","WU_E_DM_UNEXPECTED","generic unexpected download manager failure" +"80248000","-2145091584","2149875712","WU_E_DS_SHUTDOWN","The call failed because the SUS agent is shutting down" +"80248001","-2145091583","2149875713","WU_E_DS_INUSE","The call failed because the data store is in use and the operation can only be executed on an idle data store." +"80248002","-2145091582","2149875714","WU_E_DS_INVALID","The data store is in an invalid state. This can occur if we attempt to validate the database schema and find a mismatch between the current state and the state we expect." +"80248003","-2145091581","2149875715","WU_E_DS_TABLEMISSING","The data store has a missing table" +"80248004","-2145091580","2149875716","WU_E_DS_TABLEINCORRECT","The data store has a table whose columns are not what SUS expects" +"80248005","-2145091579","2149875717","WU_E_DS_INVALIDTABLENAME","The caller tried to open a table that is not in the datastore" +"80248006","-2145091578","2149875718","WU_E_DS_BADVERSION","The data store-version does not match what the client expects" +"80248007","-2145091577","2149875719","SUS_E_DS_NODATA","The caller asked for data that is not in the data store" +"80248008","-2145091576","2149875720","WU_E_DS_MISSINGDATA","The data store is in an invalid state because data that should be present is missing. This error can occur if we encounter a column in a table that is NULL when it is not allowed to be NULL." +"80248009","-2145091575","2149875721","WU_E_DS_MISSINGREF","The data store is in an invalid state because data that should be present is missing. This will occur if we try to fetch a linked row from another table and the linked row does not exist. This can happen with EULAs" +"8024800A","-2145091574","2149875722","WU_E_DS_UNKNOWNHANDLER","The caller attempted to add an update that used an unknown update handler" +"8024800B","-2145091573","2149875723","WU_E_DS_CANTDELETE","The caller attempted to delete an update that is referenced by one or more services" +"8024800C","-2145091572","2149875724","SUS_E_DS_LOCKTIMEOUTEXPIRED","The caller attempted to delete an update that is referenced by one or more services" +"8024800D","-2145091571","2149875725","WU_E_DS_NOCATEGORIES","The caller attempted to add a non-toplevel category update that contained no parent categories" +"8024800E","-2145091570","2149875726","WU_E_DS_ROWEXISTS","The caller attempted to add a row whose primary key matched an existing row" +"8024800F","-2145091569","2149875727","WU_E_DS_STOREFILELOCKED","We attempted to initialize the datastore" +"80248010","-2145091568","2149875728","WU_E_DS_CANNOTREGISTER","The caller is attepting to register the datastore with COM" +"80248011","-2145091567","2149875729","SUS_E_DS_UNABLETOSTART","Could not create an out of proc datastore object" +"80248012","-2145091566","2149875730","SUS_E_DS_MISSINGFILEFORURL","a file URL was passed in for a file that does not exist in the datastore" +"80248013","-2145091565","2149875731","SUS_E_DS_DUPLICATEUPDATEID","the server has passed the same update to the client with two different revision ids" +"80248014","-2145091564","2149875732","WU_E_DS_UNKNOWNSERVICE","the caller has requested some action on a service that is not known to the datastore" +"80248015","-2145091563","2149875733","SUS_E_DS_SERVICEEXPIRED","the caller has requested a service whose registration has expired" +"80248016","-2145091562","2149875734","WU_E_DS_DECLINENOTALLOWED","an update cannot be declined while it is deployed with a deadline by 1 or more services or if it is a mandatory update" +"80248017","-2145091561","2149875735","WU_E_DS_TABLESESSIONMISMATCH","the caller attempted to close a table with a session it was not associated with" +"80248018","-2145091560","2149875736","WU_E_DS_SESSIONLOCKMISMATCH","the caller attempted to close a table with a session it was not associated with" +"80248019","-2145091559","2149875737","WU_E_DS_NEEDWINDOWSSERVICE","the caller attempted to remove the windows update service without having another service configured that delivers updates to windows" +"8024801A","-2145091558","2149875738","WU_E_DS_INVALIDOPERATION","The attempted operation was not allowed" +"8024801B","-2145091557","2149875739","WU_E_DS_SCHEMAMISMATCH","The schema of a table in a backup XML file cannot be reconciled with the current store schema" +"8024801C","-2145091556","2149875740","WU_E_DS_RESETREQUIRED","The datastore required a reset and either the state of the current session was too complex to retry (it is in a caller initiated transaction or a caller acquired a section lock) or the reset failed. In either case" +"8024801D","-2145091555","2149875741","WU_E_DS_IMPERSONATED","The datastore cannot be called while impersonating" +"80248FFF","-2145087489","2149879807","WU_E_DS_UNEXPECTED","generic unexpected data store failure" +"8024A000","-2145083392","2149883904","WU_E_AU_NOSERVICE","AU was unable to service incoming AU calls" +"8024A001","-2145083391","2149883905","SUS_E_AU_LEGACYSERVER","" +"8024A002","-2145083390","2149883906","WU_E_AU_NONLEGACYSERVER","The legacy AU client stopped because the sus server has been upgraded" +"8024A003","-2145083389","2149883907","WU_E_AU_LEGACYCLIENTDISABLED","The legacy AU client stopped because it was disabled" +"8024A004","-2145083388","2149883908","WU_E_AU_PAUSED","AU was unable to service incoming AU calls because it was paused" +"8024AFFF","-2145079297","2149887999","WU_E_AU_UNEXPECTED","generic unexpected Automatic Updates" +"8024C001","-2145075199","2149892097","WU_E_DRV_PRUNED","Driver was pruned." +"8024C002","-2145075198","2149892098","WU_E_DRV_NOPROP_OR_LEGACY","A property wasn't found. Depending on the context this may not be an error. For example" +"8024C003","-2145075197","2149892099","WU_E_DRV_REG_MISMATCH","The registry type we read didn't match what was expected" +"8024C004","-2145075196","2149892100","WU_E_DRV_NO_METADATA","The driver Update didn't have a metadata blob" +"8024C005","-2145075195","2149892101","WU_E_DRV_MISSING_ATTRIBUTE","The driver Update metadata was missing a required attribute" +"8024C006","-2145075194","2149892102","WU_E_DRV_SYNC_FAILED","A driver sync operation failed" +"8024C007","-2145075193","2149892103","WU_E_DRV_NO_PRINTER_CONTENT","No printer driver content following SyncApplicablePrinters" +"8024CFFF","-2145071105","2149896191","WU_E_DRV_UNEXPECTED","generic unexpected driver utility failure" +"8024D001","-2145071103","2149896193","WU_E_SETUP_INVALID_INFDATA","Setup failed due to invalid data in the INF file." +"8024D002","-2145071102","2149896194","WU_E_SETUP_INVALID_IDENTDATA","Setup failed due to invalid data in the wuident file." +"8024D003","-2145071101","2149896195","WU_E_SETUP_ALREADY_INITIALIZED","Setup failed due to multiple initialization." +"8024D004","-2145071100","2149896196","WU_E_SETUP_NOT_INITIALIZED","Setup has not been initialized correctly." +"8024D005","-2145071099","2149896197","WU_E_SETUP_SOURCE_VERSION_MISMATCH","Setup failed as the version specified in the INF file doesn't match the source binary version." +"8024D006","-2145071098","2149896198","WU_E_SETUP_TARGET_VERSION_GREATER","Setup failed as the target version on the system is higher than source binary version." +"8024DFFF","-2145067009","2149900287","WU_E_SETUP_UNEXPECTED","Generic unexpected Setup failure." +"8024E001","-2145067007","2149900289","WU_E_EE_UNKNOWN_EXPRESSION","an expression handler was passed an expression that it doesn't know about" +"8024E002","-2145067006","2149900290","WU_E_EE_INVALID_EXPRESSION","an expression handler was passed an expression that is bad." +"8024E003","-2145067005","2149900291","WU_E_EE_MISSING_METADATA","an expression handler was passed an expression that requires an applicability metadata blob" +"8024E004","-2145067004","2149900292","WU_E_EE_INVALID_VERSION","Invalid version of the serialized expression data." +"8024E005","-2145067003","2149900293","WU_E_EE_NOT_INITIALIZED","The Expression Evaluator has not been initialized correctly." +"8024E006","-2145067002","2149900294","WU_E_EE_INVALID_ATTRIBUTEDATA","An invalid attribute data was passed to an expression evaluator." +"8024EFFF","-2145062913","2149904383","WU_E_EE_UNEXPECTED","generic unexpected expression evaluator failures" +"8024F001","-2145062911","2149904385","WU_E_REPORTER_EVENTCACHECORRUPT","event cache file was corrupt/malformed" +"8024F002","-2145062910","2149904386","WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED","event namespace descriptor XML could not be parsed" +"8024F003","-2145062909","2149904387","WU_E_INVALID_EVENT","event was reported with invalid/malformed data" +"8024F004","-2145062908","2149904388","WU_E_SERVER_BUSY","event was rejected by server because server was too busy" +"8024FFFF","-2145058817","2149908479","WU_E_REPORTER_UNEXPECTED","generic unexpected reporter failures" +"80D02002","-2133843966","2161123330","","The operation timed out." +"81F40001","-2114715647","2180251649","","Bundle condition evaluated to false. (Possibly `Microsoft.VCRedist.2015+.` with the wrong architecture.)" +"87FF0001","-2013331455","2281635841","Error_Label_Unreadable","" +"87FF0004","-2013331452","2281635844","Error_Too_Many_Open_Files","The system can not open the file" +"8A150001","-1978335231","2316632065","APPINSTALLER_CLI_ERROR_INTERNAL_ERROR","Internal Error" +"8A150002","-1978335230","2316632066","APPINSTALLER_CLI_ERROR_INVALID_CL_ARGUMENTS","Invalid command line arguments" +"8A150003","-1978335229","2316632067","APPINSTALLER_CLI_ERROR_COMMAND_FAILED","Executing command failed." +"8A150004","-1978335228","2316632068","APPINSTALLER_CLI_ERROR_MANIFEST_FAILED","Opening manifest failed" +"8A150005","-1978335227","2316632069","APPINSTALLER_CLI_ERROR_CTRL_SIGNAL_RECEIVED","Cancellation signal received" +"8A150006","-1978335226","2316632070","APPINSTALLER_CLI_ERROR_SHELLEXEC_INSTALL_FAILED","Running ShellExecute failed" +"8A150007","-1978335225","2316632071","APPINSTALLER_CLI_ERROR_UNSUPPORTED_MANIFESTVERSION","Cannot process manifest. The manifest version is higher than supported. Please update the client." +"8A150008","-1978335224","2316632072","APPINSTALLER_CLI_ERROR_DOWNLOAD_FAILED","Downloading installer failed" +"8A150009","-1978335223","2316632073","APPINSTALLER_CLI_ERROR_CANNOT_WRITE_TO_UPLEVEL_INDEX","Cannot write to index; it is a higher schema version" +"8A15000A","-1978335222","2316632074","APPINSTALLER_CLI_ERROR_INDEX_INTEGRITY_COMPROMISED","The index is corrupt" +"8A15000B","-1978335221","2316632075","APPINSTALLER_CLI_ERROR_SOURCES_INVALID","The configured source information is corrupt" +"8A15000C","-1978335220","2316632076","APPINSTALLER_CLI_ERROR_SOURCE_NAME_ALREADY_EXISTS","The source name is already configured" +"8A15000D","-1978335219","2316632077","APPINSTALLER_CLI_ERROR_INVALID_SOURCE_TYPE","The source type is invalid" +"8A15000E","-1978335218","2316632078","APPINSTALLER_CLI_ERROR_PACKAGE_IS_BUNDLE","The MSIX file is a bundle" +"8A15000F","-1978335217","2316632079","APPINSTALLER_CLI_ERROR_SOURCE_DATA_MISSING","Data required by the source is missing" +"8A150010","-1978335216","2316632080","APPINSTALLER_CLI_ERROR_NO_APPLICABLE_INSTALLER","None of the installers are applicable for the current system" +"8A150011","-1978335215","2316632081","APPINSTALLER_CLI_ERROR_INSTALLER_HASH_MISMATCH","The installer file's hash does not match the manifest" +"8A150012","-1978335214","2316632082","APPINSTALLER_CLI_ERROR_SOURCE_NAME_DOES_NOT_EXIST","The source name does not exist" +"8A150013","-1978335213","2316632083","APPINSTALLER_CLI_ERROR_SOURCE_ARG_ALREADY_EXISTS","The source location is already configured under another name" +"8A150014","-1978335212","2316632084","APPINSTALLER_CLI_ERROR_NO_APPLICATIONS_FOUND","No packages found" +"8A150015","-1978335211","2316632085","APPINSTALLER_CLI_ERROR_NO_SOURCES_DEFINED","No sources are configured" +"8A150016","-1978335210","2316632086","APPINSTALLER_CLI_ERROR_MULTIPLE_APPLICATIONS_FOUND","Multiple packages found matching the criteria" +"8A150017","-1978335209","2316632087","APPINSTALLER_CLI_ERROR_NO_MANIFEST_FOUND","No manifest found matching the criteria" +"8A150018","-1978335208","2316632088","APPINSTALLER_CLI_ERROR_EXTENSION_PUBLIC_FAILED","Failed to get Public folder from source package" +"8A150019","-1978335207","2316632089","APPINSTALLER_CLI_ERROR_COMMAND_REQUIRES_ADMIN","Command requires administrator privileges to run" +"8A15001A","-1978335206","2316632090","APPINSTALLER_CLI_ERROR_SOURCE_NOT_SECURE","The source location is not secure" +"8A15001B","-1978335205","2316632091","APPINSTALLER_CLI_ERROR_MSSTORE_BLOCKED_BY_POLICY","The Microsoft Store client is blocked by policy" +"8A15001C","-1978335204","2316632092","APPINSTALLER_CLI_ERROR_MSSTORE_APP_BLOCKED_BY_POLICY","The Microsoft Store app is blocked by policy" +"8A15001D","-1978335203","2316632093","APPINSTALLER_CLI_ERROR_EXPERIMENTAL_FEATURE_DISABLED","The feature is currently under development. It can be enabled using winget settings." +"8A15001E","-1978335202","2316632094","APPINSTALLER_CLI_ERROR_MSSTORE_INSTALL_FAILED","Failed to install the Microsoft Store app" +"8A15001F","-1978335201","2316632095","APPINSTALLER_CLI_ERROR_COMPLETE_INPUT_BAD","Failed to perform auto complete" +"8A150020","-1978335200","2316632096","APPINSTALLER_CLI_ERROR_YAML_INIT_FAILED","Failed to initialize YAML parser" +"8A150021","-1978335199","2316632097","APPINSTALLER_CLI_ERROR_YAML_INVALID_MAPPING_KEY","Encountered an invalid YAML key" +"8A150022","-1978335198","2316632098","APPINSTALLER_CLI_ERROR_YAML_DUPLICATE_MAPPING_KEY","Encountered a duplicate YAML key" +"8A150023","-1978335197","2316632099","APPINSTALLER_CLI_ERROR_YAML_INVALID_OPERATION","Invalid YAML operation" +"8A150024","-1978335196","2316632100","APPINSTALLER_CLI_ERROR_YAML_DOC_BUILD_FAILED","Failed to build YAML doc" +"8A150025","-1978335195","2316632101","APPINSTALLER_CLI_ERROR_YAML_INVALID_EMITTER_STATE","Invalid YAML emitter state" +"8A150026","-1978335194","2316632102","APPINSTALLER_CLI_ERROR_YAML_INVALID_DATA","Invalid YAML data" +"8A150027","-1978335193","2316632103","APPINSTALLER_CLI_ERROR_LIBYAML_ERROR","LibYAML error" +"8A150028","-1978335192","2316632104","APPINSTALLER_CLI_ERROR_MANIFEST_VALIDATION_WARNING","Manifest validation succeeded with warning" +"8A150029","-1978335191","2316632105","APPINSTALLER_CLI_ERROR_MANIFEST_VALIDATION_FAILURE","Manifest validation failed" +"8A15002A","-1978335190","2316632106","APPINSTALLER_CLI_ERROR_INVALID_MANIFEST","Manifest is invalid" +"8A15002B","-1978335189","2316632107","APPINSTALLER_CLI_ERROR_UPDATE_NOT_APPLICABLE","No applicable update found" +"8A15002C","-1978335188","2316632108","APPINSTALLER_CLI_ERROR_UPDATE_ALL_HAS_FAILURE","winget upgrade --all completed with failures" +"8A15002D","-1978335187","2316632109","APPINSTALLER_CLI_ERROR_INSTALLER_SECURITY_CHECK_FAILED","Installer failed security check. Another script should retry this about every 18 hours. " +"8A15002E","-1978335186","2316632110","APPINSTALLER_CLI_ERROR_DOWNLOAD_SIZE_MISMATCH","Download size does not match expected content length" +"8A15002F","-1978335185","2316632111","APPINSTALLER_CLI_ERROR_NO_UNINSTALL_INFO_FOUND","Uninstall command not found" +"8A150030","-1978335184","2316632112","APPINSTALLER_CLI_ERROR_EXEC_UNINSTALL_COMMAND_FAILED","Running uninstall command failed" +"8A150031","-1978335183","2316632113","APPINSTALLER_CLI_ERROR_ICU_BREAK_ITERATOR_ERROR","ICU break iterator error" +"8A150032","-1978335182","2316632114","APPINSTALLER_CLI_ERROR_ICU_CASEMAP_ERROR","ICU casemap error" +"8A150033","-1978335181","2316632115","APPINSTALLER_CLI_ERROR_ICU_REGEX_ERROR","ICU regex error" +"8A150034","-1978335180","2316632116","APPINSTALLER_CLI_ERROR_IMPORT_INSTALL_FAILED","Failed to install one or more imported packages" +"8A150035","-1978335179","2316632117","APPINSTALLER_CLI_ERROR_NOT_ALL_PACKAGES_FOUND","Could not find one or more requested packages" +"8A150036","-1978335178","2316632118","APPINSTALLER_CLI_ERROR_JSON_INVALID_FILE","Json file is invalid" +"8A150037","-1978335177","2316632119","APPINSTALLER_CLI_ERROR_SOURCE_NOT_REMOTE","The source location is not remote" +"8A150038","-1978335176","2316632120","APPINSTALLER_CLI_ERROR_UNSUPPORTED_RESTSOURCE","The configured REST API source is not supported" +"8A150039","-1978335175","2316632121","APPINSTALLER_CLI_ERROR_RESTSOURCE_INVALID_DATA","Invalid data returned by REST API source" +"8A15003A","-1978335174","2316632122","APPINSTALLER_CLI_ERROR_BLOCKED_BY_POLICY","Operation is blocked by Group Policy" +"8A15003B","-1978335173","2316632123","APPINSTALLER_CLI_ERROR_RESTAPI_INTERNAL_ERROR","REST API sourceinternal error" +"8A15003C","-1978335172","2316632124","APPINSTALLER_CLI_ERROR_RESTSOURCE_INVALID_URL","Invalid REST API sourceurl" +"8A15003D","-1978335171","2316632125","APPINSTALLER_CLI_ERROR_RESTAPI_UNSUPPORTED_MIME_TYPE","Unsupported MIME type returned by REST API source" +"8A15003E","-1978335170","2316632126","APPINSTALLER_CLI_ERROR_RESTSOURCE_INVALID_VERSION","Invalid REST API source contract version" +"8A15003F","-1978335169","2316632127","APPINSTALLER_CLI_ERROR_SOURCE_DATA_INTEGRITY_FAILURE","The source data is corrupted or tampered" +"8A150040","-1978335168","2316632128","APPINSTALLER_CLI_ERROR_STREAM_READ_FAILURE","Error reading from the stream" +"8A150041","-1978335167","2316632129","APPINSTALLER_CLI_ERROR_PACKAGE_AGREEMENTS_NOT_ACCEPTED","Package agreements were not agreed to" +"8A150042","-1978335166","2316632130","APPINSTALLER_CLI_ERROR_PROMPT_INPUT_ERROR","Error reading input in prompt" +"8A150043","-1978335165","2316632131","APPINSTALLER_CLI_ERROR_UNSUPPORTED_SOURCE_REQUEST","The search request is not supported by one or more sources" +"8A150044","-1978335164","2316632132","APPINSTALLER_CLI_ERROR_RESTAPI_ENDPOINT_NOT_FOUND","The REST API source endpoint is not found." +"8A150045","-1978335163","2316632133","APPINSTALLER_CLI_ERROR_SOURCE_OPEN_FAILED","Failed to open the source." +"8A150046","-1978335162","2316632134","APPINSTALLER_CLI_ERROR_SOURCE_AGREEMENTS_NOT_ACCEPTED","Source agreements were not agreed to" +"8A150047","-1978335161","2316632135","APPINSTALLER_CLI_ERROR_CUSTOMHEADER_EXCEEDS_MAXLENGTH","Header size exceeds the allowable limit of 1024 characters. Please reduce the size and try again." +"8A150048","-1978335160","2316632136","APPINSTALLER_CLI_ERROR_MISSING_RESOURCE_FILE","Missing resource file" +"8A150049","-1978335159","2316632137","APPINSTALLER_CLI_ERROR_MSI_INSTALL_FAILED","Running MSI install failed" +"8A15004A","-1978335158","2316632138","APPINSTALLER_CLI_ERROR_INVALID_MSIEXEC_ARGUMENT","Arguments for msiexec are invalid" +"8A15004B","-1978335157","2316632139","APPINSTALLER_CLI_ERROR_FAILED_TO_OPEN_ALL_SOURCES","Failed to open one or more sources" +"8A15004C","-1978335156","2316632140","APPINSTALLER_CLI_ERROR_DEPENDENCIES_VALIDATION_FAILED","Failed to validate dependencies" +"8A15004D","-1978335155","2316632141","APPINSTALLER_CLI_ERROR_MISSING_PACKAGE","One or more package is missing" +"8A15004E","-1978335154","2316632142","APPINSTALLER_CLI_ERROR_INVALID_TABLE_COLUMN","Invalid table column" +"8A15004F","-1978335153","2316632143","APPINSTALLER_CLI_ERROR_UPGRADE_VERSION_NOT_NEWER","The upgrade version is not newer than the installed version" +"8A150050","-1978335152","2316632144","APPINSTALLER_CLI_ERROR_UPGRADE_VERSION_UNKNOWN","Upgrade version is unknown and override is not specified" +"8A150051","-1978335151","2316632145","APPINSTALLER_CLI_ERROR_ICU_CONVERSION_ERROR","ICU conversion error" +"8A150052","-1978335150","2316632146","APPINSTALLER_CLI_ERROR_PORTABLE_INSTALL_FAILED","Failed to install portable package" +"8A150053","-1978335149","2316632147","APPINSTALLER_CLI_ERROR_PORTABLE_REPARSE_POINT_NOT_SUPPORTED","Volume does not support reparse points." +"8A150054","-1978335148","2316632148","APPINSTALLER_CLI_ERROR_PORTABLE_PACKAGE_ALREADY_EXISTS","Portable package from a different source already exists." +"8A150055","-1978335147","2316632149","APPINSTALLER_CLI_ERROR_PORTABLE_SYMLINK_PATH_IS_DIRECTORY","Unable to create symlink" +"8A150056","-1978335146","2316632150","APPINSTALLER_CLI_ERROR_INSTALLER_PROHIBITS_ELEVATION","The installer cannot be run from an administrator context. Does this package require `ElevationRequirement: elevationProhibited`?" +"8A150057","-1978335145","2316632151","APPINSTALLER_CLI_ERROR_PORTABLE_UNINSTALL_FAILED","Failed to uninstall portable package" +"8A150058","-1978335144","2316632152","APPINSTALLER_CLI_ERROR_ARP_VERSION_VALIDATION_FAILED","Failed to validate DisplayVersion values against index." +"8A150059","-1978335143","2316632153","APPINSTALLER_CLI_ERROR_UNSUPPORTED_ARGUMENT","One or more arguments are not supported." +"8A15005A","-1978335142","2316632154","APPINSTALLER_CLI_ERROR_BIND_WITH_EMBEDDED_NULL","Embedded null characters are disallowed for SQLite" +"8A15005B","-1978335141","2316632155","APPINSTALLER_CLI_ERROR_NESTEDINSTALLER_NOT_FOUND","Failed to find the nested installer in the archive. Does the `RelativeFilePath` have the previous version number in it?" +"8A15005C","-1978335140","2316632156","APPINSTALLER_CLI_ERROR_EXTRACT_ARCHIVE_FAILED","Failed to extract archive. Does the `InstallerUrl` actually end in `.zip`,or does it have a different extension? " +"8A15005D","-1978335139","2316632157","APPINSTALLER_CLI_ERROR_NESTEDINSTALLER_INVALID_PATH","Invalid relative file path to nested installer provided." +"8A15005E","-1978335138","2316632158","APPINSTALLER_CLI_ERROR_PINNED_CERTIFICATE_MISMATCH","The server certificate did not match any of the expected values." +"8A15005F","-1978335137","2316632159","APPINSTALLER_CLI_ERROR_INSTALL_LOCATION_REQUIRED","Install location must be provided." +"8A150060","-1978335136","2316632160","APPINSTALLER_CLI_ERROR_ARCHIVE_SCAN_FAILED","Archive malware scan failed." +"8A150061","-1978335135","2316632161","APPINSTALLER_CLI_ERROR_PACKAGE_ALREADY_INSTALLED","Found at least one version of the package installed." +"8A150062","-1978335134","2316632162","APPINSTALLER_CLI_ERROR_PIN_ALREADY_EXISTS","A pin already exists for the package." +"8A150063","-1978335133","2316632163","APPINSTALLER_CLI_ERROR_PIN_DOES_NOT_EXIST","There is no pin for the package." +"8A150064","-1978335132","2316632164","APPINSTALLER_CLI_ERROR_CANNOT_OPEN_PINNING_INDEX","Unable to open the pin database." +"8A150065","-1978335131","2316632165","APPINSTALLER_CLI_ERROR_MULTIPLE_INSTALL_FAILED","One or more applications failed to install" +"8A150066","-1978335130","2316632166","APPINSTALLER_CLI_ERROR_MULTIPLE_UNINSTALL_FAILED","One or more applications failed to uninstall" +"8A150067","-1978335129","2316632167","APPINSTALLER_CLI_ERROR_NOT_ALL_QUERIES_FOUND_SINGLE","One or more queries did not return exactly one match" +"8A150068","-1978335128","2316632168","APPINSTALLER_CLI_ERROR_PACKAGE_IS_PINNED","The package has a pin that prevents upgrade." +"8A150069","-1978335127","2316632169","APPINSTALLER_CLI_ERROR_PACKAGE_IS_STUB","The package currently installed is the stub package" +"8A15006A","-1978335126","2316632170","APPINSTALLER_CLI_ERROR_APPTERMINATION_RECEIVED","Application shutdown signal received" +"8A15006B","-1978335125","2316632171","APPINSTALLER_CLI_ERROR_DOWNLOAD_DEPENDENCIES","Failed to download package dependencies." +"8A15006C","-1978335124","2316632172","APPINSTALLER_CLI_ERROR_DOWNLOAD_COMMAND_PROHIBITED","Failed to download package. Download for offline installation is prohibited." +"8A15006D","-1978335123","2316632173","APPINSTALLER_CLI_ERROR_SERVICE_UNAVAILABLE","A required service is busy or unavailable. Try again later." +"8A15006E","-1978335122","2316632174","APPINSTALLER_CLI_ERROR_RESUME_ID_NOT_FOUND","The guid provided does not correspond to a valid resume state." +"8A15006F","-1978335121","2316632175","APPINSTALLER_CLI_ERROR_CLIENT_VERSION_MISMATCH","The current client version did not match the client version of the saved state." +"8A150070","-1978335120","2316632176","APPINSTALLER_CLI_ERROR_INVALID_RESUME_STATE","The resume state data is invalid." +"8A150071","-1978335119","2316632177","APPINSTALLER_CLI_ERROR_CANNOT_OPEN_CHECKPOINT_INDEX","Unable to open the checkpoint database." +"8A150072","-1978335118","2316632178","APPINSTALLER_CLI_ERROR_RESUME_LIMIT_EXCEEDED","Exceeded max resume limit." +"8A150073","-1978335117","2316632179","APPINSTALLER_CLI_ERROR_INVALID_AUTHENTICATION_INFO","Invalid authentication info." +"8A150074","-1978335116","2316632180","APPINSTALLER_CLI_ERROR_AUTHENTICATION_TYPE_NOT_SUPPORTED","Authentication method not supported." +"8A150075","-1978335115","2316632181","APPINSTALLER_CLI_ERROR_AUTHENTICATION_FAILED","Authentication failed." +"8A150076","-1978335114","2316632182","APPINSTALLER_CLI_ERROR_AUTHENTICATION_INTERACTIVE_REQUIRED","Authentication failed. Interactive authentication required." +"8A150077","-1978335113","2316632183","APPINSTALLER_CLI_ERROR_AUTHENTICATION_CANCELLED_BY_USER","Authentication failed. User cancelled." +"8A150078","-1978335112","2316632184","APPINSTALLER_CLI_ERROR_AUTHENTICATION_INCORRECT_ACCOUNT","Authentication failed. Authenticated account is not the desired account." +"8A150079","-1978335111","2316632185","APPINSTALLER_CLI_ERROR_NO_REPAIR_INFO_FOUND","Repair command not found." +"8A15007A","-1978335110","2316632186","APPINSTALLER_CLI_ERROR_REPAIR_NOT_APPLICABLE","Repair operation is not applicable." +"8A15007B","-1978335109","2316632187","APPINSTALLER_CLI_ERROR_EXEC_REPAIR_FAILED","Repair operation failed." +"8A15007C","-1978335108","2316632188","APPINSTALLER_CLI_ERROR_REPAIR_NOT_SUPPORTED","The installer technology in use doesn't support repair." +"8A15007D","-1978335107","2316632189","APPINSTALLER_CLI_ERROR_ADMIN_CONTEXT_REPAIR_PROHIBITED","Repair operations involving administrator privileges are not permitted on packages installed within the user scope." +"8A15007E","-1978335106","2316632190","APPINSTALLER_CLI_ERROR_SQLITE_CONNECTION_TERMINATED","The SQLite connection was terminated to prevent corruption." +"8A15007F","-1978335105","2316632191","APPINSTALLER_CLI_ERROR_DISPLAYCATALOG_API_FAILED","Failed to get Microsoft Store package catalog." +"8A150080","-1978335104","2316632192","APPINSTALLER_CLI_ERROR_NO_APPLICABLE_DISPLAYCATALOG_PACKAGE","No applicable Microsoft Store package found from Microsoft Store package catalog." +"8A150081","-1978335103","2316632193","APPINSTALLER_CLI_ERROR_SFSCLIENT_API_FAILED","Failed to get Microsoft Store package download information." +"8A150082","-1978335102","2316632194","APPINSTALLER_CLI_ERROR_NO_APPLICABLE_SFSCLIENT_PACKAGE","No applicable Microsoft Store package download information found." +"8A150083","-1978335101","2316632195","APPINSTALLER_CLI_ERROR_LICENSING_API_FAILED","Failed to retrieve Microsoft Store package license." +"8A150084","-1978335100","2316632196","APPINSTALLER_CLI_ERROR_SFSCLIENT_PACKAGE_NOT_SUPPORTED","The Microsoft Store package does not support download command." +"8A150085","-1978335099","2316632197","APPINSTALLER_CLI_ERROR_LICENSING_API_FAILED_FORBIDDEN","Failed to retrieve Microsoft Store package license. The Microsoft Entra Id account does not have required privilege." +"8A150086","-1978335098","2316632198","APPINSTALLER_CLI_ERROR_INSTALLER_ZERO_BYTE_FILE","Downloaded zero byte installer; ensure that your network connection is working properly." +"8A150101","-1978334975","2316632321","APPINSTALLER_CLI_ERROR_INSTALL_PACKAGE_IN_USE","Application is currently running. Exit the application then try again." +"8A150102","-1978334974","2316632322","APPINSTALLER_CLI_ERROR_INSTALL_INSTALL_IN_PROGRESS","Another installation is already in progress. Try again later." +"8A150103","-1978334973","2316632323","APPINSTALLER_CLI_ERROR_INSTALL_FILE_IN_USE","One or more file is being used. Exit the application then try again." +"8A150104","-1978334972","2316632324","APPINSTALLER_CLI_ERROR_INSTALL_MISSING_DEPENDENCY","This package has a dependency missing from your system. (The most common dependency is `Microsoft.VCRedist.2015+.x64` / `.x86`)" +"8A150105","-1978334971","2316632325","APPINSTALLER_CLI_ERROR_INSTALL_DISK_FULL","There's no more space on your PC. Make space" +"8A150106","-1978334970","2316632326","APPINSTALLER_CLI_ERROR_INSTALL_INSUFFICIENT_MEMORY","There's not enough memory available to install. Close other applications then try again." +"8A150107","-1978334969","2316632327","APPINSTALLER_CLI_ERROR_INSTALL_NO_NETWORK","This application requires internet connectivity. Connect to a network then try again." +"8A150108","-1978334968","2316632328","APPINSTALLER_CLI_ERROR_INSTALL_CONTACT_SUPPORT","This application encountered an error during installation. Contact support." +"8A150109","-1978334967","2316632329","APPINSTALLER_CLI_ERROR_INSTALL_REBOOT_REQUIRED_TO_FINISH","Restart your PC to finish installation." +"8A15010A","-1978334966","2316632330","APPINSTALLER_CLI_ERROR_INSTALL_REBOOT_REQUIRED_TO_INSTALL","Installation failed. Restart your PC then try again." +"8A15010B","-1978334965","2316632331","APPINSTALLER_CLI_ERROR_INSTALL_REBOOT_INITIATED","Your PC will restart to finish installation." +"8A15010C","-1978334964","2316632332","APPINSTALLER_CLI_ERROR_INSTALL_CANCELLED_BY_USER","You cancelled the installation." +"8A15010D","-1978334963","2316632333","APPINSTALLER_CLI_ERROR_INSTALL_ALREADY_INSTALLED","Another version of this application is already installed." +"8A15010E","-1978334962","2316632334","APPINSTALLER_CLI_ERROR_INSTALL_DOWNGRADE","A higher version of this application is already installed." +"8A15010F","-1978334961","2316632335","APPINSTALLER_CLI_ERROR_INSTALL_BLOCKED_BY_POLICY","Organization policies are preventing installation. Contact your admin." +"8A150110","-1978334960","2316632336","APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES","Failed to install package dependencies." +"8A150111","-1978334959","2316632337","APPINSTALLER_CLI_ERROR_INSTALL_PACKAGE_IN_USE_BY_APPLICATION","Application is currently in use by another application." +"8A150112","-1978334958","2316632338","APPINSTALLER_CLI_ERROR_INSTALL_INVALID_PARAMETER","Invalid parameter." +"8A150113","-1978334957","2316632339","APPINSTALLER_CLI_ERROR_INSTALL_SYSTEM_NOT_SUPPORTED","Package not supported by the system." +"8A150114","-1978334956","2316632340","APPINSTALLER_CLI_ERROR_INSTALL_UPGRADE_NOT_SUPPORTED","The installer does not support upgrading an existing package." +"8A150115","-1978334955","2316632341","APPINSTALLER_CLI_ERROR_INSTALL_CUSTOM_ERROR","Installation failed with installer custom error." +"8A150201","-1978334719","2316632577","WINGET_INSTALLED_STATUS_ARP_ENTRY_NOT_FOUND","The Apps and Features Entry for the package could not be found." +"8A150202","-1978334718","2316632578","WINGET_INSTALLED_STATUS_INSTALL_LOCATION_NOT_APPLICABLE","The install location is not applicable." +"8A150203","-1978334717","2316632579","WINGET_INSTALLED_STATUS_INSTALL_LOCATION_NOT_FOUND","The install location could not be found." +"8A150204","-1978334716","2316632580","WINGET_INSTALLED_STATUS_FILE_HASH_MISMATCH","The hash of the existing file did not match." +"8A150205","-1978334715","2316632581","WINGET_INSTALLED_STATUS_FILE_NOT_FOUND","File not found." +"8A150206","-1978334714","2316632582","WINGET_INSTALLED_STATUS_FILE_FOUND_WITHOUT_HASH_CHECK","The file was found but the hash was not checked." +"8A150207","-1978334713","2316632583","WINGET_INSTALLED_STATUS_FILE_ACCESS_ERROR","The file could not be accessed." +"8A15C001","-1978286079","2316681217","WINGET_CONFIG_ERROR_INVALID_CONFIGURATION_FILE","The configuration file is invalid." +"8A15C002","-1978286078","2316681218","WINGET_CONFIG_ERROR_INVALID_YAML","The YAML syntax is invalid." +"8A15C003","-1978286077","2316681219","WINGET_CONFIG_ERROR_INVALID_FIELD_TYPE","A configuration field has an invalid type." +"8A15C004","-1978286076","2316681220","WINGET_CONFIG_ERROR_UNKNOWN_CONFIGURATION_FILE_VERSION","The configuration has an unknown version." +"8A15C005","-1978286075","2316681221","WINGET_CONFIG_ERROR_SET_APPLY_FAILED","An error occurred while applying the configuration." +"8A15C006","-1978286074","2316681222","WINGET_CONFIG_ERROR_DUPLICATE_IDENTIFIER","The configuration contains a duplicate identifier." +"8A15C007","-1978286073","2316681223","WINGET_CONFIG_ERROR_MISSING_DEPENDENCY","The configuration is missing a dependency." +"8A15C008","-1978286072","2316681224","WINGET_CONFIG_ERROR_DEPENDENCY_UNSATISFIED","The configuration has an unsatisfied dependency." +"8A15C009","-1978286071","2316681225","WINGET_CONFIG_ERROR_ASSERTION_FAILED","An assertion for the configuration unit failed." +"8A15C00A","-1978286070","2316681226","WINGET_CONFIG_ERROR_MANUALLY_SKIPPED","The configuration was manually skipped." +"8A15C00B","-1978286069","2316681227","WINGET_CONFIG_ERROR_WARNING_NOT_ACCEPTED","A warning was thrown and the user declined to continue execution." +"8A15C00C","-1978286068","2316681228","WINGET_CONFIG_ERROR_SET_DEPENDENCY_CYCLE","The dependency graph contains a cycle which cannot be resolved." +"8A15C00D","-1978286067","2316681229","WINGET_CONFIG_ERROR_INVALID_FIELD_VALUE","The configuration has an invalid field value." +"8A15C00E","-1978286066","2316681230","WINGET_CONFIG_ERROR_MISSING_FIELD","The configuration is missing a field." +"8A15C00F","-1978286065","2316681231","WINGET_CONFIG_ERROR_TEST_FAILED","Some of the configuration units failed while testing their state." +"8A15C010","-1978286064","2316681232","WINGET_CONFIG_ERROR_TEST_NOT_RUN","Configuration state was not tested." +"8A15C011","-1978286063","2316681233","WINGET_CONFIG_ERROR_GET_FAILED","The configuration unit failed getting its properties." +"8A15C012","-1978286062","2316681234","WINGET_CONFIG_ERROR_HISTORY_ITEM_NOT_FOUND","The specified configuration could not be found." +"8A15C013","-1978286061","2316681235","WINGET_CONFIG_ERROR_PARAMETER_INTEGRITY_BOUNDARY","Parameter cannot be passed across integrity boundary." +"8A15C101","-1978285823","2316681473","WINGET_CONFIG_ERROR_UNIT_NOT_INSTALLED","The configuration unit was not installed." +"8A15C102","-1978285822","2316681474","WINGET_CONFIG_ERROR_UNIT_NOT_FOUND_REPOSITORY","The configuration unit could not be found." +"8A15C103","-1978285821","2316681475","WINGET_CONFIG_ERROR_UNIT_MULTIPLE_MATCHES","Multiple matches were found for the configuration unit specify the module to select the correct one." +"8A15C104","-1978285820","2316681476","WINGET_CONFIG_ERROR_UNIT_INVOKE_GET","The configuration unit failed while attempting to get the current system state." +"8A15C105","-1978285819","2316681477","WINGET_CONFIG_ERROR_UNIT_INVOKE_TEST","The configuration unit failed while attempting to test the current system state." +"8A15C106","-1978285818","2316681478","WINGET_CONFIG_ERROR_UNIT_INVOKE_SET","The configuration unit failed while attempting to apply the desired state." +"8A15C107","-1978285817","2316681479","WINGET_CONFIG_ERROR_UNIT_MODULE_CONFLICT","The module for the configuration unit is available in multiple locations with the same version." +"8A15C108","-1978285816","2316681480","WINGET_CONFIG_ERROR_UNIT_IMPORT_MODULE","Loading the module for the configuration unit failed." +"8A15C109","-1978285815","2316681481","WINGET_CONFIG_ERROR_UNIT_INVOKE_INVALID_RESULT","The configuration unit returned an unexpected result during execution." +"8A15C110","-1978285814","2316681482","WINGET_CONFIG_ERROR_UNIT_SETTING_CONFIG_ROOT","A unit contains a setting that requires the config root." +"8A15C111","-1978285813","2316681483","WINGET_CONFIG_ERROR_UNIT_IMPORT_MODULE_ADMIN","Loading the module for the configuration unit failed because it requires administrator privileges to run." +"8A15C112","-1978285812","2316681484","WINGET_CONFIG_ERROR_NOT_SUPPORTED_BY_PROCESSOR","Operation is not supported by the configuration processor." +"8DDD0001","-1914896383","2380070913","ErrorNoScripting","" +"8DDD0002","-1914896382","2380070914","ErrorNotAdmin","" +"8DDD0003","-1914896381","2380070915","ErrorDisabled","Site timeout waiting for the control." +"8DDD0004","-1914896380","2380070916","ErrorControlFailed","" +"8DDD0006","-1914896378","2380070918","ErrorWin2KLessThanSP3","" +"8DDD0007","-1914896377","2380070919","ErrorRebootRequired","" +"8DDD000F","-1914896369","2380070927","ErrorIis404","" +"8DDD0010","-1914896368","2380070928","ErrorIis500","" +"8DDD0012","-1914896366","2380070930","ErrorNoFrames","" +"8DDD0018","-1914896360","2380070936","ErrorAUDisabled","AU could be disabled" +"00002390","9104","-4294958192","DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS","This value was also named DNS_ERROR_INVALID_NSEC3_PARAMETERS" +"C0000005","-1073741819","3221225477","STATUS_ACCESS_VIOLATION","Possibly [Access Violation](https://learn.microsoft.com/en-us/shows/inside/access-violation-c0000005-execute). (This is occasionally seen in PRs despite the install otherwise being successful. Should it be added as an `InstallerSuccessCode` or similar here?)" +"C0000006","-1073741818","3221225478","STATUS_IN_PAGE_ERROR","" +"C0000017","-1073741801","3221225495","","Not enough virtual memory is available. (VM ran out of RAM)" +"C000001D","-1073741795","3221225501","STATUS_ILLEGAL_INSTRUCTION","" +"C000001E","-1073741794","3221225502","STATUS_INVALID_LOCK_SEQUENCE","" +"C0000090","-1073741680","3221225616","STATUS_FLOAT_INVALID OPERATION","" +"C0000096","-1073741674","3221225622","STATUS_PRIVILEGED_INSTRUCTION","" +"C00000FD","-1073741571","3221225725","STATUS_STACK_OVERFLOW","Stack overflow / exhaustion." +"C0000135","-1073741515","3221225781","STATUS_DLL_NOT_FOUND","Possibly due to a missing dependency. (The most common dependency is `Microsoft.VCRedist.2015+.x64` / `.x86`)" +"C000013A","-1073741510","3221225786","STATUS_CONTROL_C_EXIT","The application terminated as a result of a CTRL+C." +"C0000142","-1073741502","3221225794","STATUS_DLL_INIT_FAILED","The application failed to initialize properly - does this package require `ElevationRequirement: elevationRequired`? " +"C0000194","-1073741420","3221225876","Status_Not_Found","object not found" +"C0000354","-1073740972","3221226324","Status_Debugger_Inactive","An attempt to do an operation on a debug port failed because the port is in the process of being deleted." +"C0000409","-1073740791","3221226505","","Stack overflow / exhaustion." +"c0000602","-1073740286","3221227010","","A fail fast exception occurred. Exception handlers will not be invoked and the process will be terminated immediately." +"C8000147","-939523769","3355443527","NULL","" +"C8000152","-939523758","3355443538","MCIERR_Seq_Port_Nonexistent","" +"C8000158","-939523752","3355443544","NULL","" +"C80001FE","-939523586","3355443710","hrLogWriteFail","unable to write to the log file" +"C8000211","-939523567","3355443729","hrLogDiskFull","" +"C8000240","-939523520","3355443776","SE_Auditid_Assign_Special_Priv","" +"C80003F3","-939523085","3355444211","hrOutOfMemory","The computer is out of memory" +"C80003F6","-939523082","3355444214","hrOutOfBuffers","out of database page buffers" +"C80003FA","-939523078","3355444218","hrReadVerifyFailure","" +"C80003FB","-939523077","3355444219","Error_No_Log_Space","System could not allocate the required space in a registry log" +"C80003FE","-939523074","3355444222","hrDiskIO","" +"C8000442","-939523006","3355444290","CS_Event_reg_Operations_Failed","" +"C800044E","-939522994","3355444302","hrWriteConflict","The write lock failed due to an outstanding write lock" +"C8000710","-939522288","3355445008","hrDiskFull","" +"D0000005","-805306363","3489660933","ERROR_ACCESS_DENIED","" +"D0000006","-805306362","3489660934","Error_Invalid_Handle","" +"D0000008","-805306360","3489660936","ERROR_NOT_ENOUGH_MEMORY","not enough storage is available to process this command" +"D0000017","-805306345","3489660951","Error_CRC","" +"D0000018","-805306344","3489660952","Error_Bad_Length","the program issued a command but the command length is incorrect" +"D000001D","-805306339","3489660957","Error_Write_Fault","the system cannot write the specified device" +"D0000022","-805306334","3489660962","Error_Wrong_Disk","" +"D000012D","-805306067","3489661229","HTTP_Status_Moved","Object Permanently moved" +"D0000135","-805306059","3489661237","MCIErr_Set_Drive","" +"D000013A","-805306054","3489661242","NULL","" +"D0000142","-805306046","3489661250","MCIERR_Wave_Inputsinuse","" +"D0000194","-805305964","3489661332","HTTP_Status_Not_Found","" +"D0000354","-805305516","3489661780","NULL","" +"E0000101","-536870655","3758096641","ERROR_SECTION_NOT_FOUND","" +"E0000201","-536870399","3758096897","ERROR_CLASS_MISMATCH","" +"E0000203","-536870397","3758096899","ERROR_NO_DRIVER_SELECTED","" +"E000020B","-536870389","3758096907","ERROR_NO_SUCH_DEVINST","" +"E000020D","-536870387","3758096909","ERROR_INVALID_CLASS_INSTALLER","" +"E0000217","-536870377","3758096919","ERROR_BAD_SERVICE_INSTALLSECT","" +"E0000219","-536870375","3758096921","ERROR_NO_ASSOCIATED_SERVICE","" +"E000022B","-536870357","3758096939","ERROR_DI_DONT_INSTALL","" +"E000022D","-536870355","3758096941","ERROR_NON_WINDOWS_NT_DRIVER","" +"E000022F","-536870353","3758096943","ERROR_NO_CATALOG_FOR_OEM_INF","" +"E0000230","-536870352","3758096944","ERROR_DEVINSTALL_QUEUE_NONNATIVE","" +"E0000234","-536870348","3758096948","ERROR_DRIVER_NONNATIVE","" +"E000023A","-536870342","3758096954","ERROR_PNP REGISTRY_ERROR","" +"E0434352","-532462766","3762504530","EXCEPTION_COMPLUS","Unhandled Exception" +"E0434F4D","-532459699","3762507597","","Unhandled exception in .NET application." +"E6000000","3858759680","-436207616","","Required hardware is not present. " +"FFFFF8F0","-1808","4294965488","JET_errDiskFull","" +"FFFFFB40","-1216","4294966080","JET_errAttachedDatabaseMismatch","" +"FFFFFB4A","-1206","4294966090","JET_errDatabaseCorrupted","" +"FFFFFBBE","-1090","4294966206","JET_errInstanceUnavailable","" +"FFFFFBF8","-1032","4294966264","JET_errFileAccessDenied","" +"FFFFFC01","-1023","4294966273","NULL","" +"FFFFFC02","-1022","4294966274","JET_errDiskIO","" +"FFFFFC06","-1018","4294966278","JET_errReadVerifyFailure","" +"FFFFFC0D","-1011","4294966285","JET_errOutOfMemory","" +"FFFFFDC9","-567","4294966729","JET_errDbTimeTooNew","" +"FFFFFDDA","-550","4294966746","JET_errDatabaseInconsistent","" +"FFFFFDEC","-532","4294966764","NULL","" +"FFFFFDFD","-515","4294966781","JET_errInvalidLogSequence","" +"FFFFFE02","-510","4294966786","JET_errLogWriteFail","" +"FFFFFE0B","-501","4294966795","JET_errLogFileCorrupt","" +"FFFFFF99","-103","4294967193","JET_errOutOfThreads","" +"FFFFFFFF","-1","4294967295","Cancel","" diff --git a/Tools/LabelActions.csv b/Tools/LabelActions.csv new file mode 100644 index 0000000000000..439d93360d241 --- /dev/null +++ b/Tools/LabelActions.csv @@ -0,0 +1,9 @@ +"Label","Logset","StringSet","MatchOffset","LengthSet" +"Binary-Validation-Error","29|41|37|","0","","" +"Internal-Error","29|15|25|54|56|57|58","1|9|12","","" +"Manifest-AppsAndFeaturesVersion-Error","29|30|14|42|46|48|34","1|2","","" +"Manifest-Installer-Validation-Error","29|42|43|48","1|2","","" +"Manifest-Validation-Error","29|30|14|23|34|39|42|46|47","8|2|10|11","","" +"PullRequest-Error","29|13|14|27|33|41|45|68","1|9","","" +"Validation-Forbidden-URL-Error","29|21|23|53|55","9","","" +"Error-Hash-Mismatch","29|53|25|41|57|59|60|46","0","","10" diff --git a/Tools/ManualValidationPipeline.cs b/Tools/ManualValidationPipeline.cs new file mode 100644 index 0000000000000..1c6e821ddb409 --- /dev/null +++ b/Tools/ManualValidationPipeline.cs @@ -0,0 +1,5257 @@ +//Copyright 2022-2025 Microsoft Corporation +//Author: Stephen Gillie +//Title: WinGet Approval Pipeline v3.-4.0 +//Created: 1/19/2024 +//Updated: 3/3/2025 +//Notes: Tool to streamline evaluating winget-pkgs PRs. + + + + + + +/*Contents: +- Init vars +- Boilerplate +- UI top-of-box + - Menu +- Tabs +- Automation Tools +- PR Tools +- Network Tools +- Validation Starts Here +- Manifests Etc +- VM Image Management +- VM Pipeline Management +- VM Status +- VM Versioning +- VM Orchestration +- File Management +- Reporting +- Clipboard +- Et Cetera +- Utility functions +- Powershell equivalency +- VM Window management +- Event Handlers +- Inject into PRs +- Inject into files +- Misc data + +Need work: +1. HourlyRun (pending) + - LabelAction (needs testing) + - DefenderFail (pending) + - PRStateFromComments (needs rewrite) + - ADOLog (needs testing) +2. PR Watcher bulk approvals & RandomIEDS (pending) + - Validation DataGridView needs a function to write to it. + - ListingDiff (pending) + - ManifestListing (pending) +3. ToWork Search & Full ToWork Run (need rewrite) + - PRStateFromComments (needs rewrite) +4. Every second / 5 seconds - Run Tracker + - VM Window arrangement (50% rewritten) + - VM Cycle (pending) + - GenerateVM (pending) + - DisgenerateVM (pending) + - RenameVM (pending) + - RedoCheckpoint (pending) + - CheckpointVM (pending) + - RemoveVMSnapshot (pending) + - ImportVM (pending) + - SetVMMemory (pending) + - RebuildStatus (pending) + - Automatic VM rotation (pending) +7. Update manifest tools + - SingleFileAutomation (pending) + - ManifestAutomation (pending) + - ManifestFile (pending) +8. AddValidationData - need a form to fill out. (and testing) +9. FullReport (needs testing) +10. AddPRToRecord (needs bugfix) + - Squash-merge and Closed stats should be higher, but some of the data is “evaporating” before it reaches the logs. +11. PRReportFromRecord (needs testing) +12. Import new image VM + - MoveVMStorage (pending) + - ImageVMMove (pending) +13. Win11 image VM + - ImageVMStart (pending) + - ImageVMStop (pending) +14. Update manifest + - In PR + - AddDependencyToPR (pending) + - UpdateHashInPR/2 (pending) + - UpdateArchInPR (pending) + - On Disk + - AddToValidationFile (pending) + - AddInstallerSwitch (pending) +15. Require admin/UAC (for VMs – might have non-admin mode that uses sandbox instead) + - OpenSandbox (pending) +16. Preferences (pending) + - Window arrangement + - Hourly Mode + - Warnings + - Add warnings + - Enable clipboard watching (manifests/) + - Enable approvals + - Enable Waivers? + - Comment-based moderator controls + - Use sandbox instead of VMs and don't require Admin/UAC + - Open VM folder +17. Status bar (pending) +18. PR counters on certain buttons - Approval-Ready, ToWork, Defender, IEDS +19. Buttons/controls foreach VM in VM display: Complete, open PR, open files on disk, Add dependency (Default VS2015 isf User Input is empty.), + - Faster/better to have in-VM controls or in-app controls, or both? Why? + - Double-click VM row to bring window to front. +20. Process for adding PackageIdentifier or PR# to VM display. +*/ + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//====================-------------------- Init vars --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Imaging; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Management; +using System.Net; +using System.Runtime.InteropServices; +using System.Security.Principal; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Windows.Forms; +using System.Web.Script.Serialization; + +namespace WinGetApprovalNamespace { + public class WinGetApprovalPipeline : Form { + //vars + public int build = 931;//Get-RebuildPipeApp + public string appName = "WinGetApprovalPipeline"; + public string appTitle = "WinGet Approval Pipeline - Build "; + public static string owner = "microsoft"; + public static string repo = "winget-pkgs"; + + public static string remoteIP = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(n => n.ToString().Contains("172.")).FirstOrDefault().ToString(); + //PowerShell: $remoteIP = ([ipaddress](($ipconfig[($ipconfig | Select-String "vEthernet").LineNumber..$ipconfig.Length] | Select-String "IPv4 Address") -split ": ")[1]).IPAddressToString + + //From VM perspective - for validation script builder. + public static string RemoteMainFolder = "//"+remoteIP+"/"; + public string SharedFolder = RemoteMainFolder+"/write"; + + //Meanwhile, back on the host... + public static string MainFolder = "C:\\ManVal"; + public string runPath = MainFolder+"\\vm\\"; //VM working folder; + public string vmCounter = MainFolder+"\\vmcounter.txt"; + public string VMversion = MainFolder+"\\VMversion.txt"; + public string LogFile = MainFolder+"\\misc\\ApprovedPRs.txt"; + public string PeriodicRunLog = MainFolder+"\\misc\\PeriodicRunLog.txt"; + + public static string logsFolder = MainFolder+"\\logs"; //VM Logs folder; + public string timecardfile = logsFolder+"\\timecard.txt"; + public string TrackerModeFile = logsFolder+"\\trackermode.txt"; + + public static string writeFolder = MainFolder+"\\write"; //Folder with write permissions; + public string SharedErrorFile = writeFolder+"\\err.txt"; + public string StatusFile = writeFolder+"\\status.csv"; + + public static string ReposFolder = "C:\\repos\\"+repo; + public string DataFileName = ReposFolder+"\\Tools\\ManualValidationPipeline.csv"; + + public static string imagesFolder = MainFolder+"\\Images"; //VM Images folder; + public string Win10Folder = imagesFolder+"\\Win10-Created053025-Original"; + public string Win11Folder = imagesFolder+"\\Win11-Created010424-Original"; + + public static string GitHubBaseUrl = "https://github.com/"+owner+"/"+repo; + public static string GitHubContentBaseUrl = "https://raw.githubusercontent.com/"+owner+"/"+repo; + public static string GitHubApiBaseUrl = "https://api.github.com/repos/"+owner+"/"+repo; + public string ADOMSBaseUrl = "https://dev.azure.com/shine-oss"; + + //ADOLogs - should be refactored to be in-memory. + public static string DestinationPath = MainFolder+"\\Installers"; + public static string LogPath = DestinationPath+"\\InstallationVerificationLogs\\"; + public static string ZipPath = DestinationPath+"\\InstallationVerificationLogs.zip"; + + public string CheckpointName = "Validation"; + public string VMUserName = "user"; //Set to the internal username you're using in your VMs.; + public string gitHubUserName = "stephengillie"; + //public string SystemRAM = (Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb; + + public int displayLine = 0; + + public static string string_PRRegex = "[0-9]{5,6}"; + public static string string_hashPRRegex = "[#]"+string_PRRegex; + public static string string_hashPRRegexEnd = string_hashPRRegex+"$"; + public static string string_colonPRRegex = string_PRRegex+"[:]"; + + public Regex regex_PRRegex = new Regex(@string_PRRegex); + public Regex regex_hashPRRegex = new Regex(@string_hashPRRegex); + public Regex regex_hashPRRegexEnd = new Regex(@string_hashPRRegexEnd); + public Regex regex_colonPRRegex = new Regex(@string_colonPRRegex); + + public string file_GitHubToken = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Documents\\PowerShell\\ght.txt"; + //public string file_GitHubToken = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Documents\\PowerShell\\ght.txt"; + public string GitHubToken; + public bool TokenLoaded = false; + public int GitHubRateLimitDelay = 333; // ms + public int HyperVRateLimitDelay = 3; // seconds + + //JSON + JavaScriptSerializer serializer = new JavaScriptSerializer(); + + //WMI for local VMs + public ManagementScope scope = new ManagementScope(@"root\virtualization\v2");//, null); + /* Remote VMs + var connectionOptions = new ConnectionOptions( + @"en-US", + @"domain\user", + @"password", + null, + ImpersonationLevel.Impersonate, + AuthenticationLevel.Default, + false, + null, + TimeSpan.FromSeconds(5); + public ManagementScope scope = new ManagementScope(new ManagementPath { Server = "hostnameOrIpAddress", NamespacePath = @"root\virtualization\v2" }, connectionOptions);scope.Connect(); + */ + + //ui + public RichTextBox outBox_msg; + public System.Drawing.Bitmap myBitmap;//Depreciate + public System.Drawing.Graphics pageGraphics;//Depreciate? + public Panel pagePanel; + public ContextMenuStrip contextMenu1;//Menu? + + public TextBox inputBox_PRNumber, inputBox_User, inputBox_VMRAM; + public Label label_VMRAM = new Label(); + public Label label_User = new Label(); + public Label label_PRNumber = new Label(); + public DataGridView dataGridView_vm = new DataGridView(); + public DataGridView dataGridView_val = new DataGridView(); + public DataTable table_vm = new DataTable(); + public DataTable table_val = new DataTable(); + public Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9; + public Button btn10, btn11, btn12, btn13, btn14, btn15, btn16, btn17, btn18, btn19; + public Button btn20, btn21, btn22, btn23, btn24, btn25, btn26, btn27, btn28; + public ToolTip toolTip1, toolTip2, toolTip3, toolTip4; + + public StatusStrip statusStrip1; + public ToolStripStatusLabel toolStripStatusLabel1; + + int DarkMode = 1;//(int)Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", "AppsUseLightTheme", -1); + //0 : dark theme + //1 : light theme + //-1 : AppsUseLightTheme could not be found + + public Color color_DefaultBack = Color.FromArgb(240,240,240); + public Color color_DefaultText = Color.FromArgb(0,0,0); + public Color color_InputBack = Color.FromArgb(255,255,255); + public Color color_ActiveBack = Color.FromArgb(200,240,240); + + int table_vm_Row_Index = 0; + + //PRWatch + public string oldclip = ""; + public string PRTitle = ""; + + //Grid + public static int gridItemWidth = 70; + public static int gridItemHeight = 45; + + public int lineHeight = 14; + public int WindowWidth = gridItemWidth*15+20; + public int WindowHeight = gridItemHeight*12+20; + + //Fonts + string AppFont = "Calibri"; + int AppFontSIze = 12; + int urlBoxFontSIze = 12; + string buttonFont = SystemFonts.MessageBoxFont.ToString(); + int buttonFontSIze = 8; + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//====================-------------------- Boilerplate --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + [STAThread] + static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new WinGetApprovalPipeline()); + }// end Main + + public WinGetApprovalPipeline() { + if (TokenLoaded == false) { + GitHubToken = GetContent(file_GitHubToken); + if (GitHubToken.Length > 0) { + TokenLoaded = true; + } + } + + System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); + timer.Interval = (1 * 1000); // 10 secs + timer.Tick += new EventHandler(timer_everysecond); + timer.Start(); + + this.Text = appTitle + build; + this.Size = new Size(WindowWidth,WindowHeight); + //this.StartPosition = FormStartPosition.CenterScreen; + + //this.MaximizeBox = false; + //this.FormBorderStyle = FormBorderStyle.FixedSingle; + this.Resize += new System.EventHandler(this.OnResize); + this.AutoScroll = true; + Icon icon = Icon.ExtractAssociatedIcon("ManualValidationPipeline.ico"); + this.Icon = icon; + + if (DarkMode == 0) { + color_DefaultBack = Color.FromArgb(33,33,33); + color_DefaultText = Color.FromArgb(200,200,200); + color_ActiveBack = Color.FromArgb(15,55,105); + color_InputBack = Color.FromArgb(0,0,0); + } + this.BackColor = color_DefaultBack; + this.ForeColor = color_DefaultText; + + drawMenuBar(); + drawUrlBoxAndGoButton(); + RefreshStatus(); + + } // end WinGetApprovalPipeline + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//====================-------------------- UI top-of-box --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void drawButton(ref Button button, int pointX, int pointY, int sizeX, int sizeY,string buttonText, EventHandler buttonOnclick){ + button = new Button(); + button.Text = buttonText; + button.Location = new Point(pointX, pointY); + button.Size = new Size(sizeX, sizeY); + button.BackColor = color_DefaultBack; + button.ForeColor = color_DefaultText; + button.Click += new EventHandler(buttonOnclick); + button.Font = new Font(buttonFont, buttonFontSIze); + Controls.Add(button); + }// end drawButton + + public void drawRichTextBox(ref RichTextBox richTextBox, int pointX,int pointY,int sizeX,int sizeY,string text, string name){ + richTextBox = new RichTextBox(); + richTextBox.Text = text; + richTextBox.Name = name; + richTextBox.Multiline = true; + richTextBox.AcceptsTab = true; + richTextBox.WordWrap = true; + richTextBox.ReadOnly = true; + richTextBox.DetectUrls = true; + richTextBox.BackColor = color_DefaultBack; + richTextBox.ForeColor = color_DefaultText; + richTextBox.Font = new Font(AppFont, AppFontSIze); + richTextBox.Location = new Point(pointX, pointY); + //richTextBox.LinkClicked += new LinkClickedEventHandler(Link_Click); + richTextBox.Width = sizeX; + richTextBox.Height = sizeY; + //richTextBox.Dock = DockStyle.Fill; + richTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None; + + + //richTextBox.BackColor = Color.Red; + //richTextBox.ForeColor = Color.Blue; + //richTextBox.RichTextBoxScrollBars = ScrollBars.Both; + //richTextBox.AcceptsReturn = true; + + Controls.Add(richTextBox); + }// end drawRichTextBox + + public void drawUrlBox(ref TextBox urlBox, int pointX, int pointY, int sizeX, int sizeY,string text){ + urlBox = new TextBox(); + urlBox.Text = text; + urlBox.Name = "urlBox"; + urlBox.Font = new Font(AppFont, urlBoxFontSIze); + urlBox.Location = new Point(pointX, pointY); + urlBox.BackColor = color_InputBack; + urlBox.ForeColor = color_DefaultText; + urlBox.Width = sizeX; + urlBox.Height = sizeY; + Controls.Add(urlBox); + } + + public void drawLabel(ref Label newLabel, int pointX, int pointY, int sizeX, int sizeY,string text){ + newLabel = new Label(); + newLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + //newLabel.ImageList = imageList1; + newLabel.ImageIndex = 1; + newLabel.ImageAlign = ContentAlignment.TopLeft; + newLabel.BackColor = color_DefaultBack; + newLabel.ForeColor = color_DefaultText; + newLabel.Name = "newLabel"; + newLabel.Font = new Font(AppFont, AppFontSIze); + newLabel.Location = new Point(pointX, pointY); + newLabel.Width = sizeX; + newLabel.Height = sizeY; + //newLabel.KeyUp += newLabel_KeyUp; + + newLabel.Text = text; + + //newLabel.Size = new Size (label1.PreferredWidth, label1.PreferredHeight); + Controls.Add(newLabel); + } + + public void drawDataGrid(ref DataGridView dataGridView, int startX, int startY, int sizeX, int sizeY){ + dataGridView = new DataGridView(); + dataGridView.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Raised; + dataGridView.CellBorderStyle = DataGridViewCellBorderStyle.Single; + dataGridView.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + + dataGridView.ForeColor = color_DefaultText;//Selected cell text color + dataGridView.BackColor = color_DefaultBack;//Selected cell BG color + dataGridView.DefaultCellStyle.SelectionForeColor = color_DefaultText;//Unselected cell text color + dataGridView.DefaultCellStyle.SelectionBackColor = color_DefaultBack;//Unselected cell BG color + dataGridView.BackgroundColor = color_DefaultBack;//Space underneath/between cells + dataGridView.GridColor = SystemColors.ActiveBorder;//Gridline color + + dataGridView.Name = "dataGridView"; + dataGridView.Font = new Font(AppFont, AppFontSIze); + dataGridView.Location = new Point(startX, startY); + dataGridView.Size = new Size(sizeX, sizeY); + // dataGridView.KeyUp += dataGridView_KeyUp; + // dataGridView.Text = text; + Controls.Add(dataGridView); + + + + dataGridView.EditMode = DataGridViewEditMode.EditProgrammatically; + dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.RowHeadersVisible = false; + dataGridView.MultiSelect = false; + //dataGridView.Dock = DockStyle.Fill; + +/* + dataGridView.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView_CellFormatting); + dataGridView.CellParsing += new DataGridViewCellParsingEventHandler(dataGridView_CellParsing); + addNewRowButton.Click += new EventHandler(addNewRowButton_Click); + deleteRowButton.Click += new EventHandler(deleteRowButton_Click); + ledgerStyleButton.Click += new EventHandler(ledgerStyleButton_Click); + dataGridView.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView_CellValidating); +*/ + }// end drawDataGrid + + public void drawToolTip(ref ToolTip toolTip, ref Button button, string DisplayText, int AutoPopDelay = 5000, int InitialDelay = 1000, int ReshowDelay = 500){ + toolTip = new ToolTip(); + + // Set up the delays for the ToolTip. + toolTip.AutoPopDelay = AutoPopDelay; + toolTip.InitialDelay = InitialDelay; + toolTip.ReshowDelay = ReshowDelay; + // Force the ToolTip text to be displayed whether or not the form is active. + toolTip.ShowAlways = true; + + // Set up the ToolTip text for the Button and Checkbox. + toolTip.SetToolTip(button, DisplayText); + //toolTip.SetToolTip(this.checkBox1, "My checkBox1"); + } + + public void drawStatusStrip (StatusStrip statusStrip,ToolStripStatusLabel toolStripStatusLabel) { + statusStrip = new System.Windows.Forms.StatusStrip(); + statusStrip.Dock = System.Windows.Forms.DockStyle.Bottom; + statusStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Visible; + + toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + toolStripStatusLabel.Name = "toolStripStatusLabel"; + toolStripStatusLabel.Size = new System.Drawing.Size(109, 17); + toolStripStatusLabel.Text = "toolStripStatusLabel"; + statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { toolStripStatusLabel }); + + statusStrip.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; + statusStrip.Location = new System.Drawing.Point(0, 0); + statusStrip.Name = "statusStrip"; + statusStrip.ShowItemToolTips = true; + statusStrip.Size = new System.Drawing.Size(292, 22); + statusStrip.SizingGrip = false; + statusStrip.Stretch = false; + statusStrip.TabIndex = 0; + statusStrip.Text = "statusStrip"; + + Controls.Add(statusStrip); + } + + public void drawMenuBar (){ + this.Menu = new MainMenu(); + MenuItem item = new MenuItem("File"); + this.Menu.MenuItems.Add(item); + item.MenuItems.Add("(disabled) Specify key file location...", new EventHandler(Save_File_Action)); + item.MenuItems.Add("(disabled) Generate daily report", new EventHandler(About_Click_Action)); + + item = new MenuItem("Selected VM"); + this.Menu.MenuItems.Add(item); + item.MenuItems.Add("Complete VM", new EventHandler(Complete_VM_Image_Action)); + item.MenuItems.Add("Relaunch window", new EventHandler(Launch_Window_Image_Action)); + item.MenuItems.Add("Open VM folder", new EventHandler(Open_Folder_Image_Action)); + MenuItem submenu = new MenuItem("WIn10 Image VM"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Generate VM from image", new EventHandler(Generate_Win10_VM_Image_Action)); + submenu.MenuItems.Add("Start", new EventHandler(Start_Win10_Image_Action)); + submenu.MenuItems.Add("Relaunch window", new EventHandler(Launch_Win10_Window_Image_Action)); + submenu.MenuItems.Add("Stop", new EventHandler(Stop_Win10_Image_Action)); + submenu.MenuItems.Add("Turn off", new EventHandler(TurnOff_Win10_Image_Action)); + submenu.MenuItems.Add("Attach new image VM", new EventHandler(Attach_Win10_Image_Action)); + submenu = new MenuItem("Win11 Image VM"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Generate VM from image", new EventHandler(Generate_Win11_VM_Image_Action)); + submenu.MenuItems.Add("Start", new EventHandler(Start_Win11_Image_Action)); + submenu.MenuItems.Add("Relaunch window", new EventHandler(Launch_Win11_Window_Image_Action)); + submenu.MenuItems.Add("Stop", new EventHandler(Stop_Win11_Image_Action)); + submenu.MenuItems.Add("Turn Off", new EventHandler(TurnOff_Win11_Image_Action)); + submenu.MenuItems.Add("Attach new image VM", new EventHandler(Attach_Win11_Image_Action)); + item.MenuItems.Add("Disgenerate VM", new EventHandler(Disgenerate_VM_Image_Action)); + + item = new MenuItem("Validate Manifest"); + this.Menu.MenuItems.Add(item); + item.MenuItems.Add("Regular Validation", new EventHandler(Validate_Manifest_Action)); + item.MenuItems.Add("DSC Configure", new EventHandler(Validate_By_Configure_Action)); + item.MenuItems.Add("By PackageIdentifier (User Input)", new EventHandler(Validate_By_ID_Action)); + item.MenuItems.Add("By Arch", new EventHandler(Validate_By_Arch_Action)); + item.MenuItems.Add("By Scope", new EventHandler(Validate_By_Scope_Action)); + item.MenuItems.Add("Both Arch and Scope", new EventHandler(Validate_By_Arch_And_Scope_Action)); + submenu = new MenuItem("Generate manifest for selected VM"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Manifest from clipboard", new EventHandler(Manifest_From_Clipboard)); + submenu.MenuItems.Add("Installer.yaml and the rest from GH", new EventHandler(Single_File_Automation_Action)); + submenu = new MenuItem("Update manifest"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Add dependency (VS2015+)", new EventHandler(Add_Dependency_Disk_Action)); + submenu.MenuItems.Add("Add installer switch (/S)", new EventHandler(Add_Installer_Switch_Action)); + + item = new MenuItem("Current PR"); + this.Menu.MenuItems.Add(item); + submenu = new MenuItem("Approve PR"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Approve PR", new EventHandler(Approved_Action)); + submenu = new MenuItem("Update PR"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("@wingetbot run", new EventHandler(Retry_Action)); + submenu.MenuItems.Add("Label Action", new EventHandler(Label_Action_Action)); + submenu.MenuItems.Add("Check installer", new EventHandler(Check_Installer_Action)); + submenu = new MenuItem("Update manifest"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Add dependency (VS2015+)", new EventHandler(Add_Dependency_Repo_Action)); + submenu.MenuItems.Add("Update hash 'Specified hash doesn't match.'", new EventHandler(Update_Hash_Action)); + submenu.MenuItems.Add("Update hash 2 'SHA256 in manifest...'", new EventHandler(Update_Hash2_Action)); + submenu.MenuItems.Add("Update architecture (x64)", new EventHandler(Update_Arch_Action)); + submenu = new MenuItem("Complete PR"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Installs Normally in VM", new EventHandler(Manually_Validated_Action)); + submenu = new MenuItem("Wingetbot Close"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Close: Merge Conflicts;", new EventHandler(Merge_Conflicts_Action)); + submenu.MenuItems.Add("Close: Version Already Exists;", new EventHandler(Version_Already_Exiss_Action)); + submenu.MenuItems.Add("Close: Regen with new hash;", new EventHandler(Regen_Hash_Action)); + submenu = new MenuItem("Regular Close"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Close: (User Input);", new EventHandler(Closed_Action)); + submenu.MenuItems.Add("Close: Package still available;", new EventHandler(Package_Available_Action)); + submenu.MenuItems.Add("Close: Duplicate of (User Input);", new EventHandler(Duplicate_Action)); + // item.MenuItems.Add("Add Waiver", new EventHandler(Add_Waiver_Action)); + // item.MenuItems.Add("(disabled) Needs Author Feedback (reason)", new EventHandler(Needs_Author_Feedback_Action)); + // submenu = new MenuItem("Canned Replies"); + // item.MenuItems.Add(submenu); + // submenu.MenuItems.Add("Automation block", new EventHandler(Automation_Block_Action)); + // submenu.MenuItems.Add("Driver install", new EventHandler(Driver_Install_Action)); + // submenu.MenuItems.Add("Installer missing", new EventHandler(Installer_Missing_Action)); + // submenu.MenuItems.Add("Installer not silent", new EventHandler(Installer_Not_Silent_Action)); + // submenu.MenuItems.Add("Needs PackageUrl", new EventHandler(Needs_PackageUrl_Action)); + // submenu.MenuItems.Add("One manifest per PR", new EventHandler(One_Manifest_Per_PR_Action)); + // item.MenuItems.Add("Record as Project File", new EventHandler(Project_File_Action)); + // item.MenuItems.Add("Record as squash-merge", new EventHandler(Squash_Action)); + + item = new MenuItem("Open In Browser"); + this.Menu.MenuItems.Add(item); + item.MenuItems.Add("Current PR", new EventHandler(Open_Current_PR_Action)); + item.MenuItems.Add("PR for selected VM", new EventHandler(Open_PR_Selected_VM_Action)); + submenu = new MenuItem("Open many tabs:"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("All PRs on clipboard", new EventHandler(Open_AllUrls_Action)); + submenu.MenuItems.Add("Full Approval Run", new EventHandler(Approval_Run_Search_Action)); + submenu.MenuItems.Add("Full ToWork Run", new EventHandler(ToWork_Run_Search_Action)); + submenu.MenuItems.Add("All Start Of Day", new EventHandler(Start_Of_Day_Action)); + submenu.MenuItems.Add("All Resources", new EventHandler(All_Resources_Action)); + submenu = new MenuItem("Start Of Day:"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("WinGet-pkgs repo", new EventHandler(Open_PKGS_Repo_Action)); + submenu.MenuItems.Add("WinGet-cli repo", new EventHandler(Open_CLI_Repo_Action)); submenu = new MenuItem("Resources:"); + item.MenuItems.Add(submenu); + submenu.MenuItems.Add("Gitter chat", new EventHandler(Open_Gitter_Action)); + submenu.MenuItems.Add("Pipeline status", new EventHandler(Open_Pipeline_Action)); + submenu.MenuItems.Add("Dashboard", new EventHandler(Open_Dashboard_Action)); + submenu.MenuItems.Add("Notifications mentions", new EventHandler(Open_Notifications_Action)); + submenu.MenuItems.Add("Approval search", new EventHandler(Approval_Search_Action)); + submenu.MenuItems.Add("Defender search", new EventHandler(Defender_Search_Action)); + submenu.MenuItems.Add("ToWork search", new EventHandler(ToWork_Search_Action)); + item.MenuItems.Add("Search GitHub for PRs (User Input)", new EventHandler(Pkgs_Search_Action)); + item.MenuItems.Add("Approved PR selected below", new EventHandler(Open_SelectedApproved_Action)); + + item = new MenuItem("Help"); + this.Menu.MenuItems.Add(item); + item.MenuItems.Add("About...", new EventHandler(About_Click_Action)); + item.MenuItems.Add("VCRedist to dependency...", new EventHandler(VCDependency_Click_Action)); + + this.BackColor = color_DefaultBack; + this.ForeColor = color_DefaultText; + }// end drawMenuBar + + public void drawUrlBoxAndGoButton(){ + int inc = 0; + int row0 = gridItemHeight*inc;inc++; + int row1 = gridItemHeight*inc;inc++; + int row2 = gridItemHeight*inc;inc++; + int row3 = gridItemHeight*inc;inc++; + int row4 = gridItemHeight*inc;inc++; + int row5 = gridItemHeight*inc;inc++; + int row6 = gridItemHeight*inc;inc++; + int row7 = gridItemHeight*inc;inc++; + int row8 = gridItemHeight*inc;inc++; + int row9 = gridItemHeight*inc;inc++; + int row10 = gridItemHeight*inc;inc++; + + inc = 0; + int col0 = gridItemWidth*inc;inc++; + int col1 = gridItemWidth*inc;inc++; + int col2 = gridItemWidth*inc;inc++; + int col3 = gridItemWidth*inc;inc++; + int col4 = gridItemWidth*inc;inc++; + int col5 = gridItemWidth*inc;inc++; + int col6 = gridItemWidth*inc;inc++; + int col7 = gridItemWidth*inc;inc++; + int col8 = gridItemWidth*inc;inc++; + int col9 = gridItemWidth*inc;inc++; + int col10 = gridItemWidth*inc;inc++; + + //drawStatusStrip(statusStrip1, toolStripStatusLabel1); + + table_vm.Columns.Add("vm", typeof(string)); + table_vm.Columns.Add("status", typeof(string)); + table_vm.Columns.Add("version", typeof(int)); + table_vm.Columns.Add("OS", typeof(string)); + table_vm.Columns.Add("Package", typeof(string)); + table_vm.Columns.Add("PR", typeof(int)); + table_vm.Columns.Add("Mode", typeof(string)); + table_vm.Columns.Add("RAM", typeof(double)); + + table_val.Columns.Add("Timestamp", typeof(string)); + table_val.Columns.Add("PR", typeof(int)); + table_val.Columns.Add("PackageIdentifier", typeof(string)); + table_val.Columns.Add("prVersion", typeof(string)); + table_val.Columns.Add("A", typeof(string)); + table_val.Columns.Add("M", typeof(int)); + table_val.Columns.Add("R", typeof(string)); + table_val.Columns.Add("G", typeof(string)); + table_val.Columns.Add("W", typeof(string)); + table_val.Columns.Add("F", typeof(string)); + table_val.Columns.Add("I", typeof(string)); + table_val.Columns.Add("D", typeof(string)); + table_val.Columns.Add("V", typeof(string)); + table_val.Columns.Add("ManifestVer", typeof(string)); + table_val.Columns.Add("OK", typeof(string)); + + foreach (DataGridViewColumn column in dataGridView_vm.Columns){ + column.SortMode = DataGridViewColumnSortMode.NotSortable; + } + + drawDataGrid(ref dataGridView_vm, col0, row0, gridItemWidth*7, gridItemHeight*5); + drawLabel(ref label_PRNumber, col6, row0, gridItemWidth, gridItemHeight,"Current PR:"); + drawUrlBox(ref inputBox_PRNumber, col7, row0, gridItemWidth*2,gridItemHeight,"#000000"); + + drawLabel(ref label_User, col6, row1, gridItemWidth, gridItemHeight,"User Input:"); + drawUrlBox(ref inputBox_User,col7, row1, gridItemWidth*2,gridItemHeight,"");//UserInput field + + drawLabel(ref label_VMRAM, col6, row2, gridItemWidth, gridItemHeight,"VM RAM:"); + drawUrlBox(ref inputBox_VMRAM,col7, row2, gridItemWidth*2,gridItemHeight,"");//VM RAM display + + drawDataGrid(ref dataGridView_val, col0, row5, gridItemWidth*8, gridItemHeight*5); + //dataGridView_val.Anchor = AnchorStyles.Top | AnchorStyles.Bottom; + + drawRichTextBox(ref outBox_msg, col0, row10, this.ClientRectangle.Width,gridItemHeight, "", "outBox_msg"); + + drawButton(ref btn10, col6, row3, gridItemWidth, gridItemHeight, "Bulk Approving", Approving_Action); + drawToolTip(ref toolTip1, ref btn10, "Automatically approve PRs. (Caution - easy to accidentally approve, use with care.)"); + drawButton(ref btn18, col7, row3, gridItemWidth, gridItemHeight, "Individual Validations", Validating_Action); + drawToolTip(ref toolTip2, ref btn18, "Automatically start manifest in VM."); + drawButton(ref btn11, col6, row4, gridItemWidth, gridItemHeight, "Validate Rand IEDS", IEDS_Action); + drawToolTip(ref toolTip3, ref btn11, "Automatically start manifest for random IEDS in VM."); + drawButton(ref btn19, col7, row4, gridItemWidth, gridItemHeight, "Idle Mode", Idle_Action); + drawToolTip(ref toolTip4, ref btn19, "It does nothing."); + drawButton(ref btn20, col8, row3, gridItemWidth, gridItemHeight, "Testing button", Testing_Action); + drawButton(ref btn21, col8, row4, gridItemWidth, gridItemHeight, "Testing button 2", Testing2_Action); + + }// end drawGoButton + + public void OnResize(object sender, System.EventArgs e) { + //Width - VM and Validation windows adjust with window. + dataGridView_vm.Width = ClientRectangle.Width - gridItemWidth*3;// - gridItemWidth*2; + dataGridView_val.Width = ClientRectangle.Width;// - gridItemWidth*2; + outBox_msg.Width = ClientRectangle.Width; + + inputBox_PRNumber.Left = ClientRectangle.Width - gridItemWidth*2;//col8 + inputBox_User.Left = ClientRectangle.Width - gridItemWidth*2;//col8 + inputBox_VMRAM.Left = ClientRectangle.Width - gridItemWidth*2;//col8 + + label_PRNumber.Left = ClientRectangle.Width - gridItemWidth*3;//col7 + label_User.Left = ClientRectangle.Width - gridItemWidth*3;//col7 + label_VMRAM.Left = ClientRectangle.Width - gridItemWidth*3;//col7 + + //Height -Validation and mode buttons adjusts with window. + btn10.Left = ClientRectangle.Width - gridItemWidth*3;//col7 + btn11.Left = ClientRectangle.Width - gridItemWidth*3;//col7 + btn18.Left = ClientRectangle.Width - gridItemWidth*2;//col8 + btn19.Left = ClientRectangle.Width - gridItemWidth*2;//col8 + btn20.Left = ClientRectangle.Width - gridItemWidth*1;//col9 + btn21.Left = ClientRectangle.Width - gridItemWidth*1;//col9 + } + //Refresh display and buttons + private void timer_everysecond(object sender, EventArgs e) { + UpdateTableVM(); + RefreshStatus(); + dataGridView_vm.AutoResizeColumns(); + dataGridView_vm.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + dataGridView_val.AutoResizeColumns(); + dataGridView_val.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + + //Hourly Run functionality + bool HourLatch = false; + if (Int32.Parse(DateTime.Now.ToString("mm")) == 20 + && Int32.Parse(DateTime.Now.ToString("mm")) > 00 + && Int32.Parse(DateTime.Now.ToString("mm")) < 02) { + HourLatch = true; + } + if (HourLatch) { + HourLatch = false; + HourlyRun(); + // if (Int32.Parse(DateTime.Now.ToString("mm")) == 20) { + // string seconds = DateTime.Now.ToString("ss"); + // Thread.Sleep((60-Int32.Parse(seconds))*1000);//If it's still :20 after, sleep out the minute. + // } + } + //Update PR display + string clip = Clipboard.GetText(); + Regex regex = new Regex("^[0-9]{6}$"); + string[] clipSplit = clip.Replace("\r\n","\n").Replace("\n"," ").Replace("/"," ").Replace("#"," ").Replace(";"," ").Split(' '); + string c = clipSplit.Where(n => regex.IsMatch(n)).FirstOrDefault(); + if (null != c) { + if (regex.IsMatch(c)) { + inputBox_PRNumber.Text = "#"+c; + } + } + + string Mode = GetMode(); + //Automatic clipboard actions + regex = new Regex(@"^manifests/"); + if (clip.Contains("Skip to content")) { + if (Mode == "Validating") { + //ValidateManifest; + // Mode | clip + } else if (Mode == "Approving") { + PRWatch(false, "Default", "C:\\ManVal\\misc\\ApprovedPRs.txt", "C:\\repos\\winget-pkgs\\Tools\\Review.csv"); + } + } else if (regex.IsMatch(clip)) { + Clipboard.SetText("open manifest"); + string ManifestUrl = GitHubBaseUrl+"/tree/master/"+clip; + System.Diagnostics.Process.Start(ManifestUrl); + } + + //Random IEDS mode + // if ($Mode == "IEDS") { + // if ((Get-ArraySum (GetStatus()).RAM) < ($SystemRAM*.42)) { + // RandomIEDS(); + // } + // } + + //Automatic RAM adjustment + // (Get-VM) | foreach-Object { + // if(($_.MemoryDemand / $_.MemoryMaximum) -ge 0.9){ + // set-vm -VMName $_.name -MemoryMaximumBytes "$(($_.MemoryMaximum / 1073741824)+2)GB" + // } + // } + + + //CycleVMs(); + //WindowArrange(); + //RotateVMs(); + + } + + public void HourlyRun() { + Console.Beep(500,250);Console.Beep(500,250);Console.Beep(500,250); //Beep 3x to alert the PC user. + foreach (string Preset in HourlyRun_PresetList) { + dynamic Results = SearchGitHub(Preset,1); + if (Results != null) { + //foreach (int Result in Results) { + // LabelAction(Result); + //} + } + } + } + + public void RefreshStatus() { + string Mode = ""; + if (TestPath(TrackerModeFile) == "File") { + Mode = GetMode(); + } + if (Mode == "Approving") { + btn10.BackColor = color_ActiveBack;//Bulk Approving + btn18.BackColor = color_DefaultBack;//Individual Validations + btn11.BackColor = color_DefaultBack;//IEDS + btn19.BackColor = color_DefaultBack;//Idle + } else if (Mode == "Validating") { + btn10.BackColor = color_DefaultBack;//Bulk Approving + btn18.BackColor = color_ActiveBack;//Individual Validations + btn11.BackColor = color_DefaultBack;//IEDS + btn19.BackColor = color_DefaultBack;//Idle + } else if (Mode == "IEDS") { + btn10.BackColor = color_DefaultBack;//Bulk Approving + btn18.BackColor = color_DefaultBack;//Individual Validations + btn11.BackColor = color_ActiveBack;//IEDS + btn19.BackColor = color_DefaultBack;//Idle + } else if (Mode == "Idle") { + btn10.BackColor = color_DefaultBack;//Bulk Approving + btn18.BackColor = color_DefaultBack;//Individual Validations + btn11.BackColor = color_DefaultBack;//IEDS + btn19.BackColor = color_ActiveBack;//Idle + } else if (Mode == "Config") { + btn10.BackColor = color_DefaultBack;//Bulk Approving + btn18.BackColor = color_DefaultBack;//Individual Validations + btn11.BackColor = color_DefaultBack;//IEDS + btn19.BackColor = color_DefaultBack;//Idle + } + + if (TestPath(StatusFile) == "File") { + double VMRAM = 0; + try { + Dictionary[] GetStatus = FromCsv(GetContent(StatusFile)); + //Update RAM column and write + for (int VM = 0; VM < GetStatus.Length -1; VM++) { + //$_.RAM = Math.Round((Get-VM -Name ("vm"+$_.vm)).MemoryAssigned/1024/1024/1024,2)} + try { + VMRAM += Convert.ToDouble(GetStatus[VM]["RAM"]); + } catch (Exception e) { + inputBox_VMRAM.Text = "VM"+VM+": "+e.ToString(); + }//end try + }//end for VM + } catch {} + inputBox_VMRAM.Text = VMRAM.ToString(); + }//end if TestPath + }//end function + + public void UpdateTableVM() { + try { + if (TestPath(StatusFile) == "File") { + if (dataGridView_vm.SelectedCells.Count > 0) {//Record the selected row. + table_vm_Row_Index = dataGridView_vm.SelectedCells[0].RowIndex; + } else { + table_vm_Row_Index = 0; + } + table_vm.Clear();//Clear the table + dynamic Status = FromCsv(GetContent(StatusFile, true)); + if (Status != null) { + for (int r = 1; r < Status.Length -1; r++){ + var rowData = Status[r];//Reload the table + table_vm.Rows.Add(rowData["vm"], rowData["status"], rowData["version"], rowData["OS"], rowData["Package"], rowData["PR"], rowData["Mode"], rowData["RAM"]); + }//end for r + }//end if Status + dataGridView_vm.DataSource=table_vm; + dataGridView_vm.Rows[table_vm_Row_Index].Selected = true;//Reselect the row. + + dataGridView_vm.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//vm + dataGridView_vm.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//status + dataGridView_vm.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//version + dataGridView_vm.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//OS + dataGridView_vm.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;//Package + dataGridView_vm.Columns[5].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//PR + dataGridView_vm.Columns[6].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//RAM + + dataGridView_val.DataSource=table_val; + dataGridView_val.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader;//Timestamp + dataGridView_val.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//PR + dataGridView_val.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;//PackageIdentifier + dataGridView_val.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader;//prVersion + dataGridView_val.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//A + dataGridView_val.Columns[5].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//R + dataGridView_val.Columns[6].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//G + dataGridView_val.Columns[7].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//W + dataGridView_val.Columns[8].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//F + dataGridView_val.Columns[9].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//I + dataGridView_val.Columns[10].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//D + dataGridView_val.Columns[11].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;//V + dataGridView_val.Columns[12].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader;//ManifestVer + dataGridView_val.Columns[13].AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;//OK + + }//end if TestPath + } catch (Exception e){ + outBox_msg.AppendText(Environment.NewLine + "e: " + e ); + }//end try + }//end function + + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//====================-------------------- Tabs --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void PRWatch(bool noNew, string Chromatic = "Default", string LogFile = ".\\PR.txt", string ReviewFile = ".\\Review.csv"){ + //$Host.UI.RawUI.WindowTitle = "PR Watcher"//I'm a PR Watcher, watchin PRs go by. + string clip = Clipboard.GetText(); + string[] split_clip = clip.Replace("\r\n","\n").Split('\n'); + string replace_clip = clip.Replace("'","").Replace("\"",""); + PRTitle = split_clip.Where(n => regex_hashPRRegexEnd.IsMatch(n)).FirstOrDefault(); + int PR = GetCurrentPR(); + + if (PRTitle != "") { + if (PRTitle != oldclip) { + //(GetStatus() .Where(n => n["status"] == "ValidationCompleted"} | format-Table);//Drops completed VMs in the middle of the PR approval display. + //Chromatic was here. + + string[] title = PRTitle.Split(':'); + if (title.Length > 1) { + title = title[1].Split(' '); + } else { + title = title[0].Split(' '); + } + string Submitter = ""; + try { + Submitter = split_clip.Where(n => n.Contains("wants to merge")).FirstOrDefault().Split(' ')[0]; + } catch {} + string InstallerType = YamlValue("InstallerType",clip); + + //Split the title by spaces. Try extracting the version location as the next item after the word "version", and if that fails, use the 2nd to the last item, then 3rd to last, and 4th to last. for some reason almost everyone puts the version number as the last item, and GitHub appends the PR number. + int prVerLoc = 0; + for (int i = 0; i < title.Length; i++) { + if (title[i].Contains("version")) { + prVerLoc = i; + } + } + + string PRVersion = YamlValue("PackageVersion",replace_clip); + + //Get the PackageIdentifier and alert if it matches the auth list. + string PackageIdentifier = ""; + try { + PackageIdentifier = YamlValue("PackageIdentifier",replace_clip); + } catch { + PackageIdentifier = replace_clip; + } + // string matchColor = validColor; + + + + + string Timestamp = DateTime.Now.ToString("H:mm:ss"); + //Write-Host -nonewline -f $matchColor "| $(Get-Date -format T) | $PR | $(Get-PadRight "PackageIdentifier") | " + DataRow row = table_val.NewRow(); + row[0] = Timestamp; //Timestamp + row[1] = PR; //PR (int) + row[2] = PackageIdentifier; //PackageIdentifier + row[3] = ""; //prVersion + row[4] = ""; //A - Auth + row[5] = 0; //M (int) - Major version difference + row[6] = ""; //R - Review file + row[7] = ""; //G - aGreements + row[8] = ""; //W - Word filter + row[9] = ""; //F - apps and Features changed + row[10] = ""; //I - InstallerUrl contains PackageVersion + row[11] = ""; //D - PR has fewer files than manifest + row[12] = ""; //V - Versions remaining + row[13] = ""; //ManifestVer + row[14] = ""; //OK + table_val.Rows.InsertAt(row,0); + int LastRow = 0;//table_val.Rows.Count -1; + table_val.Rows[LastRow].SetField("PRVersion", PRVersion); + + + string ManifestVersion = FindWinGetVersion(PackageIdentifier); + int PRMajorVersion = Convert.ToInt32(PRVersion.Split('.')[0]); + int ManifestMajorVersion = 0; + if (ManifestVersion != "") { + outBox_msg.AppendText(Environment.NewLine + "ManifestVersion.Split('.') " + ManifestVersion + " PRMajorVersion " + PRMajorVersion); + ManifestMajorVersion = Convert.ToInt32(ManifestVersion.Split('.')[0]); + } + outBox_msg.AppendText(Environment.NewLine + "I'm a PR " + PR + " Watcher, watchin PRs go by."); + + + //Variable effervescence + string prAuth = "+"; + string Auth = "A"; + int VersionIncrease = PRMajorVersion - ManifestMajorVersion;//M + string Review = "R"; + string AgreementAccept = "G"; + string WordFilter = "W"; + string AnF = "F"; + string InstVer = "I"; + string string_ListingDiff = "D"; + int NumVersions = FindWinGetTotalVersions(PackageIdentifier) ; + string PRvMan = "P"; + string Approve = "+"; + + string Body = ""; + +//"PackageIdentifier","gitHubUserName","authStrictness","authUpdateType","autoWaiverLabel","versionParamOverrideUserName","versionParamOverridePR","code200OverrideUserName","code200OverridePR","AgreementOverridePR","AgreementURL","reviewText" + string strictness = ""; + outBox_msg.AppendText(Environment.NewLine + "PR: " + PR ); + try { + strictness = GetFileData(DataFileName,PackageIdentifier,"authStrictness"); + } catch {} + string AuthAccount = ""; + if (strictness != "") { + try { + AuthAccount = GetFileData(DataFileName,PackageIdentifier,"gitHubUserName"); + outBox_msg.AppendText(Environment.NewLine + "PR: " + PR + " AuthAccount: " + AuthAccount); + } catch {} + } + if (ManifestVersion == "") { + PRvMan = "N"; + // matchColor = invalidColor; + Approve = "-!"; + if (noNew) { + } else { + + if (regex_hashPRRegex.IsMatch(title[title.Length -1])) { + // if ((Get-Command ValidateManifest).name) { + ValidateManifest(); + // } else { + // Get-Sandbox ($title[-1] -replace"//",""); + // } //end if Get-Command; + } //end if title; + } //end if noNew; + } else if (null != ManifestVersion) { + + + + + if ((Math.Abs(VersionIncrease) > 3) && + (!PRTitle.Contains("Automatic deletion")) && + (!PRTitle.Contains("Delete")) && + (!PRTitle.Contains("Remove")) && + (!InstallerType.Contains("portable")) && + (AuthAccount != Submitter)) { + + string greaterOrLessThan = ""; + //if VersionIncrease equal = current major version + if (VersionIncrease < 0) { + //if VersionIncrease negative = old major version + greaterOrLessThan = "greater"; + } else if (VersionIncrease > 0) { + //if VersionIncrease positive = new major version + greaterOrLessThan = "less"; + } + Body = "Hi @"+Submitter+",\\n\\n> This PR's version number "+PRVersion+" has major version"+PRMajorVersion+" while the current manifest has major version "+ManifestVersion+". This is a difference of " + Math.Abs(VersionIncrease) + "major versions. Is this intentional?"; + Approve = "-!"; + Body = Body + "\\n\\n(Automated response - build "+build+")\\n"; +/* + InvokeGitHubPRRequest(PR,"Post","comments",Body,"Silent"); + AddPRToRecord(PR,"Feedback",PRTitle); + outBox_msg.AppendText(Environment.NewLine + "PR: " + PR + " comments"); + */ + } + } + table_val.Rows[LastRow].SetField("M", VersionIncrease); + + + + if (strictness != "") { + string matchVar = ""; + + foreach (string Account in AuthAccount.Split('/')) { + if (Account == Submitter) { + matchVar = "matches"; + Auth = "+"; + } else { + matchVar = "does not match"; + Auth = "-"; + } + } + outBox_msg.AppendText(Environment.NewLine + "PR: " + PR + " matchVar: "+ matchVar); + + if (strictness == "must") { + Auth += "!"; + } + } + if (Auth == "-!") { + // GetPRApproval(clip,PR,PackageIdentifier); + outBox_msg.AppendText(Environment.NewLine + "PR: " + PR + " GetPRApproval"); + } + table_val.Rows[LastRow].SetField("A", Auth); + + + + + + //Review file only alerts, doesn't block. + string ReviewData = ""; + try { + ReviewData = GetFileData(ReviewFile,PackageIdentifier,"Reason"); + if (ReviewData != "") { + oldclip = PRTitle; + if (MessageBox.Show(PackageIdentifier + ": " + ReviewData + " - Should this still be approved?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { + Approve = "+"; + Review= "+"; + } else { + Review= "-"; + Approve = "-"; + // MessageBox.Show("Nothing happens."); + } + } + } catch {} + table_val.Rows[LastRow].SetField("R", Review); + + + //In list, matches PR - explicit pass + //In list, PR has no Installer.yaml - implicit pass + //In list, missing from PR - block + //In list, mismatch from PR - block + //Not in list or PR - pass + //Not in list, in PR - alert and pass? + //Check previous version for omission - depend on wingetbot for now. + string AgreementUrlFromList = ""; + try { + AgreementUrlFromList = GetFileData(DataFileName,PackageIdentifier,"AgreementUrl"); + outBox_msg.AppendText(Environment.NewLine + "PR: " + PR + " AgreementUrlFromList: " + AgreementUrlFromList); + } catch {} + if (AgreementUrlFromList != "") { + string AgreementUrlFromClip = YamlValue("AgreementUrl",replace_clip); + if (AgreementUrlFromClip == AgreementUrlFromList) { + //Explicit Approve - URL is present and matches. + AgreementAccept = "+!"; + } else { + //Explicit mismatch - URL is present and does not match, or URL is missing. + AgreementAccept = "-!"; + // ReplyToPR(PR,"AgreementMismatch",AgreementUrlFromList); + } + } else { + AgreementAccept = "+"; + //Implicit Approve - your AgreementsUrl is in another file. Can't modify what isn't there. + } + table_val.Rows[LastRow].SetField("G", AgreementAccept); + + + + + + + + + if ((!PRTitle.Contains("Automatic deletion")) && + (!PRTitle.Contains("Delete")) && + (!PRTitle.Contains("Remove")) && + (!AgreementAccept.Contains("+"))) { + outBox_msg.AppendText(Environment.NewLine + "WordFilter: " ); + + List WordFilterMatch = null; + foreach (string word in WordFilterList) { + // if (clip.Contains(word) && !clip.Contains("Url") && !clip.Contains("Agreement")) { + if (clip.Contains(word)) { + WordFilterMatch.Add(word); + } + } + + if (WordFilterMatch != null) { + WordFilter = "-!"; + Approve = "-!"; + outBox_msg.AppendText(Environment.NewLine + "WordFilter: " + WordFilterMatch.FirstOrDefault()); + // ReplyToPR(PR,"WordFilter",WordFilterMatch.FirstOrDefault()); + } + } + table_val.Rows[LastRow].SetField("W", WordFilter); + + + + + + + if (null != ManifestVersion) { + if ((PRvMan != "N") && + (!PRTitle.Contains("Automatic deletion")) && + (!PRTitle.Contains("Delete")) && + (!PRTitle.Contains("Remove"))) { + /* + DisplayName - maybe warn + DisplayVersion - Hard block + Publisher - maybe warn + ProductCode - maybe warn + UpgradeCode - maybe warn + InstallerType - maybe warn + */ + + string replyType = ""; + AnF = ""; + + foreach (string Entry in AppsAndFeaturesEntriesList) { + string replyString = "un"; + int entryType = 0; + if (Entry == "DisplayName") { + replyString = "dn"; + } else if (Entry == "DisplayVersion") { + replyString = "dv"; + // entryType = 1; + // } else if (Entry == "InstallerType") { + // replyString = "it"; + // } else if (Entry == "Publisher") { + // replyString = "pu"; + } else if (Entry == "ProductCode") { + replyString = "pc"; + } else if (Entry == "UpgradeCode") { + replyString = "uc"; + } + + bool ANFOld = ManifestEntryCheck(PackageIdentifier, ManifestVersion, Entry); + bool ANFCurrent = clip.Contains(Entry); + if ((ANFOld == true) && (ANFCurrent == false)) { + if (entryType == 1) { + AnF = replyString+"O-"; + } + replyType = "AppsAndFeaturesMissing"; + } else if ((ANFOld == false) && (ANFCurrent == true)) { + if (entryType == 1) { + AnF = replyString+"C-"; + } + replyType = "AppsAndFeaturesNew"; + //InvokeGitHubPRRequest(PR,"Post","comments","[Policy] Needs-Author-Feedback","Silent") + } else if ((ANFOld == false) && (ANFCurrent == false)) { + AnF += replyString+"0"; + } else if ((ANFOld == true) && (ANFCurrent == true)) { + AnF += replyString+"1"; + }//end if ANFOld + }//end foreach Entry + if (replyType != "") { + + // ReplyToPR(PR,replyType,Submitter,MagicLabels[30]); + // AddPRToRecord(PR,"Feedback",PRTitle); + } + + + }//end if PRvMan + }//end if null + table_val.Rows[LastRow].SetField("F", AnF); + + + + + + if ((PRvMan != "N") && + (!PRTitle.Contains("Automatic deletion")) && + (!PRTitle.Contains("Delete")) && + (!PRTitle.Contains("Remove"))) { + try { + if (clip.Contains("InstallerUrl")) { + string InstallerUrl = YamlValue("InstallerUrl",clip); + ////Write-Host "InstallerUrl: InstallerUrl installerMatches PRVersion: -PR PRVersion" -f "blue" + if (!(InstallerUrl.Contains(PRVersion))) { + //Matches when the dots are removed from semantec versions in the URL. + if (!(InstallerUrl.Contains(PRVersion.Replace(".","")))) { + InstVer = "-"; + } + } + } + } catch { + InstVer = "-"; + } //end try + } //end if PRvMan + + try { + PRVersion = YamlValue("PackageVersion",clip); + if (PRVersion.Contains(" ")) { + InstVer = "-!"; + } + }catch{ + //null = (Get-Process) //This section intentionally left blank. + } + + table_val.Rows[LastRow].SetField("I", InstVer); + + +/* +Version Parameter Check - Removed +A = Auth - Done +M = Major version - Done +R = Review - Done +G = aGreement - Done +F = apps and Features - Done in an inefficient fashion that really should be rewritten soon. +W = Word filter - Done +I = version number in InstallerUrl - Done +D = Difference between file counts (PR removes files) - disabled, needs revision +V = highest Version remaining - Done +Manifest version in repo - Done + +New UEs +154958 "2024.4.1.152" +155049 "5.1.1.188" +155051 "5.1.1.188" +155060 "4.10.1" +155507 "3.2.38.4985" +156171 (YamlValue) +155850 + +string to number +155006 ""14"" +155193 "7.5.30-Release.5179102" +155266 "c6.76.06" +155353 "1.1.20240415-1" +155354 "1.1.20240415-1" +155593 "v0.7.1" +155642 "v577" +155031 "v576" +155918 "v0.8.0-alpha1" +156200 "V0" +156550 "dev-2024-06" + +Returned array instead of string +157466 + */ + + + if ((PRvMan != "N") && + ((PRTitle.Contains("Automatic deletion")) || + (PRTitle.Contains("Delete")) || + (PRTitle.Contains("Remove")))) {//Removal PR - if highest version in repo. + if ((PRVersion == ManifestVersion) || (NumVersions == 1)) { + /* + ReplyToPR(PR,"VersionCount",Submitter,"[Policy] Needs-Author-Feedback\n[Policy] Highest-Version-Removal"); + AddPRToRecord(PR,"Feedback",PRTitle); +*/ + NumVersions = -1; + } + } else {//Addition PR - has more files than repo. + bool GLD =ListingDiff(clip);// //Ignores when a PR adds files that didn't exist before. + if (GLD == true) { + string_ListingDiff = "-!"; +/* + ReplyToPR(PR,"ListingDiff",GLD); + InvokeGitHubPRRequest(PR,"Post","comments","[Policy] Needs-Author-Feedback","Silent"); + AddPRToRecord(PR,"Feedback",PRTitle); + */ + }//end if GLD + }//end if PRvMan + table_val.Rows[LastRow].SetField("D", string_ListingDiff); + table_val.Rows[LastRow].SetField("V", NumVersions); + + + + +int comparison = String.Compare(PRVersion, ManifestVersion); + + if (PRvMan != "N") { + if (null == PRVersion || "" == PRVersion) { + PRvMan = "Error:PRVersion"; + } else if (ManifestVersion == "Unknown") { + PRvMan = "Error:ManifestVersion"; + } else if (ManifestVersion == null) { + PRvMan = "Error:ManifestVersion"; + } else if (comparison < 0) {//PRVersion < ManifestVersion + PRvMan = ManifestVersion; + } else if (comparison > 0) {//PRVersion > ManifestVersion + PRvMan = ManifestVersion; + } else if (PRVersion == ManifestVersion) { + PRvMan = "="; + } else { + PRvMan = "Error:ManifestVersion"; + } + } + + if ((Approve == "-!") || + (Auth == "-!") || + (AnF == "-") || + (InstVer == "-!") || + (prAuth == "-!") || + (string_ListingDiff == "-!") || + (NumVersions == -1) || + (WordFilter == "-!") || + (Review == "-") || + (AgreementAccept == "-!") || + (PRvMan == "N")) { + //|| (PRvMan -match "^Error") + Approve = "-!"; + } + + //PRvMan = PadRight(PRvMan,14); + table_val.Rows[LastRow].SetField("ManifestVer", PRvMan); + + + + + +/* + if (Approve == "+") { + ApprovePR(PR); + AddPRToRecord(PR,"Approved",PRTitle); + } +*/ + + table_val.Rows[LastRow].SetField("OK", Approve); + dataGridView_val.FirstDisplayedScrollingRowIndex = 0; + oldclip = PRTitle; + } //end if PRTitle + } //end if PRTitle + } //end function + + public void WorkSearch(string Preset, int Days = 7) { + int Page = 1; + dynamic[] PRs = SearchGitHub(Preset,Page,Days,false,true); + PRs = PRs.Where(n => n["labels"] != null).ToArray();//.Where(n => n["number"] -notin (Get-Status).pr} + + foreach (dynamic FullPR in PRs) { + int PR = FullPR["number"]; + //Get-TrackerProgress -PR $PR $MyInvocation.MyCommand line PRs.Length + //line++; + //This part is too spammy, checking Highest-Version-Removal on every run (sometimes twice a day) for a week as the PR sits. I think this is fixed in the other version. #PendingBugfix + if((FullPR["title"].Contains("Remove")) || + (FullPR["title"].Contains("Delete")) || + (FullPR["title"].Contains("Automatic deletion"))){ + CheckInstaller(PR); + } + //The other version populates Comments equivalent here, and hands this to both the PRHasNonstandardComments equivalent call, and the PRStateFromComments equivalent below. To halve the number of API calls by reducing redundant calls. This was facilitated by PowerShell's optional typing. + //dynamic[] Comments = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Get,"comments")); + if (Preset == "Approval"){ + if (PRHasNonstandardComments(PR)){ + OpenPRInBrowser(PR); + //One of these is faster to open, as though one code path has a huge inefficiency. Need more data on which. + } else { + OpenPRInBrowser(PR,true); + } + } else if (Preset == "Defender"){ + LabelAction(PR); + } else {//ToWork etc + //Don't open the PR in browser if UserName (self) was the last commenter, or if it's in the Defender loop. + /* + $Comments = ($Comments | select created_at,@{n="UserName";e={$_.user.login.Replace("\\[bot\\]")}},body) + State = (Get-PRStateFromComments -PR $PR -Comments $Comments) + $LastState = $State[-1] + if ($LastState.event == "DefenderFail") { + Get-PRLabelAction -PR $PR + } else if ($LastState.event == "LabelAction") { + Get-GitHubPreset -Preset LabelAction -PR $PR + OpenPRInBrowser(PR); + } else { + if ($Comments[-1].UserName != $gitHubUserName) { + OpenPRInBrowser(PR); + } + }//end if LastCommenter + */ + }//end if Preset + }//end foreach FullPR + }//end Get-WorkSearch + + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Automation Tools --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void LabelAction(int PR){ + string[] PRLabels = FromJson(InvokeGitHubPRRequest(PR,"labels","content"))["name"]; + //Write-Output "PR $PR has labels $PRLabels" + if (PRLabels.Any(n => MagicLabels[0].Contains(n))) { + DataTable PRState = PRStateFromComments(PR); + string EightHoursAgo = DateTime.Now.AddHours(-8).ToString("M/d/yyyy"); + string EighteenHoursAgo = DateTime.Now.AddHours(-18).ToString("M/d/yyyy"); + /* + if (PRState.Where(n => n.Event == "PreValidation")[-1].created_at < EightHoursAgo && //Last Prevalidation was 8 hours ago. + PRState.Where(n => n.Event == "Running")[-1].created_at < EighteenHoursAgo) { //Last Run was 18 hours ago. + RetryPR(PR); +DataTable dt = ... +DataView dv = new DataView(dt); +dv.RowFilter = "(EmpName != 'abc' or EmpName != 'xyz') and (EmpID = 5)" + +dt.where(e => {check something}).Select({select code here}) +var query = + contacts.SelectMany( + contact => orders.Where(order => order).Select(order ) + } + */ + } else { + + foreach (string Label in PRLabels) { + string UserInput = ""; + if (Label == MagicLabels[1]) { + UserInput = LineFromCommitFile(PR,36,MagicStrings[0],10); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,41,MagicStrings[0],10); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,50,MagicStrings[0],10); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,26,MagicStrings[0],10); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,34,MagicStrings[0],10); + } + if (UserInput != null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + if (UserInput.Contains(MagicStrings[3])) { + AddPRToRecord(PR,"Blocking"); + ReplyToPR(PR,"AutomationBlock","","Network-Blocker"); + } + } else if (Label == MagicLabels[2]) { + UserInput = LineFromCommitFile(PR,36,MagicStrings[0],3); + if (UserInput != null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + if (UserInput.Contains(MagicStrings[3])) { + AddPRToRecord(PR,"Blocking"); + ReplyToPR(PR,"AutomationBlock","","Network-Blocker"); + } + } else if (Label == MagicLabels[3]) { + UserInput = LineFromCommitFile(PR,36,MagicStrings[0],10); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,26,MagicStrings[0],10); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,36,MagicStrings[0],10); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,37,MagicStrings[0],10); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,50,MagicStrings[0],10); + } + if (UserInput != null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + //Get-UpdateHashInPR2 -PR $PR -Clip UserInput + } + } else if (Label == MagicLabels[4]) { + UserInput = LineFromCommitFile(PR,36,MagicStrings[6],5); + if (UserInput == null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + CheckInstaller(PR); + } + } else if (Label == MagicLabels[5]) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[1]); + } + if (UserInput != null) { + if (UserInput.Contains(MagicStrings[5])) { + RetryPR(PR); + } + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[6]) { + RetryPR(PR); + } else if (Label == MagicLabels[7]) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[1]); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[4],7); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,39,MagicStrings[4],7); + } + if (UserInput != null) { + if (UserInput.Contains("Sequence contains no elements")) {//Reindex fixes this. + ReplyToPR(PR,"SequenceNoElements"); + string PRTitle = FromJson(InvokeGitHubPRRequest(PR))["title"]; + if ((PRTitle.Contains("Automatic deletion")) || (PRTitle.Contains("Remove"))) { + ReplyToPR(PR,"InstallsNormally","","Manually-Validated"); + } + } + } + } else if (Label == MagicLabels[8]) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + if (UserInput == null) { + if (UserInput.Contains(MagicStrings[5])) { + RetryPR(PR); + } + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[9]) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[2]); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[2]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,39,MagicStrings[2]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,39,MagicStrings[1]); + } + if (UserInput == null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[10]) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[2]); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,31,MagicStrings[2]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,31,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,44,MagicStrings[2]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,44,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[2]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[1]); + } + if (UserInput == null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[11]) {//Manifest-Validation-Error + UserInput = LineFromCommitFile(PR,25,MagicStrings[2]); + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + } + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,31,MagicStrings[2]); + } + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,31,MagicStrings[1]); + } + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,44,MagicStrings[2]); + } + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,44,MagicStrings[1]); + } + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[2]); + } + if (null == UserInput) { + UserInput = LineFromCommitFile(PR,15,MagicStrings[1]); + } + if (null != UserInput) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[12]) { + //Get-GitHubPreset PossibleDuplicate -PR PR + } else if (Label == MagicLabels[13]) { + UserInput = LineFromCommitFile(PR,24,MagicStrings[1]); + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,14,MagicStrings[1]); + } + if (UserInput == null) { + UserInput = LineFromCommitFile(PR,27,MagicStrings[1]); + } + if (UserInput.Contains("The pull request contains more than one manifest")) { + AddPRToRecord(PR,"Feedback"); + ReplyToPR(PR,"OneManifestPerPR",MagicLabels[30]); + } + if (UserInput == null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[14]) { + UserInput = LineFromCommitFile(PR,32,"Validation result: Failed"); + CheckInstaller(PR); + if (UserInput == null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[15]) { + } else if (Label == MagicLabels[16]) { + AutoValLog(PR); + } else if (Label == MagicLabels[17]) { + AutoValLog(PR); + } else if (Label == MagicLabels[18]) { + UserInput = LineFromCommitFile(PR,25,MagicStrings[1]); + if (UserInput == null) { + ReplyToPR(PR,"AutoValEnd",UserInput); + } + } else if (Label == MagicLabels[19]) { + } else if (Label == MagicLabels[20]) { + string PRTitle = FromJson(InvokeGitHubPRRequest(PR,""))["title"]; + // foreach (Dictionary Waiver in GetFileData(DataFileName,"autoWaiverLabel")) { + // if (PRTitle.Contains((string)Waiver["PackageIdentifier"])) { + // AddWaiver(PR); + // } + // } + } else if (Label == MagicLabels[21]) { + AutoValLog(PR); + } else if (Label == MagicLabels[22]) { + AutoValLog(PR); + } else if (Label == MagicLabels[23]) { + AutoValLog(PR); + }//end if Label + }//end foreach Label + }//end if Label + } + + public string AddWaiver(int PR) { + dynamic Labels = FromJson(InvokeGitHubPRRequest(PR ,WebRequestMethods.Http.Get,"labels","","issues")); + string string_out = ""; + foreach (dynamic Label in Labels) { + string Labelname = Label["name"]; + string Waiver = ""; + if (Labelname == MagicLabels[2]){ + //GitHubPreset(PR,"Completed")l + AddPRToRecord(PR,"Manual"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[31]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[24]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[25]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[26]){ + //GitHubPreset(PR,"Approved")l + } else if (Labelname == MagicLabels[15]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[16]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[27]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[21]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[20]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[22]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[23]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[28]){ + AddPRToRecord(PR,"Waiver"); + Waiver = Labelname; + } else if (Labelname == MagicLabels[29]){ + //GitHubPreset(PR,"Completed")l + AddPRToRecord(PR,"Manual"); + } else if (Labelname == MagicLabels[6]){ + //GitHubPreset(PR,"Completed")l + AddPRToRecord(PR,"Manual"); + } + if (Waiver != "") { + string_out += InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","@wingetbot waivers Add "+Waiver,"issues"); + }; //end if Waiver + }; //end Foreach Label + return string_out; + } //end Add-Waiver + + public dynamic SearchGitHub(string Preset, int Page = 1,int Days = 0,bool IEDS = false,bool NoLabels = false,bool Browser = false){ + //[ValidateSet("Approval","Blocking","Defender","IEDS","ToWork","ToWork2")] + string Url = "https://api.github.com/search/issues?page=Page&q="; + if (Browser == true) { + Url = GitHubBaseUrl+"/pulls?page=Page&q="; + } + //Base settings; + string Base = "repo:"+owner+"/"+repo+"+"; + Base += "is:pr+"; + //if (AllowClosedPRs == false) { + Base += "is:open+"; + //} + Base += "draft:false+"; + + //Smaller blocks; + string nApproved = "-label:Moderator-Approved+"; + string string_nBI = "-label:Blocking-Issue+"; + string Defender = "label:"+MagicLabels[0]+"+"; + string HaventWorked = "-commenter:"+gitHubUserName+"+"; + string string_nHW = "-label:Hardware+"; + string IEDSLabel = "label:Internal-Error-Dynamic-Scan+"; + string nIEDS = "-"+IEDSLabel; + string nMMC = "-label:Manifest-Metadata-Consistency+"; + string string_IEM = "label:Internal-Error-Manifest+"; + string string_NA = "label:Needs-Attention+"; + string string_NAF = "label:Needs-Author-Feedback+"; + string nNSA = "-label:Internal-Error-NoSupportedArchitectures+"; + string NotPass = "-label:Azure-Pipeline-Passed+";//Hasn't passed pipelines; + //string SortUp = "sort:updated-asc+"; + string string_VC = "label:Validation-Completed+";//Completed; + //string string_VPM = "label:Version-Parameter-Mismatch+"; + string string_nVC = "-"+string_VC;//Completed; + + string date = DateTime.Now.AddDays(-Days).ToString("yyyy-MM-dd"); + string Recent = "updated:>"+date+"+"; + + //Building block settings; + string Blocking = string_nHW; + Blocking += nNSA; + Blocking += "-label:DriverInstall+"; + Blocking += "-label:Agreements+"; + Blocking += "-label:License-Blocks-Install+"; + Blocking += "-label:Network-Blocker+"; + Blocking += "-label:portable-archive+"; + Blocking += "-label:Project-File+"; + Blocking += "-label:Reboot+"; + Blocking += "-label:Scripted-Application+"; + Blocking += "-label:WindowsFeatures+"; + Blocking += "-label:zip-binary+"; + + string Common = string_nBI; + Common += "-"+string_IEM; + Common += "-"+Defender; + + string Cna = string_VC; + Cna += nApproved; + + string Review1 = "-label:Changes-Requested+"; + Review1 += "-label:Needs-CLA+"; + Review1 += "-label:No-Recent-Activity+"; + + string Review2 = "-"+string_NA; + Review2 += "-"+string_NAF; + Review2 += "-label:Needs-Review+"; + + string Approvable = "-label:Validation-Merge-Conflict+" ; + Approvable += "-label:Manifest-Version-Error+"; + Approvable += "-label:Unexpected-File+"; + + string Workable = "-label:Highest-Version-Removal+"; + Workable += "-label:Manifest-Version-Error+"; + Workable += "-label:Validation-Certificate-Root+"; + Workable += "-label:Binary-Validation-Error+"; + Workable += "-label:Validation-Merge-Conflict+"; + Workable += "-label:Validation-SmartScreen-Error+"; + Workable += "-label:Unexpected-File+"; + + //Composite settings; + string Set1 = Blocking + Common + Review1; + string Set2 = Set1 + Review2; + Url += Base; + + // if (Author != "") { + // Url += "author:"+Author; + // } + // if (Commenter != "") { + // Url += "commenter:"+Commenter; + // } + // if (Days > 0) { + // Url += Recent; + // } + // if (IEDS == true) { + // Url += nIEDS; + // } + // if (Label != "") { + // Url += "label:"+Label; + // } + // if (NotWorked == true) { + // Url += HaventWorked; + // } + // if (Title != "") { + // Url += "Title in:title"; + // } + if (Preset == "Approval") { + Url += Cna; + Url += Set2; //Blocking + Common + Review1 + Review2; + Url += Approvable; + Url += nMMC; + Url += Workable; + Url += " sort:created-asc"; + } else if (Preset == "Defender") { + Url += Defender; + Url += "sort:updated-asc+"; + } else if (Preset == "IEDS") { + Url += IEDSLabel; + Url += string_nBI; + Url += Blocking; + Url += NotPass; + Url += string_nVC; + } else if (Preset == "ToWork") { + Url += Set1; //Blocking + Common + Review1; + Url += "-"+Defender; + } else if (Preset == "ToWork2") { + Url += HaventWorked; + Url += "-"+Defender; + Url += Set1; //Blocking + Common + Review1; + Url += string_nVC; + } + + if (Browser == true) { + System.Diagnostics.Process.Start(Url); + return ""; + //System.Diagnostics.Process.Start("https://bing.com"); + } else { + + //if (NoLabels == true) { + //return FromJson(InvokeGitHubRequest(Url))["items"].Where(n => n["labels"] != null); + //} else { + return FromJson(InvokeGitHubRequest(Url))["items"]; + } + //} + } +//[Message options: ("AgreementMismatch","AppFail","Approve","AutomationBlock","AutoValEnd","AppsAndFeaturesNew","AppsAndFeaturesMissing","DriverInstall","DefenderFail","HashFailRegen","InstallerFail","InstallerMissing","InstallerNotSilent","NormalInstall","InstallerUrlBad","ListingDiff","ManValEnd","ManifestVersion","NoCause","NoExe","NoRecentActivity","NotGoodFit","OneManifestPerPR","Only64bit","PackageFail","PackageUrl","Paths","PendingAttendedInstaller","PolicyWrapper","RemoveAsk","SequenceNoElements","Unattended","Unavailable","UrlBad","VersionCount","WhatIsIEDS","WordFilter")] + public string CannedMessage (string Message, string UserInput = "") { + string string_out = ""; + string Username = "@"+UserInput.Replace(" ","")+","; + string greeting = "Hi "+ Username + Environment.NewLine + Environment.NewLine; + //Most of these aren't used frequently enough to store and should be depreciated. + if (Message == "AgreementMismatch"){ + string_out = greeting + "This package uses Agreements, but this PR's AgreementsUrl doesn't match the AgreementsUrl on file."; + } else if (Message == "AppsAndFeaturesNew"){ + string_out = greeting + "This manifest adds Apps and Features entries that aren't present in previous PR versions. This entry should be added to the previous versions, or removed from this version."; + } else if (Message == "AppsAndFeaturesMissing"){ + string_out = greeting + "This manifest removes Apps and Features entries that are present in previous PR versions. This entry should be added to this version, to maintain version matching, and prevent the 'upgrade always available' situation with this package."; + } else if (Message == "AppFail"){ + string_out = greeting + "The application installed normally, but gave an error instead of launching:" + Environment.NewLine; + } else if (Message == "Approve"){ + string_out = greeting + "Do you approve of these changes?"; + } else if (Message == "AutomationBlock"){ + string_out = "This might be due to a network block of data centers, to prevent automated downloads."; + } else if (Message == "UserAgentBlock"){ + string_out = "This might be due to user-agent throttling."; + } else if (Message == "AutoValEnd"){ + string_out = "Automatic Validation ended with:" + Environment.NewLine + "> " + UserInput; + } else if (Message == "DriverInstall"){ + string_out = greeting + "The installation is unattended, but installs a driver which isn't unattended:" + Environment.NewLine + "Unfortunately, installer switches are not usually provided for this situation. Are you aware of an installer switch to have the driver silently install as well?"; + } else if (Message == "DefenderFail"){ + string_out = greeting + "The package didn't pass a Defender or similar security scan. This might be a false positive and we can rescan tomorrow."; + } else if (Message == "HashFailRegen"){ + string_out = "Closing to regenerate with correct hash."; + } else if (Message == "InstallerFail"){ + string_out = greeting + "The installer did not complete:" + Environment.NewLine; + } else if (Message == "InstallerMissing"){ + string_out = greeting + "Has the installer been removed?"; + } else if (Message == "InstallerNotSilent"){ + string_out = greeting + "The installation isn't unattended. Is there an installer switch to have the package install silently?"; + } else if (Message == "InstallsNormally"){ + string_out = "This package installs and launches normally in a Windows 10 VM."; + } else if (Message == "ListingDiff"){ + string_out = "This PR omits these files that are present in the current manifest:" + Environment.NewLine + "> " + UserInput; + } else if (Message == "ManifestVersion"){ + string_out = greeting + "We don't often see the `1.0.0` manifest version anymore. Would it be possible to upgrade this to the [1.5.0]($GitHubBaseUrl/tree/master/doc/manifest/schema/1.5.0) version, possibly through a tool such as [WinGetCreate](https://learn.microsoft.com/en-us/windows/package-manager/package/manifest?tabs=minschema%2Cversion-example), [YAMLCreate]($GitHubBaseUrl/blob/master/Tools/YamlCreate.ps1), or [Komac](https://github.com/russellbanks/Komac)? "; + } else if (Message == "ManValEnd"){ + string_out = "Manual Validation ended with:" + Environment.NewLine + "> " + UserInput; + } else if (Message == "NoCause"){ + string_out = "I'm not able to find the cause for this error. It installs and runs normally on a Windows 10 VM."; + } else if (Message == "NoExe"){ + string_out = greeting + "The installer doesn't appear to install any executables, only supporting files:" + Environment.NewLine + Environment.NewLine + "Is this expected?"; + } else if (Message == "NoRecentActivity"){ + string_out = "No recent activity."; + } else if (Message == "NotGoodFit"){ + string_out = greeting + "Unfortunately, this package might not be a good fit for inclusion into the WinGet public manifests. Please consider using a local manifest (\\WinGet install --manifest C:\\path\\to\\manifest\\files\\) for local installations. "; + } else if (Message == "NormalInstall"){ + string_out = "This package installs and launches normally in a Windows 10 VM."; + } else if (Message == "OneManifestPerPR"){ + string_out = greeting + "We have a limit of 1 manifest change, addition, or removal per PR. This PR modifies more than one PR. Can these changes be spread across multiple PRs?"; + } else if (Message == "Only64bit"){ + string_out = greeting + "Validation failed on the x86 package, and x86 packages are validated on 32-bit OSes. So this might be a 64-bit package."; + } else if (Message == "PackageFail"){ + string_out = greeting + "The package installs normally, but fails to run:" + Environment.NewLine; + } else if (Message == "PackageUrl"){ + string_out = greeting + "Could you add a PackageUrl?"; + } else if (Message == "Paths"){ + string_out = "Please update file name and path to match this change."; + } else if (Message == "PendingAttendedInstaller"){ + string_out = "Pending:" + Environment.NewLine + "* https://github.com/microsoft/winget-cli/issues/910"; + } else if (Message == "PolicyWrapper"){ + string_out = ""; + } else if (Message == "RemoveAsk"){ + string_out = greeting + "This package installer is still available. Why should it be removed?"; + } else if (Message == "SequenceNoElements"){ + string_out = "> Sequence contains no elements" + Environment.NewLine + Environment.NewLine + " - $GitHubBaseUrl/issues/133371"; + } else if (Message == "Unavailable"){ + string_out = greeting + "The installer isn't available from the publisher's website:"; + } else if (Message == "Unattended"){ + string_out = greeting + "The installation isn't unattended:" + Environment.NewLine + Environment.NewLine + "Is there an installer switch to bypass this and have it install automatically?"; + } else if (Message == "UrlBad"){ + string_out = greeting + "I'm not able to find this InstallerUrl from the PackageUrl. Is there another page on the developer's site that has a link to the package?"; + } else if (Message == "VersionCount"){ + string_out = greeting + "This manifest has the highest version number for this package. Is it available from another location? (This might be in error if the version is switching from semantic to string, or string to semantic.)"; + } else if (Message == "WhatIsIEDS"){ + string_out = greeting + "The label `Internal-Error-Dynamic-Scan` is a blanket error for one of a number of internal pipeline errors or issues that occurred during the Dynamic Scan step of our validation process. It only indicates a pipeline issue and does not reflect on your package. Sorry for any confusion caused."; + } else if (Message == "WordFilter"){ + string_out = "This manifest contains a term that is blocked:" + Environment.NewLine + Environment.NewLine + "> " + UserInput; + } + string_out += Environment.NewLine + Environment.NewLine + "(Automated response - build " + build + ".)"; + return string_out; + } + + public string AutoValLog(int PR){ + //int PR = Int32.Parse(inputBox_PRNumber.Text.Replace("#","")); + //Download + //Unzip + //Filter + //Post + string string_out = ""; + int DownloadSeconds = 4; + //StopProcess("photosapp"); + int? BuildNumber = ADOBuildFromPR(PR); + if (BuildNumber != null) { + + string Url =ADOMSBaseUrl+"/ed6a5dfa-6e7f-413b-842c-8305dd9e89e6/_apis/build/builds/" + BuildNumber + "/artifacts?artifactName=InstallationVerificationLogs&api-version=7.1&%24format=zip"; + System.Diagnostics.Process.Start(Url);//This downloads to Windows default location, which has already been set to DestinationPath + Thread.Sleep(DownloadSeconds*1000);//Sleep while download completes. + + RemoveItem(LogPath); + ZipFile.ExtractToDirectory(ZipPath, DestinationPath); + RemoveItem(ZipPath); + List UserInput = new List(); + + string[] files = Directory.GetFileSystemEntries(LogPath, "*", SearchOption.AllDirectories); + foreach (string file in files) { + if (file.Contains("png")) { + System.Diagnostics.Process.Start(file); + } //Open PNGs with default app. + string[] fileContents = GetContent(file).Split('\n'); + UserInput.AddRange(fileContents.Where(n => n.Contains("[FAIL]")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("error")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("exception")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("exit code")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("fail")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("No suitable")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("not supported")).ToList());//not supported by this processor type + // UserInput += fileContents.Where(n => n.Contains("not applicable")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("Unable to locate nested installer")).ToList()); + UserInput.AddRange(fileContents.Where(n => n.Contains("Windows cannot install package")).ToList()); + } + + if (UserInput != null) { + // if (UserInput.Contains("[FAIL] Installer failed security check.") || UserInput.Contains("Operation did not complete successfully because the file contains a virus or potentially unwanted software")) { + //Get-GitHubPreset -Preset DefenderFail -PR PR + // } + + UserInput = UserInput.Where(n => !n.Contains(" success or error status: 0")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Windows Error Reporting")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("--- End of inner exception stack trace ---")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("api-ms-win-core-errorhandling")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("because the current user does not have that package installed")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Could not create system restore point")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Dest filename")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("ERROR: Signature Update failed")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Exception during executable launch operation System.InvalidOperationException: No process is associated with this object.")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Exception(1) ")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Exit code: 0")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Installation failed with exit code -1978334972")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("ISWEBVIEW2INSTALLED")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("ResultException")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("SchedNetFx")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Setting error JSON 1.0 fields")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Standard error: ")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Terminating context")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("The FileSystemWatcher has detected an error ")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("The process cannot access the file because it is being used by another process")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("ThrowifExceptional")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("Windows Installer installed the product")).ToList(); + UserInput = UserInput.Where(n => !n.Contains("with working directory \"D:TOOLS\".")).ToList(); + UserInput = UserInput.Distinct().ToList(); + + string message = "Automatic Validation ended with:" + Environment.NewLine + Environment.NewLine + "> " + string.Join(Environment.NewLine+"> ",UserInput) +Environment.NewLine + Environment.NewLine + Environment.NewLine + "(Automated response - build "+build+".)"; + + string_out = ReplyToPR(PR,"", "", "", message); + } else { + string message = "Automatic Validation ended with:" + Environment.NewLine + Environment.NewLine + "> No errors to post."+Environment.NewLine + Environment.NewLine + Environment.NewLine +"(Automated response - build "+build+".)"; + string_out = ReplyToPR(PR,"", "", "", message); + } + } else { + string message = "Automatic Validation ended with:" + Environment.NewLine + Environment.NewLine + "> ADO Build not found."+Environment.NewLine + Environment.NewLine +"(Automated response - build "+build+".)"; + string_out = ReplyToPR(PR,"", "", "", message); + } + return string_out; + } + + public void RandomIEDS(int VM = 0){ + if (VM == 0) { + VM = NextFreeVM(); + } + dynamic IEDSPRs = SearchGitHub("IEDS"); + int PR = 0;//(IEDSPRs["number"].Where(n => !n.Contains(GetStatus())["pr"]} | Get-Random); + int File = 0; + string ManifestType = ""; + string OldManifestType = ""; + while (ManifestType != "version") { + string string_CommitFile = CommitFile(PR,File); + string PackageIdentifier = YamlValue("PackageIdentifier",string_CommitFile).Replace("\"","").Replace("'",""); + //ManifestFile(VM,PR,string_CommitFile,PackageIdentifier); + OldManifestType = ManifestType; + ManifestType = YamlValue(ManifestType,string_CommitFile); + //if (OldManifestType == ManifestType) {break}; + File++; + } + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//====================-------------------- PR Tools --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + //Add user to PR: InvokeGitHubPRRequest -Method $Method -Type "assignees" -Data $User -Output StatusDescription + //Approve PR (needs work): InvokeGitHubPRRequest -PR $PR -Method Post -Type reviews + public string InvokeGitHubPRRequest(int PR, string Method = WebRequestMethods.Http.Get,string Type = "labels",string Data = "",string Path = "issues") { + //Method [ValidateSet("GET","DELETE","PATCH","POST","PUT")] + //Type [ValidateSet("assignees","comments","commits","files","labels","reviews","")] + //Path [ValidateSet("issues","pulls")] + //Output [ValidateSet("Content","Silent","StatusDescription")][ + Dictionary Response = new Dictionary(); + string Url = GitHubApiBaseUrl+"/"+Path+"/"+PR+"/"+Type; + string commitUrl = GitHubApiBaseUrl+"/pulls/"+PR+"/commits"; + //dynamic prData = FromJson(InvokeGitHubRequest(commitUrl)); + string commit = "";//((prData["commit"]["url"].Split("/"))[-1]); + + if ((Type == "") || (Type == "files") || (Type == "reviews")){ + Path = "pulls"; + Url = GitHubApiBaseUrl+"/"+Path+"/"+PR+"/"+Type; + } else if (Type == "comments") { + Response.Add("body",Data); + } else if (Type == "commits") { + Url = GitHubApiBaseUrl+"/"+Type+"/"+commit; + } else if (Type == "reviews") { + Path = "pulls"; + Response.Add("body",Data); + Response.Add("commit",commit); + Response.Add("event","APPROVE"); + } else if (Type == "") { + //Response.title = ""; + //Response.body = ""; + Response.Add("state","closed"); + Response.Add("base","master"); + } else { + Response.Add("ResponseType",Data); + } + + Url = Url.Replace("/$",""); + + string output_var; + if (Method == WebRequestMethods.Http.Get) { + output_var = InvokeGitHubRequest(Url,Method); + } else { + string Body = ToJson(Response); + output_var = InvokeGitHubRequest(Url,Method,Body); + } + + if (null == output_var) { + return "!"; + } else { + return output_var; + } + } + + public string ApprovePR(int PR,string Data = "") { + string commitUrl = GitHubApiBaseUrl+"/pulls/"+PR+"/commits"; + //dynamic prData = FromJson(InvokeGitHubRequest(commitUrl)); + string commit = "";//((prData["commit"]["url"].Split("/"))[-1]); + string Url = GitHubApiBaseUrl+"/pulls/"+PR+"/reviews"; + + + Dictionary Response = new Dictionary(); + Response.Add("body",Data); + Response.Add("commit",commit); + Response.Add("event","APPROVE"); + string Body = ToJson(Response); + + string out_var = InvokeGitHubRequest(Url,WebRequestMethods.Http.Post,Body); + return out_var; + } + + public string RetryPR(int PR) { + AddPRToRecord(PR,"Retry"); + return InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","@wingetbot run"); + } + + public string AddGitHubReviewComment(int PR, string Comment,int? StartLine,int Line) { + dynamic Commit = FromJson(InvokeGitHubPRRequest(PR, WebRequestMethods.Http.Get, "commits")); + string CommitID = Commit["sha"]; + string Filename = Commit["files"]["filename"]; + string Side = "RIGHT"; + if (Filename.GetType().BaseType.Name == "Array") { + //Filename = Filename[0]; + } + + Dictionary Response = new Dictionary (); + Response.Add("body", Comment); + Response.Add("body", Comment); + Response.Add("Commit_id", CommitID); + Response.Add("path", Filename); + if (null != StartLine) { + Response.Add("start_line", StartLine); + } + Response.Add("start_side", Side); + Response.Add("line", Line); + Response.Add("side", Side); + string Body = ToJson(Response); + + string uri = GitHubApiBaseUrl+"/pulls/"+PR+"/comments"; + string string_out = InvokeGitHubRequest(uri, WebRequestMethods.Http.Post, Body); + return string_out;//.StatusDescription; + } + + public int ADOBuildFromPR(int PR) { + dynamic content = FromJson(InvokeWebRequest(ADOMSBaseUrl+"/"+repo+"/_apis/build/builds?branchName=refs/pull/"+PR+"/merge&api-version=6.0")); + string href = content["value"][0]["_links"]["web"]["href"]; + int PRbuild = Int32.Parse(href.Split('=')[1]); + return PRbuild; + } + + public string LineFromCommitFile(int PR, int LogNumber, string SearchString = "Specified hash doesn't match", int NumberOfLines = 0){ + int PRbuild = ADOBuildFromPR(PR); + // Take the returned string, + string Content = InvokeWebRequest(ADOMSBaseUrl+"/ed6a5dfa-6e7f-413b-842c-8305dd9e89e6/_apis/build/builds/"+PRbuild+"/logs/"+LogNumber); + // slice by line breaks, + string[] SplitContent = Content.Split('\n'); + + string output = ""; + int StartLine = 0; + int EndLine = 0; + for (int i = 0; i < SplitContent.Length; i++) { + // find the string containing the SearchString, + if (SplitContent[i].Contains(SearchString)) { + StartLine = i; + EndLine = StartLine + NumberOfLines; + } + // gather it and the next Length lines, + if (StartLine <= i && i <= EndLine) { + // Join these into a single string by line breaks + output += SplitContent[i] + Environment.NewLine; + } + } + //and return. + return output; + } + + public void GetPRApproval(string Clip = "",int PR = 0,string PackageIdentifier = ""){ + if (Clip == "") { + Clip = Clipboard.GetText(); + } + if (PR == 0) { + PR = Int32.Parse(inputBox_PRNumber.Text.Replace("#","")); + } + if (PackageIdentifier == "") { + PackageIdentifier = ((Clip.Split(':'))[1].Split(' ')[0]); + } + //Happens only during Bulk Approval, when manifest is in clipboard. + string auth = GetFileData(DataFileName,PackageIdentifier,"gitHubUserName"); + List Approver = auth.Split('/').Where(n => !n.Contains("(")).ToList(); + string string_joined = string.Join("; @", Approver); + ReplyToPR(PR,string_joined,"Approve","Needs-Review"); + } + + public string ReplyToPR(int PR,string string_CannedMessage, string string_UserInput = "", string Policy = "", string Body = ""){ +/* + Dictionary PRContent = new Dictionary(); + PRContent = FromJson(InvokeGitHubPRRequest(PR,"","content")); + string from_mid = ToJson(PRContent["user"]); + Dictionary to_user = new Dictionary(); + to_user = FromJson(from_mid); + string string_UserInput = to_user["login"].ToString(); +*/ + if (Body == "") { + Body = CannedMessage(string_CannedMessage,string_UserInput); + } + if (Policy != "") { + Body += "\n"; + } + return InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments",Body,"issues"); + } + + public bool PRHasNonstandardComments(int PR) { + //Check for any non-standard PR comments. Return true if any are non-standard, and false if none are non-standard. + List list_comments = new List(); + bool out_bool = false; + dynamic[] comments = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Get,"comments")); + + if (comments != null) { + for (int c = 0; c < comments.Length; c++) { + list_comments.Add(comments[c]["body"]); + } + foreach (string StdComment in StandardPRComments) { + foreach (string comment in list_comments) { + if (comment.Contains(StdComment)) { + list_comments = list_comments.Where(n => n != comment).ToList(); + } + } + } + } + if (list_comments.Count > 0) { + out_bool = true; + } + return out_bool; + } + + public DataTable PRStateFromComments(int PR){ + dynamic[] Comments = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Get,"comments")); //| select created_at,@{n="UserName";e={$_.user.login -replace "\[bot\]"}},body) + //Robot usernames + string Wingetbot = "wingetbot"; + string AzurePipelines = "azure-pipelines"; + string FabricBot = "microsoft-github-policy-service"; + // List OverallState = new List(); + outBox_msg.AppendText(Environment.NewLine + "PRStateFromComments: "+ Comments.Length); + +DataTable OverallState = new DataTable(); +OverallState.Columns.Add("UserName", typeof(string)); +OverallState.Columns.Add("body", typeof(string)); +OverallState.Columns.Add("created_at", typeof(DateTime)); +OverallState.Columns.Add("State", typeof(string)); + + + foreach (dynamic Comment in Comments) { + outBox_msg.AppendText(Environment.NewLine + "Comment "+ ToJson(Comment)); + string State = ""; + string UserName = (string)Comment["user"]["login"]; + string body = (string)Comment["body"]; + //DateTime created_at = TimeZoneInfo.ConvertTimeBySystemTimeZoneId((DateTime)Comment["created_at"], "Pacific Standard Time"); + outBox_msg.AppendText(Environment.NewLine + "State "+ State + "UserName "+ UserName + "body "+ body); + + if (string.Equals(UserName, Wingetbot) && body.Contains("Service Badge")) { + State = "PreRun"; + } + if (body.Contains("AzurePipelines run") || + body.Contains("AzurePipelines run") || + body.Contains("azp run") || + body.Contains("wingetbot run")) { + State = "PreValidation"; + } + if (string.Equals(UserName, AzurePipelines) && body.Contains("Azure Pipelines successfully started running 1 pipeline")) { + State = "Running"; + } + if (string.Equals(UserName, FabricBot) && body.Contains("The check-in policies require a moderator to approve PRs from the community")) { + State = "PreApproval"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("The package didn't pass a Defender or similar security scan")) { + State = "DefenderFail"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("Status Code: 200")) { + State = "InstallerAvailable"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("Response status code does not indicate success")) { + State = "InstallerRemoved"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("which is greater than the current manifest's version")) { + State = "VersionParamMismatch"; + } + if (string.Equals(UserName, FabricBot) && ( + string.Equals(body, "The package manager bot determined there was an issue with one of the installers listed in the url field") || //URL error + string.Equals(body, "The package manager bot determined there was an issue with installing the application correctly") || //Validation-Installation-Error + string.Equals(body, "The pull request encountered an internal error and has been assigned to a developer to investigate") || //Internal-Error + string.Equals(body, "this application failed to install without user input") || //Validation-Unattended-Failed + string.Equals(body, "Please verify the manifest file is compliant with the package manager") //Manifest-Validation-Error + )) { + State = "LabelAction"; + } + if (string.Equals(UserName, FabricBot) && body.Contains("One or more of the installer URLs doesn't appear valid")) { + State = "DomainReview"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("Sequence contains no elements")) { + State = "SequenceError"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("This manifest has the highest version number for this package")) { + State = "HighestVersionRemoval"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("SQL error or missing database")) { + State = "SQLMissingError"; + } + if (string.Equals(UserName, FabricBot) && body.Contains("The package manager bot determined changes have been requested to your PR")) { + State = "ChangesRequested"; + } + if (string.Equals(UserName, FabricBot) && body.Contains("I am sorry to report that the Sha256 Hash does not match the installer")) { + State = "HashMismatch"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("Automatic Validation ended with:")) { + State = "AutoValEnd"; + } + if (string.Equals(UserName, gitHubUserName) && body.Contains("Manual Validation ended with:")) { + State = "ManValEnd"; + } + if (string.Equals(UserName, AzurePipelines) && body.Contains("Pull request contains merge conflicts")) { + State = "MergeConflicts"; + } + if (string.Equals(UserName, FabricBot) && body.Contains("Validation has completed")) { + State = "ValidationCompleted"; + } + if (string.Equals(UserName, Wingetbot) && body.Contains("Publish pipeline succeeded for this Pull Request")) { + State = "PublishSucceeded"; + } + if (!string.Equals(State, "")) { +DataRow newRow = OverallState.NewRow(); +newRow["UserName"] = UserName; +newRow["body"] = body; +newRow["created_at"] = Comment["created_at"]; +newRow["State"] = State; +OverallState.Rows.Add(newRow); + // OverallState.Add(State); //| select @{n="event";e={State}},created_at; + } + } + return OverallState; + } + +/* +vm = GetVM(VM); +bool ConnectionStatus = vm.Scope.IsConnected; + +*/ + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Network Tools --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + //GET = Read; POST = Append; PUT = Overwrite; DELETE = delete + public string InvokeGitHubRequest(string Url,string Method = WebRequestMethods.Http.Get,string Body = ""){ + string response_out = ""; + //This wrapper function is a relic of the PowerShell version, and should be obviated during a refactor. The need it meets in the PowerShell version - inject authentication headers into web requests, is met here directly inside the InvokeWebRequest function below. But having it here during the port process (code portage) reduces the amount of work needed to port the other functions were written to use it. + + if (Body == "") { + try { + response_out = InvokeWebRequest(Url, Method,"",true);// Headers Body -ContentType "application/json"; + } catch (Exception e) { + //MessageBox.Show("Wrong request!" + ex.Message, "Error"); + response_out = e.Message; + } + } else { + try { + response_out = InvokeWebRequest(Url, Method, Body,true);// Headers -ContentType "application/json"; + } catch (Exception e) { + //MessageBox.Show("Wrong request!" + ex.Message, "Error"); + response_out = e.Message; + } + } + + return response_out; + } + + public void CheckInstaller(int PR) { + dynamic Pull = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Get,"files")); + string PullInstallerContents = DecodeGitHubFile(FromJson(InvokeGitHubRequest(Pull[0]["contents_url"]))["content"]); + string Url = YamlValue("InstallerUrl",PullInstallerContents); + string string_out = "Error: Not successful but no error code from internal call."; + try { + string_out = "Status code: 200"; + string_out = InvokeWebRequest(Url, "Head");//.StatusCode; + }catch (Exception err) { + string_out = err.Message; + } + string Body = "URL: "+Url+" \n"+string_out + "\n\n(Automated message - build "+build+")"; + //If ($Body -match "Response status code does not indicate success") { + //string_out += Get-GitHubPreset InstallerMissing -PR $PR + //} //Need this to only take action on new PRs, not removal PRs. + InvokeGitHubPRRequest(PR, WebRequestMethods.Http.Post, "comments", Body); + } + + public string FindWinGetVersion(string PackageIdentifier) { + string string_out = ""; + string command = "winget search " + PackageIdentifier + " --exact --disable-interactivity"; + + Process process = new Process(); + StreamWriter StandardInput; + StreamReader StandardOut; + ProcessStartInfo processStartInfo = new ProcessStartInfo("PowerShell.exe"); + processStartInfo.UseShellExecute = false; + processStartInfo.RedirectStandardInput = true; + processStartInfo.RedirectStandardOutput = true; + processStartInfo.RedirectStandardError = true; + processStartInfo.CreateNoWindow = true; + process.StartInfo = processStartInfo; + process.Start(); + + StandardInput = process.StandardInput; + StandardOut = process.StandardOutput; + StandardInput.AutoFlush = true; + StandardInput.WriteLine(command); + StandardInput.Close(); + + string_out = StandardOut.ReadToEnd(); + try { + string_out = string_out + .Split('\n') + .Where(n => !n.Contains("disable-interactivity")) + .Where(n => n.ToLower().Contains(PackageIdentifier.ToLower())).FirstOrDefault(); + + int stringStart = string_out.IndexOf(PackageIdentifier); + string_out = string_out.Substring(stringStart); + string_out = string_out.Split(' ')[1]; + } catch { + string_out = ""; + } + return string_out; + } + + public int FindWinGetTotalVersions(string PackageIdentifier) { + string string_out = ""; + string command = "(((winget search " + PackageIdentifier + " --exact --disable-interactivity --versions --disable-interactivity) -join ',' -replace '-+,','' -split 'Version,')[1] -split ',').count"; + + Process process = new Process(); + StreamWriter StandardInput; + StreamReader StandardOut; + ProcessStartInfo processStartInfo = new ProcessStartInfo("PowerShell.exe"); + processStartInfo.UseShellExecute = false; + processStartInfo.RedirectStandardInput = true; + processStartInfo.RedirectStandardOutput = true; + processStartInfo.RedirectStandardError = true; + processStartInfo.CreateNoWindow = true; + process.StartInfo = processStartInfo; + process.Start(); + + StandardInput = process.StandardInput; + StandardOut = process.StandardOutput; + StandardInput.AutoFlush = true; + StandardInput.WriteLine(command); + StandardInput.Close(); + + string_out = StandardOut.ReadToEnd(); + // outBox_msg.AppendText(Environment.NewLine + "Testing2: " + string_out); + foreach (string string_in in string_out.Split('\n')) { + if (string_in.Length > 1 && string_in.Length < 5) { + string_out = string_in; + } + } + return Convert.ToInt32(string_out); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================------------------- Validation Starts Here ------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + +public void ValidateManifest(int VM = 0, string PackageIdentifier = "", string PackageVersion = "", int PR = 0, string Arch = "",string Scope = "", string InstallerType = "",string OS = "",string Locale = "",bool InspectNew = false,bool notElevated = false,string MinimumOSVersion = "", string ManualDependency = "", bool NoFiles = false, string installerLine = "", string Operation = "Scan"){ + /* Vaidation orchestration + Construct WinGet args string and populate script variables. + - if Configure - skip all of this and just add the Configure file as the WinGet arg. + Construct the VM script from the script variables and output to commands file. + - if Configure - Construct a similar script and perform the same output. + Construct the manifest from the files in the clipboard. + - if NoFiles, skip. + Perform new package inspection. + - if not InspectNew, skip. + Revert selected VM and launch its window. + */ + string clipInput = Clipboard.GetText(); + // [ValidateSet("x86","x64","arm","arm32","arm64","neutral")] + // [ValidateSet("User","Machine")] + //PowerShell version passes forward Get-YamlVale's Get-Clipboard call, to get any MinimumOSVersion your clipboard. Because this is only supposed to be run during validation, when you've got the PR with manifest on your clipboard. + if (OS == "") { + try{ + var version = YamlValue("MinimumOSVersion", MinimumOSVersion); + if (Version.Parse(version) >= Version.Parse("10.0.22000.0")){ + OS = "Win11"; + } else{ + OS = "Win10"; + } + } catch { + OS = "Win10"; + } + } + if (VM == 0) { + VM = NextFreeVM(OS);//.Replace("vm",""); + } + if (VM == 0){ + //Write-Host "No available OS VMs"; + GenerateVM(OS); + //break; + } + RevertVM(VM); + //[ValidateSet("Win10","Win11")] + //[ValidateSet("Configure","DevHomeConfig","Pin","Scan")] + int lowerIndex = clipInput.IndexOf("Do not share my personal information") -1;//This is the last visible string at the bottom of the Files page on GitHub. + + string clip = clipInput; + if (clipInput.Contains("Do not share my personal information")) { + clip = clipInput.Substring(0,lowerIndex); + } + if (clip.Contains("PackageIdentifier: ")) { + if (PackageIdentifier == "") { + PackageIdentifier = YamlValue("PackageIdentifier",clip).Replace("\"","").Replace("'",""); + } + } + if (clip.Contains("PackageVersion: ")) { + if (PackageVersion == "") { + PackageVersion = YamlValue("PackageVersion",clip).Replace("\"","").Replace("'",""); + } + } + if (PR == 0) { + PR = PRNumber(clip,true).FirstOrDefault(); + } + string RemoteFolder = "//"+remoteIP+"/ManVal/vm/"+VM.ToString(); + if (installerLine == "") { + installerLine = "--manifest "+RemoteFolder+"/manifest"; + } + string optionsLine = ""; + + string logLine = OS.ToString(); + string nonElevatedShell = ""; + string logExt = "log"; + string VMFolder = MainFolder+"\\vm\\"+VM; + string manifestFolder = VMFolder+"\\manifest"; + string CmdsFileName = VMFolder+"\\cmds.ps1"; + string packageName = ""; + string wingetArgs = ""; + + string archDetect = ""; + string archColor = "yellow"; + string MDLog = ""; + + if (Operation == "Configure") { + //Write-Host "Running Manual Config build "build" on vmVM for ConfigureFile" + wingetArgs = "configure -f "+RemoteFolder+"/manifest/config.yaml --accept-configuration-agreements --disable-interactivity"; + InspectNew = false; + } else { + if (PackageIdentifier == "") { + //Write-Host "Bad PackageIdentifier: "PackageIdentifier"" + //Break; + Clipboard.SetText(PackageIdentifier); + } + //Write-Host "Running Manual Validation build "build" on vmVM for package "PackageIdentifier" version $PackageVersion" + + if (PackageVersion != "") { + logExt = PackageVersion+"."+logExt; + logLine += "version "+PackageVersion+" "; + } + if (Locale != "") { + logExt = Locale+"."+logExt; + optionsLine += " --locale "+Locale+" "; + logLine += "locale "+Locale+" "; + } + if (Scope != "") { + logExt = Scope+"."+logExt; + optionsLine += " --scope "+Scope+" "; + logLine += "scope "+Scope+" "; + } + if (InstallerType != "") { + logExt = InstallerType+"."+logExt; + optionsLine += " --installer-type "+InstallerType+" "; + logLine += "InstallerType $"+InstallerType+" "; + } + string[] Archs = clip.Split(' ') + .Where(n => !n.Contains("arm")) + .Where(n => n.Contains("Architecture: ")).ToArray(); + for (int i = 0; i < Archs.Length; i++) { + Archs[i] = (Archs[i].Split(':'))[1].Trim(); + } + + if (Archs != null) { + if (Arch != null) { + archDetect = "Selected"; + } else { + Arch = Archs[0]; + archDetect = "Detected"; + } + archColor = "red"; + } + if (Arch != "") { + logExt = Arch+"."+logExt; + //Write-Host "archDetect Arch Arch of available architectures: Archs" -f archColor + logLine += Arch+" "; + } + if (ManualDependency != "") { + MDLog = ManualDependency; + //Write-Host " = = = = Installing manual dependency "+ManualDependency+" = = = = " + ManualDependency = "Out-Log 'Installing manual dependency "+MDLog+".';Start-Process 'winget' 'install "+MDLog+" --accept-package-agreements --ignore-local-archive-malware-scan' -wait\n"; + } + // if (notElevated == true || clip.Contains("ElevationRequirement: elevationProhibited")) { + //Write-Host " = = = = Detecting de-elevation requirement = = = = " + // nonElevatedShell = "if ([bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match 'S-1-5-32-544')){& explorer.exe 'C:\\Program Files\\PowerShell\\7\\pwsh.exe';Stop-Process (Get-Process WindowsTerminal).id}"; + //if elevated, run^^ and exit, else run cmds. + // } + packageName = (PackageIdentifier.Split('.'))[1]; + wingetArgs = "install "+optionsLine+" "+installerLine+" --accept-package-agreements --ignore-local-archive-malware-scan"; + } + List cmdsOut = new List(); +/* + + + + + + + + + + + + + +*/ +// - caret double quote = replace with backslash double quote +// - caret dollarsign = 2nd run remove caret + if (Operation == "Configure") { + cmdsOut.Add(""+nonElevatedShell+""); + cmdsOut.Add("$TimeStart = Get-Date;"); + cmdsOut.Add("$ConfigurelLogFolder = \""+SharedFolder+"/logs/Configure/$(Get-Date -UFormat %B)/$(Get-Date -Format dd)\""); + cmdsOut.Add("Function Out-Log ([string]$logData,[string]$logColor='cyan') {"); + cmdsOut.Add("$TimeStamp = (Get-Date -Format T) + ': ';"); + cmdsOut.Add("$logEntry = $TimeStamp + $logData"); + cmdsOut.Add("Write-Host $logEntry -f $logColor;"); + cmdsOut.Add("md $ConfigurelLogFolder -ErrorAction Ignore"); + cmdsOut.Add("$logEntry | Out-File \"$ConfigurelLogFolder/"+PackageIdentifier+"."+logExt+"\" -Append -Encoding unicode"); + cmdsOut.Add("};"); + cmdsOut.Add("Function Out-ErrorData ($errArray,[string]$serviceName,$errorName='errors') {"); + cmdsOut.Add("Out-Log \"Detected $($errArray.count) $serviceName $($errorName): \""); + cmdsOut.Add("$errArray | ForEach-Object {Out-Log $_ 'red'}"); + cmdsOut.Add("};"); + cmdsOut.Add("Get-TrackerVMSetStatus 'Installing'"); + cmdsOut.Add("Out-Log ' = = = = Starting Manual Validation pipeline build "+build+" on VM "+VM+" Configure file "+logLine+" = = = = '"); + cmdsOut.Add("Out-Log 'Pre-testing log cleanup.'"); + cmdsOut.Add("Out-Log 'Clearing PowerShell errors.'"); + cmdsOut.Add("$Error.Clear()"); + cmdsOut.Add("Out-Log 'Clearing Application Log.'"); + cmdsOut.Add("Clear-EventLog -LogName Application -ErrorAction Ignore"); + cmdsOut.Add("Out-Log 'Clearing WinGet Log folder.'"); + cmdsOut.Add("$WinGetLogFolder = 'C:\\Users\\User\\AppData\\Local\\Packages\\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\\LocalState\\DiagOutputDir'"); + cmdsOut.Add("rm $WinGetLogFolder\\*"); + cmdsOut.Add("Out-Log 'Gathering WinGet info.'"); + cmdsOut.Add("$info = winget --info"); + cmdsOut.Add("Out-ErrorData @($info[0],$info[3],$info[4],$info[5]) 'WinGet' 'infos'"); + cmdsOut.Add("Out-Log \"Main Package Configure with args: "+wingetArgs+"\""); + cmdsOut.Add("$mainpackage = (Start-Process 'winget' '"+wingetArgs+"' -wait -PassThru);"); + cmdsOut.Add("Out-Log \"$($mainpackage.processname) finished with exit code: $($mainpackage.ExitCode)\";"); + cmdsOut.Add("If ($mainpackage.ExitCode -ne 0) {"); + cmdsOut.Add("Out-Log 'Install Failed.';"); + cmdsOut.Add("explorer.exe $WinGetLogFolder;"); + cmdsOut.Add("Out-ErrorData ((Get-ChildItem $WinGetLogFolder).fullname | ForEach-Object {Get-Content $_ |Where-Object {$_ -match '[[]FAIL[]]' -OR $_ -match 'failed' -OR $_ -match 'error' -OR $_ -match 'does not match'}}) 'WinGet'"); + cmdsOut.Add("Out-ErrorData '"+MDLog+"' 'Manual' 'Dependency'"); + cmdsOut.Add("Out-ErrorData $Error 'PowerShell'"); + cmdsOut.Add("Out-ErrorData (Get-EventLog Application -EntryType Error -after $TimeStart -ErrorAction Ignore).Message 'Application Log'"); + cmdsOut.Add("Out-Log \" = = = = Failing Manual Validation pipeline build "+build+" on VM "+VM+" for Configure file "+logLine+" in $(((Get-Date) -$TimeStart).TotalSeconds) seconds. = = = = \""); + cmdsOut.Add("Get-TrackerVMSetStatus 'ValidationCompleted'"); + cmdsOut.Add("Break;"); + cmdsOut.Add("}"); + cmdsOut.Add("#Read-Host 'Configure complete, press ENTER to continue...' #Uncomment to examine installer before scanning, for when scanning disrupts the install."); + cmdsOut.Add("Get-TrackerVMSetStatus 'Scanning'"); + cmdsOut.Add("$WinGetLogs = ((Get-ChildItem $WinGetLogFolder).fullname | ForEach-Object {Get-Content $_ |Where-Object {$_ -match '[[]FAIL[]]' -OR $_ -match 'failed' -OR $_ -match 'error' -OR $_ -match 'does not match'}})"); + cmdsOut.Add("$DefenderThreat = (Get-MPThreat).ThreatName"); + cmdsOut.Add("Out-ErrorData $WinGetLogs 'WinGet'"); + cmdsOut.Add("Out-ErrorData $Error 'PowerShell'"); + cmdsOut.Add("Out-ErrorData (Get-EventLog Application -EntryType Error -after $TimeStart -ErrorAction Ignore).Message 'Application Log'"); + cmdsOut.Add("Out-ErrorData $DefenderThreat \"Defender (with signature version $((Get-MpComputerStatus).QuickScanSignatureVersion))\""); + cmdsOut.Add("Out-Log \" = = = = Completing Manual Validation pipeline build "+build+" on VM "+VM+" for Configure file "+logLine+" in $(((Get-Date) -$TimeStart).TotalSeconds) seconds. = = = = \""); + cmdsOut.Add("Get-TrackerVMSetStatus 'ValidationCompleted'"); + + + +} else if (Operation == "Scan") { + + + + cmdsOut.Add(""+nonElevatedShell+""); + cmdsOut.Add("$TimeStart = Get-Date;"); + cmdsOut.Add("$explorerPid = (Get-Process Explorer).id;"); + cmdsOut.Add("$ManValLogFolder = \""+SharedFolder+"/logs/$(Get-Date -UFormat %B)/$(Get-Date -Format dd)\""); + cmdsOut.Add("Function Out-Log ([string]$logData,[string]$logColor='cyan') {"); + cmdsOut.Add("$TimeStamp = (Get-Date -Format T) + ': ';"); + cmdsOut.Add("$logEntry = $TimeStamp + $logData"); + cmdsOut.Add("Write-Host $logEntry -f $logColor;"); + cmdsOut.Add("md $ManValLogFolder -ErrorAction Ignore"); + cmdsOut.Add("$logEntry | Out-File \"$ManValLogFolder/"+PackageIdentifier+"."+logExt+"\" -Append -Encoding unicode"); + cmdsOut.Add("};"); + cmdsOut.Add("Function Out-ErrorData ($errArray,[string]$serviceName,$errorName='errors') {"); + cmdsOut.Add("Out-Log \"Detected $($errArray.count) $serviceName $($errorName): \""); + cmdsOut.Add("$errArray | ForEach-Object {Out-Log $_ 'red'}"); + cmdsOut.Add("};"); + cmdsOut.Add("Get-TrackerVMSetStatus 'Installing'"); + cmdsOut.Add("Out-Log ' = = = = Starting Manual Validation pipeline build "+build+" on VM "+VM+" "+PackageIdentifier+" "+logLine+" = = = = '"); + cmdsOut.Add("Out-Log 'Pre-testing log cleanup.'"); + cmdsOut.Add("Out-Log 'Upgrading installed applications.'"); + cmdsOut.Add("Out-Log (WinGet upgrade --all --include-pinned --disable-interactivity)"); + cmdsOut.Add("Out-Log 'Clearing PowerShell errors.'"); + cmdsOut.Add("$Error.Clear()"); + cmdsOut.Add("Out-Log 'Clearing Application Log.'"); + cmdsOut.Add("Clear-EventLog -LogName Application -ErrorAction Ignore"); + cmdsOut.Add("Out-Log 'Clearing WinGet Log folder.'"); + cmdsOut.Add("$WinGetLogFolder = 'C:\\Users\\User\\AppData\\Local\\Packages\\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\\LocalState\\DiagOutputDir'"); + cmdsOut.Add("rm $WinGetLogFolder\\*"); + cmdsOut.Add("Out-Log 'Updating Defender signature.'"); + cmdsOut.Add("Update-MpSignature"); + cmdsOut.Add("Out-Log 'Gathering WinGet info.'"); + cmdsOut.Add("$info = winget --info"); + cmdsOut.Add("Out-ErrorData @($info[0],$info[3],$info[4],$info[5]) 'WinGet' 'infos'"); + cmdsOut.Add("$InstallStart = Get-Date;"); + cmdsOut.Add(""+ManualDependency+""); + cmdsOut.Add("Out-Log \"Main Package Install with args: "+wingetArgs+"\""); + cmdsOut.Add("$mainpackage = (Start-Process 'winget' '"+wingetArgs+"' -wait -PassThru);"); + cmdsOut.Add("Out-Log \"$($mainpackage.processname) finished with exit code: $($mainpackage.ExitCode)\";"); + cmdsOut.Add("$SleepSeconds = 15 #Sleep a few seconds for processes to complete."); + cmdsOut.Add("if (($InstallStart).AddSeconds($SleepSeconds) -gt (Get-Date)) {"); + cmdsOut.Add("sleep (($InstallStart).AddSeconds($SleepSeconds)-(Get-Date)).totalseconds"); + cmdsOut.Add("} "); + cmdsOut.Add("$InstallEnd = Get-Date;"); + cmdsOut.Add("If ($mainpackage.ExitCode -ne 0) {"); + cmdsOut.Add("Out-Log 'Install Failed.';"); + cmdsOut.Add("explorer.exe $WinGetLogFolder;"); + cmdsOut.Add("$WinGetLogs = ((Get-ChildItem $WinGetLogFolder).fullname | ForEach-Object {"); + cmdsOut.Add("Get-Content $_ | Where-Object {"); + cmdsOut.Add("$_ -match '[[]FAIL[]]' -OR "); + cmdsOut.Add("$_ -match 'failed' -OR "); + cmdsOut.Add("$_ -match 'error' -OR "); + cmdsOut.Add("$_ -match 'does not match'"); + cmdsOut.Add("}"); + cmdsOut.Add("})"); + cmdsOut.Add("$DefenderThreat = (Get-MPThreat).ThreatName"); + cmdsOut.Add("Out-ErrorData $WinGetLogs 'WinGet'"); + cmdsOut.Add("Out-ErrorData '"+MDLog+"' 'Manual' 'Dependency'"); + cmdsOut.Add("Out-ErrorData $Error 'PowerShell'"); + cmdsOut.Add("Out-ErrorData (Get-EventLog Application -EntryType Error -after $TimeStart -ErrorAction Ignore).Message 'Application Log'"); + cmdsOut.Add("Out-ErrorData $DefenderThreat \"Defender (with signature version $((Get-MpComputerStatus).QuickScanSignatureVersion))\""); + cmdsOut.Add("Out-Log \" = = = = Failing Manual Validation pipeline build "+build+" on VM "+VM+" for "+PackageIdentifier+" "+logLine+" in $(((Get-Date) -$TimeStart).TotalSeconds) seconds. = = = = \""); + cmdsOut.Add("if (($WinGetLogs -match '\\[FAIL\\] Installer failed security check.') -OR "); + cmdsOut.Add("($WinGetLogs -match 'Package hash verification failed') -OR "); + cmdsOut.Add("($WinGetLogs -match 'Operation did not complete successfully because the file contains a virus or potentially unwanted software')){"); + cmdsOut.Add("Send-SharedError -clip $WinGetLogs"); + cmdsOut.Add("} elseif ($DefenderThreat) {"); + cmdsOut.Add("Send-SharedError -clip $DefenderThreat"); + cmdsOut.Add("} else {"); + cmdsOut.Add("Get-TrackerVMSetStatus 'ValidationCompleted'"); + cmdsOut.Add("}"); + cmdsOut.Add("Break;"); + cmdsOut.Add("}"); + cmdsOut.Add("#Read-Host 'Install complete, press ENTER to continue...' #Uncomment to examine installer before scanning, for when scanning disrupts the install."); + cmdsOut.Add("Get-TrackerVMSetStatus 'Scanning'"); + cmdsOut.Add("Out-Log 'Install complete, starting file change scan.'"); + cmdsOut.Add("$files = ''"); + cmdsOut.Add("if (Test-Path "+RemoteFolder+"\\files.txt) {#If we have a list of files to run - a relic from before automatic file gathering. "); + cmdsOut.Add("$files = Get-Content "+RemoteFolder+"\\files.txt"); + cmdsOut.Add("} else {"); + cmdsOut.Add("$files1 = ("); + cmdsOut.Add("Get-ChildItem c:\\ -File -Recurse -ErrorAction Ignore -Force | "); + cmdsOut.Add("Where-Object {$_.CreationTime -gt $InstallStart} | "); + cmdsOut.Add("Where-Object {$_.CreationTime -lt $InstallEnd}"); + cmdsOut.Add(").FullName"); + cmdsOut.Add("$files2 = ("); + cmdsOut.Add("Get-ChildItem c:\\ -File -Recurse -ErrorAction Ignore -Force | "); + cmdsOut.Add("Where-Object {$_.LastAccessTIme -gt $InstallStart} | "); + cmdsOut.Add("Where-Object {$_.LastAccessTIme -lt $InstallEnd}"); + cmdsOut.Add(").FullName"); + cmdsOut.Add("$files3 = ("); + cmdsOut.Add("Get-ChildItem c:\\ -File -Recurse -ErrorAction Ignore -Force | "); + cmdsOut.Add("Where-Object {$_.LastWriteTIme -gt $InstallStart} | "); + cmdsOut.Add("Where-Object {$_.LastWriteTIme -lt $InstallEnd}"); + cmdsOut.Add(").FullName"); + cmdsOut.Add("$files = $files1 + $files2 + $files3 | Select-Object -Unique"); + cmdsOut.Add("}"); + cmdsOut.Add("Out-Log \"Reading $($files.count) file changes in the last $(((Get-Date) -$TimeStart).TotalSeconds) seconds. Starting bulk file execution:\""); + cmdsOut.Add("$files = $files | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'AppRepository'} |"); + cmdsOut.Add("Where-Object {$_ -notmatch 'assembly'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'CbsTemp'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'CryptnetUrlCache'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'DesktopAppInstaller'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'dotnet'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'dump64a'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'EdgeCore'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'EdgeUpdate'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'EdgeWebView'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'ErrorDialog = ErrorDlg'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'Microsoft.Windows.Search'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'Microsoft\\\\Edge\\\\Application'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'msedge'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'NativeImages'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'Prefetch'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'Provisioning'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'redis'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'servicing'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'System32'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'SysWOW64'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'unins'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'waasmedic'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'Windows Defender'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'Windows Error Reporting'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'WindowsUpdate'} | "); + cmdsOut.Add("Where-Object {$_ -notmatch 'WinSxS'}"); + cmdsOut.Add("$files | Out-File 'c:\\Users\\user\\Desktop\\ChangedFiles.txt'"); + cmdsOut.Add("$files | Select-String '[.]exe$' | ForEach-Object {if ($_ -match '$packageName') {Out-Log $_ 'green'} else{Out-Log $_ 'cyan'}; try{Start-Process $_}catch{}};"); + cmdsOut.Add("$files | Select-String '[.]msi$' | ForEach-Object {if ($_ -match '$packageName') {Out-Log $_ 'green'} else{Out-Log $_ 'cyan'}; try{Start-Process $_}catch{}};"); + cmdsOut.Add("$files | Select-String '[.]lnk$' | ForEach-Object {if ($_ -match '$packageName') {Out-Log $_ 'green'} else{Out-Log $_ 'cyan'}; try{Start-Process $_}catch{}};"); + cmdsOut.Add("Out-Log \" = = = = End file list. Starting Defender scan.\""); + cmdsOut.Add("Start-MpScan;"); + cmdsOut.Add("Out-Log \"Defender scan complete, closing windows...\""); + cmdsOut.Add("Get-Process msedge | Stop-Process"); + cmdsOut.Add("Get-Process mip | Stop-Process"); + cmdsOut.Add("Get-Process powershell | where {$_.id -ne $PID} | Stop-Process"); + cmdsOut.Add("Get-Process explorer | where {$_.id -ne $explorerPid} | Stop-Process"); + cmdsOut.Add("Get-process | Where-Object { $_.mainwindowtitle -ne '' -and $_.processname -notmatch '$packageName' -and $_.processname -ne 'powershell' -and $_.processname -ne 'WindowsTerminal' -and $_.processname -ne 'csrss' -and $_.processname -ne 'dwm'}| Stop-Process"); + cmdsOut.Add("#Get-Process | Where-Object {$_.id -notmatch $PID -and $_.id -notmatch $explorerPid -and $_.processname -notmatch $packageName -and $_.processname -ne 'csrss' -and $_.processname -ne 'dwm'} | Stop-Process"); + cmdsOut.Add("$WinGetLogs = ((Get-ChildItem $WinGetLogFolder).fullname | ForEach-Object {Get-Content $_ |Where-Object {$_ -match '[[]FAIL[]]' -OR $_ -match 'failed' -OR $_ -match 'error' -OR $_ -match 'does not match'}})"); + cmdsOut.Add("$DefenderThreat = (Get-MPThreat).ThreatName"); + cmdsOut.Add("Out-ErrorData $WinGetLogs 'WinGet'"); + cmdsOut.Add("Out-ErrorData '"+MDLog+"' 'Manual' 'Dependency'"); + cmdsOut.Add("Out-ErrorData $Error 'PowerShell'"); + cmdsOut.Add("Out-ErrorData (Get-EventLog Application -EntryType Error -after $TimeStart -ErrorAction Ignore).Message 'Application Log'"); + cmdsOut.Add("Out-ErrorData $DefenderThreat \"Defender (with signature version $((Get-MpComputerStatus).QuickScanSignatureVersion))\""); + cmdsOut.Add("if (($WinGetLogs -match '\\[FAIL\\] Installer failed security check.') -OR "); + cmdsOut.Add("($WinGetLogs -match 'Package hash verification failed') -OR "); + cmdsOut.Add("($WinGetLogs -match 'Operation did not complete successfully because the file contains a virus or potentially unwanted software')){"); + cmdsOut.Add("Send-SharedError -clip $WinGetLogs"); + cmdsOut.Add("Out-Log \" = = = = Failing Manual Validation pipeline build "+build+" on VM "+VM+" for "+PackageIdentifier+" "+logLine+" in $(((Get-Date) -$TimeStart).TotalSeconds) seconds. = = = = \""); + cmdsOut.Add("Get-TrackerVMSetStatus 'SendStatus'"); + cmdsOut.Add("} elseif ($DefenderThreat) {"); + cmdsOut.Add("Send-SharedError -clip $DefenderThreat"); + cmdsOut.Add("Out-Log \" = = = = Failing Manual Validation pipeline build "+build+" on VM "+VM+" for "+PackageIdentifier+" "+logLine+" in $(((Get-Date) -$TimeStart).TotalSeconds) seconds. = = = = \""); + cmdsOut.Add("Get-TrackerVMSetStatus 'SendStatus'"); + cmdsOut.Add("} else {"); + cmdsOut.Add("Start-Process PowerShell"); + cmdsOut.Add("Out-Log \" = = = = Completing Manual Validation pipeline build "+build+" on VM "+VM+" for "+PackageIdentifier+" "+logLine+" in $(((Get-Date) -$TimeStart).TotalSeconds) seconds. = = = = \""); + cmdsOut.Add("Get-TrackerVMSetStatus 'ValidationCompleted'"); + cmdsOut.Add("}"); + + + }else { + // Write-Host "Error: Bad Function" + } +/* + + + + + + + + + + + + +*/ + OutFile(CmdsFileName,string.Join("\n",cmdsOut)); + + if (NoFiles == false) { + //Extract multi-part manifest from clipboard and write to disk + //Write-Host "Removing previous manifest and adding current..." + string FilePath = ""; + RemoveItem(manifestFolder,true); + if (Operation == "Configure") { + FilePath = manifestFolder+"\\config.yaml"; + OutFile(FilePath,clipInput); + } else { + List Files = new List(); + Files.Add("Package.installer.yaml"); + //Gather filenames from PR manifest in clipboard - most PRs, not all. + string[] FileNames = clip.Replace("\n"," ").Replace("\r"," ").Replace("/"," ").Split(' ').Where(n => n.Contains(".yaml")).ToArray(); + //Get the last file name and chop the .yaml from it, to get the ToReplace string. + string replace = FileNames[FileNames.Length -1].Replace(".yaml",""); + //Update each filename so it comes out with "Package". + for (int i = 0;i < FileNames.Length; i++){ + string string_add = FileNames[i].Replace(replace,"Package"); + Files.Add(string_add); + } + //Split out manifest files by the Git double atpersand. + string[] split_clip = clip.Replace("@@","∞").Split('∞'); + //foreach files + for (int i=0;i < Files.Count;i++) { + string File = Files[i]; + string this_split = split_clip[i*2]; + this_split = this_split.Substring(0,this_split.IndexOf("ManifestVersion") + 22); + string[] inputObj = this_split.Split('\n'); + + //Add the manifest folder path to the file path. + FilePath = manifestFolder+"\\"+File; + + //Write-Host "Writing $($inputObj.Length) lines to $FilePath" + OutFile(FilePath,inputObj); + + //Bugfix to catch package identifier appended to last line of last file. + // string fileContents = GetContent(FilePath); + string[] fileContents = GetContent(FilePath).Split('\n'); + int fcLen = fileContents.Length -1; + if (fileContents[fcLen].Contains(PackageIdentifier)) { + fileContents[fcLen] = (fileContents[fcLen].Replace("PackageIdentifier","∞").Split('∞'))[0]; + } + fileContents = fileContents.Where(n => !n.Contains("additions & 0 deletions")).ToArray(); + fileContents = fileContents.Where(n => !n.Contains("manifests/")).ToArray(); + fileContents = fileContents.Where(n => !n.Contains("Viewed")).ToArray(); + fileContents = fileContents.Where(n => !n.Contains("marked this conversation as resolved")).ToArray(); + + string out_file = string.Join("\n",fileContents); + OutFile(FilePath,out_file); + } + //Get the files just written and extract how many. + string[] entries = Directory.GetFileSystemEntries(manifestFolder, "*", SearchOption.AllDirectories); + int filecount = entries.Length; + // string filedir = "ok"; + // string filecolor = "green"; + // if (filecount < 3) { filedir = "too low"; filecolor = "red";} + // if (filecount > 3) { filedir = "high"; filecolor = "yellow";} + // if (filecount > 10) { filedir = "too high"; filecolor = "red";} + //Write-Host -f $filecolor "File count $filecount is $filedir" + // if (filecount < 3) { break;} + + }//end if Configure + }//end if NoFiles + + if (InspectNew == true) { + //Write-Host "Searching Winget for PackageIdentifier" + //Write-Host PackageResult + string PackageResult = FindWinGetVersion(PackageIdentifier); + if (PackageResult == null) {//"No package found matching input criteria." + OpenAllURLs(clip); + System.Diagnostics.Process.Start("https://www.bing.com/search?q="+PackageIdentifier); + string a = PackageIdentifier.Split('.')[0]; + string b = PackageIdentifier.Split('.')[1]; + if (a != "") { + //Write-Host "Searching Winget for a" + // string result_a = FindWinGetVersion(a); + //Need to refactor these - they're meant to dump into console. + } + if (b != "") { + //Write-Host "Searching Winget for b" + // string result_b = FindWinGetVersion(b); + } + }//end if PackageResult + }//end if InspectNew + //Write-Host "File operations complete, starting VM operations." + Thread.Sleep(1000); + SetStatus(VM, "Prevalidation", PackageIdentifier,PR); + SetVMState("vm"+VM, 2); + + LaunchWindow(VM); +}//end manifest + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Manifests Etc --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// +//Section needs refactor badly + public void SingleFileAutomation(int PR) {//Put installer.yaml on your clipboard and run this, and it gets the other files from the latest manifest, then start validation. + string clip = Clipboard.GetText(); + string PackageIdentifier = YamlValue("PackageIdentifier",clip); + string version = YamlValue("PackageVersion",clip).Replace("'","").Replace("\"",""); + List listing = ManifestListing(PackageIdentifier); + int VM = ManifestFile(PR); + + for (int file = 0; file < listing.Count;file++) { + clip = FileFromGitHub(PackageIdentifier,version,listing[file]); + ManifestFile(PR, "", "", "", VM,clip); + } + } + + public void ManifestAutomation(int VM = 0, int PR =0, string Arch = "", string OS = "", string Scope = ""){//Put installler.yaml on your clipboard and run this, then put locale.yaml on your clipboard and press enter, then put the version (.yaml) on your clipboard and press enter, and it will start validation. + if (VM == 0){ + VM = NextFreeVM();//.Replace("vm",""); + } + //Read-Host "Copy Installer file to clipboard, then press Enter to continue." + string clip = Clipboard.GetText(); + ManifestFile(0,"","","",VM,clip); + + //Read-Host "Copy defaultLocale file to clipboard, then press Enter to continue." + clip = Clipboard.GetText(); + ManifestFile(0,"","","",VM,clip); + + //Read-Host "Copy version file to clipboard, then press Enter to continue." + clip = Clipboard.GetText(); + if (Arch != "") { + ManifestFile(0,Arch,"","",VM,clip); + } else if (OS != "") { + ManifestFile(0,"",OS,"",VM,clip); + } else if (Scope != "") { + ManifestFile(0,"","",Scope,VM,clip); + } else { + ManifestFile(PR,"","","",VM,clip); + } + } + + public int ManifestFile(int PR = 0, string Arch = "", string OS = "", string Scope = "", int VM = 0, string clip = ""){//Gets next VM, pulls a flie from the clipboard and puts into the VM's manifest folder, then if it's the Version (.yaml) file, start the VM for validation. + if (VM == 0){ + VM = NextFreeVM();//.Replace("vm",""); + } + if (clip == ""){ + clip = Clipboard.GetText(); + } + clip = SecondMatch(clip); + string FileName = "Package"; + string PackageIdentifier = YamlValue("PackageIdentifier",clip).Replace("\"","").Replace("'",""); + string manifestFolder = MainFolder+"\\vm\\"+VM+"\\manifest"; + clip = string.Join("\n",clip.Split('\n').Where(n => !n.Contains("marked this conversation as resolved."))); + + string string_YamlValue = YamlValue("ManifestType",clip); + if (string_YamlValue == "defaultLocale") { + string Locale = YamlValue("PackageLocale",clip); + FileName = FileName+".locale."+Locale; + } else if (string_YamlValue == "Locale") { + string Locale = YamlValue("PackageLocale",clip); + FileName = FileName+".locale."+Locale; + } else if (string_YamlValue == "installer") { + RemoveItem(manifestFolder,true); + FileName = FileName+".installer"; + } else if (string_YamlValue == "version") { + if (Arch != "") { + ValidateManifest(VM, PackageIdentifier, "", PR, Arch,"", "","","",false,false,"", "", true); + } else if (OS != "") { + ValidateManifest(VM, PackageIdentifier, "", PR, "","", "",OS,"",false,false,"", "", true); + } else if (Scope != "") { + ValidateManifest(VM, PackageIdentifier, "", PR, "",Scope, "","","",false,false,"", "", true); + } else { + ValidateManifest(VM, PackageIdentifier, "", PR, "","", "","","",false,false,"", "", true); + } + } + string FilePath = manifestFolder+"\\"+FileName+".yaml"; + //Write-Host "Writing (clip.Length) lines to FilePath" + clip = clip.Replace("0New version: ","0").Replace("0Add version: ","0").Replace("0Add ","0").Replace("0New ","0"); + OutFile(FilePath,clip); + return VM; + } + + public List ManifestListing(string PackageIdentifier){ + List string_out = new List(); + try{ + string FirstLetter = PackageIdentifier.ToLower()[0].ToString(); + string Path = PackageIdentifier.Replace(".","/"); + string Version = FindWinGetVersion(PackageIdentifier); + string Uri = GitHubApiBaseUrl+"/contents/manifests/"+FirstLetter+"/"+Path+"/"+Version+"/"; + dynamic FromGH = FromJson(InvokeGitHubRequest(Uri)); + + int n = 0; + foreach (dynamic line in FromGH) { + n++; + string_out.Add(line["name"]); + } + } catch { + string_out.Add("Error"); + } + return string_out; + } + + public bool ListingDiff(string string_PRManifest){ + string PackageIdentifier = YamlValue("PackageIdentifier", string_PRManifest.Replace("\"","")); + + //Get the lines from the PR manifest containing the filenames. + string[] array_PRManifest = string_PRManifest.Split('\n') + .Where(n => n.Contains(".yaml")) + .Where(n => n.Contains(PackageIdentifier)).ToArray(); + //Go through these and snip the PackageIdentifier, split on slashes, and get the last one. + for (int i = 0; i < array_PRManifest.Length; i++) { + string[] swap_array = array_PRManifest[i].Replace(PackageIdentifier+".", "").Split('/'); + array_PRManifest[i] = array_PRManifest[i].Replace(PackageIdentifier+".", "").Split('/')[swap_array.Length - 1]; + } + + bool difference = false; + if (array_PRManifest.Length > 2){//If there are more than 2 files, so a full multi-part manifest and not just updating ReleaseNotes or ReleaseDate, etc. The other checks for this logic (not deletion PR,etc) are in the main Approval Watch method, so maybe this should join them. + List CurrentManifest = ManifestListing(PackageIdentifier); + // string CurrentManifest = string.Join("\n",ManifestListing(PackageIdentifier)); + outBox_msg.AppendText(Environment.NewLine + "CurrentManifest: " + CurrentManifest); + //Gather the lines from the newest manifest in repo. Counterpart to the above section. + // if (CurrentManifest == "Error") { + //If CurrentManifest didn't get any results, (no newest manifest = New package) compare that error with the file list in the PR. + // difference = diff CurrentManifest array_PRManifest.Length; + //Need to rebuild in absence of Compare-Object. + // } else { + //But if CurrentManifest did return something, return that. + if (array_PRManifest.Length < CurrentManifest.Count){ + difference = true; + } + } + return difference; + } + + public string OSFromVersion(string version) { + string string_out = ""; + try{ + version = YamlValue("MinimumOSVersion", version); + if (Version.Parse(version) >= Version.Parse("10.0.22000.0")){ + string_out = "Win11"; + } else{ + string_out = "Win10"; + } + } catch { + string_out = "Win10"; + } + return string_out; + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- VM Image Mgmt --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void ImageVMStart(string OS = "Win10"){ + //[ValidateSet("Win10","Win11")] + int VM = 0; + //RestoreVMSnapshot(VMName); + //Thread.Sleep(3); + //SetVMState(VMName,2); + + RestoreVMSnapshot(OS);//,OS + Thread.Sleep(3); + SetVMState(OS, 2);// ; + LaunchWindow(VM, OS);//,OS + } + + public void ImageVMStop(string OS = "Win10"){ + //[ValidateSet("Win10","Win11")] + int VM = 0; + string OriginalLoc = ""; + if (OS == "Win10") { + OriginalLoc = Win10Folder; + } else if (OS == "Win11") { + OriginalLoc = Win11Folder; + } + //string ImageLoc = "imagesFolder\\OS-image\\"; + int version = GetVMVersion(OS) + 1; + //Write-Host "Writing OS version version" + SetVMVersion(version,OS); + var VMWindows = Process.GetProcessesByName("vmconnect"); + foreach (Process VMWindow in VMWindows){ + if (VMWindow.MainWindowTitle.Contains(OS)) { + VMWindow.CloseMainWindow(); + } + } + RemoveVMSnapshot(OS); + CheckpointVM(OS); + StopVM(VM,OS); + //Write-Host "Letting VM cool..." + Thread.Sleep(30); + Process robocopy = new Process(); + robocopy.StartInfo.Arguments = string.Format("/C Robocopy /S {0} {1}", "C:\\source", "C:\\destination"); + robocopy.StartInfo.FileName = "CMD.EXE"; + robocopy.StartInfo.CreateNoWindow = true; + robocopy.StartInfo.UseShellExecute = false; + robocopy.Start(); + robocopy.WaitForExit(); + } + + public void ImageVMMove(string OS = "Win10"){ + string CurrentVMName = ""; + string timestamp = DateTime.Now.ToString("MMddyy"); + string newLoc = imagesFolder+"\\"+OS+"-Created-"+timestamp+"-original"; + if (OS == "Win10") { + CurrentVMName = "Windows 10 MSIX packaging environment"; + } else if (OS == "Win11") { + CurrentVMName = "Windows 11 dev environment"; + } + //ManagementObject VM = GetVM(CurrentVMName); + MoveVMStorage(CurrentVMName,newLoc); + RenameVM(CurrentVMName,OS); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- VM Pipeline Mgmt --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void GenerateVM(string OS = "Win10"){ + + string vmdata = GetContent(vmCounter); + int vm = Int32.Parse(vmdata.Replace("\n","")); + int version = GetVMVersion(OS); + string destinationPath = imagesFolder+"\\" + vm + "\\"; + string VMFolder = MainFolder + "\\vm\\" + vm; + string newVmName = "vm" + vm; + //string startTime = (Get-Date) + //Write-Host "Creating VM $newVmName version $version OS OS" + OutFile(vmCounter,(vm + 1).ToString()); + OutFile(StatusFile,"\"" + vm + "\",\"Generating\",\"" + version + "\",\"" + OS + "\",\"\",\"1\",\"0\"",true); + RemoveItem(destinationPath,true); + RemoveItem(VMFolder,true); + string path = imagesFolder+"\\"+OS+"-image\\Virtual Machines\\"; + string VMImageFolder = Directory.GetFileSystemEntries(path, "*.vmcx", SearchOption.AllDirectories)[0]; + + //Write-Host "Takes about 120 seconds..." + ImportVM(VMImageFolder, destinationPath); + outBox_msg.AppendText(Environment.NewLine + "newVmName "+ newVmName); + RenameVM(vm.ToString(),newVmName); //(Get-VM | Where-Object {($_.CheckpointFileLocation)+"\\" == $destinationPath}) newName $ + outBox_msg.AppendText(Environment.NewLine + "newVmName "+ newVmName); + SetVMState(newVmName, 2);// $ + //Remove-VMCheckpoint -VMName $newVmName -Name "Backup" + RevertVM(vm); + LaunchWindow(vm); + //Write-Host "Took $(((Get-Date)-$startTime).TotalSeconds) seconds..." + } + + public void DisgenerateVM(int vm){ + string destinationPath = "$imagesFolder\\"+vm+"\\"; + string VMFolder = MainFolder+"\\vm\\"+vm; + string VMName = "vm"+vm; + + SetStatus(vm,"Disgenerate"); + var processes = Process.GetProcessesByName("vmconnect"); + foreach (Process process in processes){ + if (process.MainWindowTitle.Contains(VMName)) { + process.CloseMainWindow(); + } + } + StopVM(vm); + RemoveVM(VMName); + + // string_out = GetStatus(); + // string_out = string_out .Where(n => !n.vm.Contains(VM)); + // Write-Status string_out; + + // int delay = 15 + // 0..$delay | foreach-Object { + // $pct = $_ / $delay * 100 + // Write-Progress -Activity "Remove VM" -Status "$_ of $delay" -PercentComplete $pct + // Thread.Sleep(GitHubRateLimitDelay) + // } + RemoveItem(destinationPath); + RemoveItem(VMFolder); + } + + public void LaunchWindow(int VM = 0, string VMName = ""){ + if (VMName == "") { + VMName = "vm"+VM; + } + var processes = Process.GetProcessesByName("vmconnect"); + foreach (Process process in processes){ + if (process.MainWindowTitle.Contains(VMName)) { + process.CloseMainWindow(); + } + } + var newProcess = new System.Diagnostics.Process(); + newProcess.StartInfo.FileName = "C:\\Windows\\System32\\vmconnect.exe"; + newProcess.StartInfo.Arguments = "localhost " + VMName; + newProcess.Start(); + } + + public void RevertVM(int VM = 0, string VMName = ""){ + if (VMName == "") { + VMName = "vm"+VM; + } + SetStatus(VM,"Restoring") ; + RestoreVMSnapshot(VMName); + } + + public void CompleteVM(int vm){ + string VMFolder = MainFolder+"\\vm\\"+vm; + string filesFileName = VMFolder+"\\files.txt"; + string VMName = "vm"+vm; + SetStatus(vm,"Completing", " ", 1); + var processes = Process.GetProcessesByName("vmconnect"); + foreach (Process process in processes){ + if (process.MainWindowTitle.Contains(VMName)) { + process.CloseMainWindow(); + } + } + try { + SetVMState("vm"+vm, 3); + } catch { + outBox_msg.AppendText(Environment.NewLine + "SetVMState failed for VM: " + vm); + } + RemoveItem(filesFileName); + SetStatus(vm,"Ready","",0,"Ready"); + } + + public void StopVM(int vm,string VMName = ""){ + if (VMName == "") { + VMName = "vm"+vm; + } else { + VMName = vm; + } + F(VMName, 3); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- VM Status --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void SetStatus(int VM, string Status = "", string Package = "",int PR = 0,string Mode = ""){ +//[ValidateSet("AddVCRedist","Approved","CheckpointComplete","Checkpointing","CheckpointReady","Completing","Complete","Disgenerate","Generating","Installing","Prescan","Prevalidation","Ready","Rebooting","Regenerate","Restoring","Revert","Scanning","SendStatus","Setup","SetupComplete","Starting","Updating","ValidationCompleted")] + dynamic Records = FromCsv(GetContent(StatusFile)); + for (int r = 1; r < Records.Length -1; r++){ + var row = Records[r]; + if (Int32.Parse(row["vm"]) == VM) { + if (Status != "") { + row["status"] = Status; + } + if (Package != "") { + row["Package"] = Package; + } + if (Mode != "") { + row["Mode"] = Mode; + } + if (PR != 0) { + row["PR"] = PR; + }//end if PR + }//end if row vm + }//end for r + OutFile(StatusFile, ToCsv(Records)); + }//end function + + //GetStatus = FromCsv(GetContent(StatusFile)); + //WriteStatus = OutFile(StatusFile,string_out); + + public void ResetStatus() { + IEnumerable> VMs = FromCsv(GetContent(StatusFile)) + .Where(n => n["Status"] != "Ready") + .Where(n => (int)n["RAM"] == 0); + + foreach (Dictionary VM in VMs) { + SetStatus(VM["VM"],"Complete"); + } + VMs = FromCsv(GetContent(StatusFile)).Where(n => n["Status"] != "Ready").Where(n => (string)n["Package"] == ""); + foreach (Dictionary VM in VMs) { + SetStatus(VM["VM"],"Complete"); + } + var processes = Process.GetProcessesByName("vmconnect"); + if (processes.Length == 0){ + StopProcess("vmwp"); + } + } + +/*public RebuildStatus { + Status = Get-VM.Where(n => n.name -notmatch "vm0"}| + Select-Object @{n="vm";e={$_.name}}, + @{n="status";e={"Ready"}}, + @{n="version";e={(GetVMVersion -OS "Win10")}}, + @{n="OS";e={"Win10"}}, + @{n="Package";e={""}}, + @{n="PR";e={"1"}}, + @{n="RAM";e={"0"}} + OutFile(StatusFile,Status); +} +*/ + + public int GetVMPowerState (int VM){ + string VMName = "vm"+VM; + int Status =0; + foreach (var property in GetVM(VMName).Properties) { + if (property.Name == "EnabledState"){ + //HwThreadsPerCoreRealized + //OnTimeInMilliseconds + //ProcessID + Status = Convert.ToInt32(property.Value); + } + } + return Status; + } + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- VM Versioning --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public int GetVMVersion (string OS = "Win10") { + //[ValidateSet("Win10","Win11")][string]OS = "Win10", + int VMVersion; + string VMData = GetContent(VMversion); + List Line = VMData.Split('\n').ToList(); + string Line2 = Line.Where(n => n.Contains(OS)).FirstOrDefault(); + Line2 = Line2.Replace("\"",""); + VMVersion = Int32.Parse(Line2.Split(',','"')[1]); + return VMVersion; + } + + public void SetVMVersion(int Version, string OS = "Win10") { + string VMData = GetContent(VMversion); + List Line = VMData.Split('\n').ToList(); + string Line2 = Line.Where(n => n.Contains(OS)).FirstOrDefault(); + Line2 = Line2.Replace("\"",""); + int CurrentVersion = Int32.Parse(Line2.Split(',','"')[1]); + VMData = VMData.Replace(OS+"\",\""+CurrentVersion,OS+"\",\""+Version); + OutFile(VMversion,VMData); + } + + public void RotateVMs(string OS = "Win10") { + Random rnd = new Random(); + Dictionary[] GetStatus = FromCsv(GetContent(StatusFile)); + var VMs = GetStatus.Where(n => (int)n["version"] < GetVMVersion(OS)) + .Where(n => n["OS"] == OS) + .Where(n => n["status"] != "Ready"); + if (VMs != null){ + int counter = 0; + int rand_VM = rnd.Next(VMs.Count()); + foreach (Dictionary FullVM in VMs) { + counter++; + if (rand_VM == counter) { + SetStatus((int)FullVM["vm"],"Regenerate"); + } + }//end foreach FullVM + }//end if VMs + }//end function + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- VM Orchestration --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void VMCycle(){ + Dictionary[] VMs = FromCsv(GetContent(StatusFile)); + foreach (Dictionary VM in VMs) { + string Status = (string)VM["status"]; + if (Status == "AddVCRedist") { + AddToValidationFile((int)VM["vm"]); + } else if (Status == "Approved") { + AddWaiver((int)VM["PR"]); + SetStatus((int)VM["vm"], "Complete"); + } else if (Status == "CheckpointReady") { + RedoCheckpoint((int)VM["vm"]); + } else if (Status == "Complete") { + // if ((VMs .Where(n => n.vm ==((int)VM["vm"])} ).version < (GetVMVersion -OS (int)VM["os"])) { + // SetStatus((int)VM["vm"],"Regenerate"); + // } else { + CompleteVM((int)VM["vm"]); + // } + } else if (Status == "Disgenerate") { + DisgenerateVM((int)VM["vm"]); + } else if (Status == "Revert") { + RevertVM((int)VM["vm"]); + } else if (Status == "Regenerate") { + DisgenerateVM((int)VM["vm"]); + GenerateVM((string)VM["os"]); + } else if (Status == "SendStatus") { + string SharedError = GetContent(SharedErrorFile); + SharedError = SharedError.Replace("Faulting","\n> Faulting"); + SharedError = SharedError.Replace("2024","\n> 2024"); + SharedError = SharedError.Replace(" (caller: 00007FFA008A5769)",""); + SharedError = SharedError.Replace(" (caller: 00007FFA008AA79F)",""); + SharedError = SharedError.Replace("Exception(1) tid(f1c) 80D02002",""); + SharedError = SharedError.Replace("Exception(2) tid(f1c) 80072EE2 ",""); + SharedError = SharedError.Replace("Exception(4) tid(f1c) 80072EE2 ",""); + SharedError = SharedError.Replace("tid(f1c)",""); + SharedError = SharedError.Replace("C:\\\\__w\\\\1\\\\s\\\\external\\\\pkg\\\\src\\\\AppInstallerCommonCore\\\\Downloader.cpp(185)\\\\WindowsPackageManager.dll!00007FFA008A37C9:",""); + ReplyToPR((int)VM["PR"],"ManValEnd",SharedError); + SetStatus((int)VM["vm"],"Complete"); + if ((SharedError.Contains("\\[FAIL\\] Installer failed security check.")) || (SharedError.Contains("Detected 1 Defender"))) { + //Get-GitHubPreset -Preset DefenderFail -PR VM.PR + } + }; //end switch + } + } + + public string GetMode() { + return GetContent(TrackerModeFile); + } + + public void SetMode(string Status = "Validating") { + //[ValidateSet("Approving","Idle","IEDS","Validating")] + OutFile(TrackerModeFile,Status); + } + + //ConnectedVM = var processes = Process.GetProcessesByName("vmconnect"); + + public int NextFreeVM(string OS = "Win10",string Status = "Ready") { + //[ValidateSet("Win10","Win11")] + Random rnd = new Random(); + dynamic VMs = FromCsv(GetContent(StatusFile)); + List VMList = new List(); + for (int r = 1; r < VMs.Length -1; r++){ + dynamic FullVM = VMs[r]; + if (FullVM["OS"] == OS && FullVM["status"] == Status ) { + //.Where(n => (int)n["version"] < GetVMVersion(OS)) + VMList.Add(Convert.ToInt32(FullVM["vm"])); + } + } + int rand_VM = rnd.Next(VMList.Count -1); + + return VMList[rand_VM]; + //Write-Host "No available $OS VMs" + }//end function + + public void RedoCheckpoint(int vm,string VMName = ""){ + if (VMName == "") { + VMName = "vm"+vm; + } + SetStatus(vm,"Checkpointing"); + RemoveVMSnapshot(VMName); + CheckpointVM(VMName); + SetStatus(vm,"Complete"); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- File Management --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public string SecondMatch(string clip, int depth = 1) { + string[] clipArray = clip.Split('\n'); + List sa_out = new List(); + //If $current and $prev don't match, return the $prev element, which is $depth lines below the $current line. Start at clip[$depth] and go until the end - this starts $current at clip[$depth], and $prev gets moved backwards to clip[0] and moves through until $current is at the end of the array, clip[clip.Length], and $prev is $depth previous, at clip[clip.Length - $depth]. + for (int depthUnit = depth;depthUnit < clip.Length; depthUnit++){ + string current = clipArray[depthUnit].Split(':')[0]; + string prevUnit = clipArray[depthUnit - depth]; + string prev = prevUnit.Split(':')[0]; + if (current != prev) { + sa_out.Add(prevUnit); + } + } + //Then complete the last depth items of the array by starting at clip[-depth] and work backwards through the last items in reverse order to clip[-1]. + for (int depthUnit = depth;depthUnit > 0; depthUnit--){ + sa_out.Add(clipArray[-depthUnit]); + + } + string string_joined = string.Join("\n", sa_out); + return string_joined; + } + + //RemoveFileifExist(FileName) = RemoveItem(FIleName); + //LoadFileIfExists(FileName) = GetContent(FIleName); + + public string FileFromGitHub(string PackageIdentifier, string Version, string FileName = "installer.yaml") { + string Path = PackageIdentifier.Replace('.','/'); + string FirstLetter = PackageIdentifier[0].ToString().ToLower(); + string content = ""; + try{ + content = InvokeGitHubRequest(GitHubContentBaseUrl+"/master/manifests/"+FirstLetter+"/"+Path+"/"+Version+"/"+PackageIdentifier+"."+FileName); + }catch{ + content = "Error"; + } + return content; + } + + public bool ManifestEntryCheck(string PackageIdentifier, string Version, string Entry = "AppsAndFeaturesEntries"){ + string content = FileFromGitHub(PackageIdentifier,Version); + string string_out = ""; + string_out = string_out.Split('\n').Where(n => n.Contains(Entry)).FirstOrDefault(); // s.IndexOf(": "); + if (string_out == "") { + return false; + } else { + return true; + } + } + + public string DecodeGitHubFile (string Base64String) { + var Bits = System.Convert.FromBase64String(Base64String); + string String = System.Text.Encoding.UTF8.GetString(Bits); + return String; + } + + public string CommitFile(int PR, int File){ + string url = ""; + dynamic Commit = FromJson(InvokeGitHubPRRequest(PR,"commits","content")); + if (Commit["files"]["contents_url"].GetType() == "String") { + url = Commit["files"]["contents_url"]; + } else { + url = Commit["files"]["contents_url"][File]; + } + dynamic EncodedFile = FromJson(InvokeGitHubRequest(url)); + return DecodeGitHubFile(EncodedFile["content"]); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Reporting --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void AddPRToRecord(int PR, string Action, string Title = ""){ + //[ValidateSet("Approved", "Blocking", "Feedback", "Retry", "Manual", "Closed", "Project", "Squash", "Waiver")] + Title = Title.Split('#')[0]; + string string_out = (PR+","+Action+","+Title + Environment.NewLine); + OutFile(LogFile, string_out, true); + } + + public void PRPopulateRecord(){ + dynamic Logs = FromCsv(GetContent(LogFile)); + for (int l = 1; l < Logs.Length -1; l++){ + var Log = Logs[l]; + //If the title is null, search for another with the same PR whose title isn't null. + if (Log["title"] == null) { + for (int m = 1; m < Logs.Length -1; m++){ + var ListItem = Logs[m]; + if (ListItem["title"] != null && ListItem["PR"] == Log["PR"]) { + Log["title"] = ListItem["title"]; + }//end if ListItem + }//end for m + }//end if ListItem + }//end for l + OutFile(LogFile, ToCsv(Logs)); + }//end function + + public dynamic PRFromRecord(string string_action){ + + PRPopulateRecord(); + return FromCsv(GetContent(LogFile)).Where(n => n["Action"].Contains(string_action)); + } + + public string PRReportFromRecord(string string_action, string string_out = "", int line = 0) { + //Add items to dictionary array then remove from file. + Dictionary[] Records = PRFromRecord(string_action); + dynamic dynamic_csv = FromCsv(GetContent(LogFile)).Where(n => !n["Action"].Contains(string_action)).ToList(); + string string_csv = ToCsv(dynamic_csv); + OutFile(LogFile,string_csv); + + foreach (Dictionary Record in Records) { + line++; + string Title = Record["Title"]; + int PR = Record["PR"]; + if (Title == null) { + Title = FromJson(InvokeGitHubPRRequest(PR,"","content"))["title"]; + } + TrackerProgress(PR,System.Reflection.MethodBase.GetCurrentMethod().Name,line,Records.Length); + string_out += Title+" #"+PR+Environment.NewLine; + } + return string_out; + } + + public void PRFullReport() { + string ReportName = logsFolder+"\\"+DateTime.Now.ToString("MMddyy")+"-Report.txt"; + string[] PRTypes = {"Feedback","Blocking","Waiver","Retry","Manual","Closed","Project","Squash","Approved"}; + foreach (string Type in PRTypes) { + string string_out = Type+Environment.NewLine+Environment.NewLine+Environment.NewLine+PRReportFromRecord(Type); + OutFile(ReportName,string_out,true); + } + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Clipboard --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public int[] PRNumber(string clip, bool Hash = false){ + string[] string_PRs = null; + if (Hash == true) { + string_PRs = clip.Replace("\n"," ").Split(' ').Where(n => regex_hashPRRegex.IsMatch(n)).Distinct().ToArray(); + } else { + string_PRs = clip.Replace("\n"," ").Split(' ').Where(n => regex_hashPRRegexEnd.IsMatch(n)).ToArray(); + } + int[] int_PRs = new int[string_PRs.Length]; + for (int n = 0;n < string_PRs.Length; n++) { + if (Hash == true) { + string_PRs[n] = string_PRs[n].Replace("#"," "); + } + int_PRs[n] = Int32.Parse(string_PRs[n]); + } + return int_PRs; + } + + public string SortedClipboard(string string_in){ + IEnumerable string_array = string_in.Split('\n').Distinct(); + string string_joined = string.Join("\n", string_array); + return string_joined; + } + + public void OpenAllURLs (string Clip = ""){ + if (Clip == "") { + Clip = Clipboard.GetText(); + } + IEnumerable Urls; + Urls = Clip.Split(' '); + Urls = Urls.Where(n => n.Contains("http")); + Urls = Urls.Where(n => !n.Contains("[.]exe$")); + Urls = Urls.Where(n => !n.Contains("[.]msi$")); + Urls = Urls.Where(n => !n.Contains("[.]zip$")); + Urls = Urls.Distinct(); + foreach (string Url in Urls) { + System.Diagnostics.Process.Start(Url); + } + } + + public void OpenPRInBrowser(int PR,bool Files = false){ + string URL = GitHubBaseUrl+"/pull/"+PR+"#issue-comment-box"; + if (Files == true) { + URL = GitHubBaseUrl+"/pull/"+PR+"/files"; + } + Thread.Sleep(GitHubRateLimitDelay); + System.Diagnostics.Process.Start(URL); + }//end Function + + public string YamlValue(string ContainsString, string YamlString){ + //Split YamlString by \n + //String where equals StringName + YamlString = YamlString.Split('\n').Where(n => n.Contains(ContainsString)).FirstOrDefault(); // s.IndexOf(": "); + YamlString = YamlString.Replace(ContainsString+": ",""); + YamlString = YamlString.Split('#')[0]; + //YamlString = (YamlString.ToCharArray().Where(n => n.Contains("\\S"}).Join(""); + return YamlString.Trim(); + } + + public int GetCurrentPR() { + return Int32.Parse(inputBox_PRNumber.Text.Replace("#","")); + } + + public int GetSelectedVM() { + return Convert.ToInt32(dataGridView_vm.SelectedRows[0].Cells["vm"].Value); + } + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Et Cetera --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public bool TestAdmin() { + bool isAdmin = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); + if (isAdmin == true) { + MessageBox.Show("Try elevating your session." + Environment.NewLine, "Error"); + } + return isAdmin; + } + + public void TrackerProgress(int PR, string Activity, int Incrementor, int Length){ + //double Percent = System.Math.Round(Incrementor / Length*100,2); + //Write-Progress -Activity $Activity -Status "$PR - $Incrementor / $Length = $Percent %" -PercentComplete Percent + } + + public double ArraySum(int[] int_in){ + int sum = int_in.Sum(); + return sum;//Math.Round(sum,2); + } + + public void GitHubRateLimit(){ + //Time, as a number, constantly increases. + string Url = "https://api.github.com/rate_limit"; + dynamic Unlogged_Rate = FromJson(InvokeWebRequest(Url)); + //Unlogged_Rate["rate"] | select @{n="source";e={"Unlogged"}}, limit, used, remaining, @{n="reset";e={([System.DateTimeOffset]::FromUnixTimeSeconds(_.reset)).DateTime.AddHours(-8)}} + + dynamic Logged_Rate = FromJson(InvokeGitHubRequest(Url)); + //Response["rate"] | select @{n="source";e={"Logged"}}, limit, used, remaining, @{n="reset";e={([System.DateTimeOffset]::FromUnixTimeSeconds(_.reset)).DateTime.AddHours(-8)}} + } + + public string GetFileData(string Filename, string PackageIdentifier, string Property){ + dynamic Records = FromCsv(GetContent(Filename));//StatusFile + string string_out = ""; + for (int r = 1; r < Records.Length -1; r++){ + var row = Records[r]; + if (row["PackageIdentifier"] == PackageIdentifier) { + string_out += row[Property]; + }//end if row vm + }//end for r + return string_out; + } + + public void AddValidationData(string PackageIdentifier,string gitHubUserName = "",string authStrictness = "",string authUpdateType = "",string autoWaiverLabel = "",string versionParamOverrideUserName = "",int versionParamOverridePR = 0,string code200OverrideUserName = "",int code200OverridePR = 0,int AgreementOverridePR = 0 ,string AgreementURL = "",string reviewText = ""){ + //[ValidateSet("should","must")] + //[ValidateSet("auto","manual")] + + //Find the line with the PackageIdentifier, then if it's null, make a new line and insert. + dynamic data = FromCsv(GetContent(DataFileName)); + for (int r = 1; r < data.Length -1; r++){ + var row = data[r]; + + if (row["PackageIdentifier"] == PackageIdentifier) { + row["gitHubUserName"] = gitHubUserName; + row["authStrictness"] = authStrictness; + row["authUpdateType"] = authUpdateType; + row["autoWaiverLabel"] = autoWaiverLabel; + row["versionParamOverrideUserName"] = versionParamOverrideUserName; + row["versionParamOverridePR"] = versionParamOverridePR; + row["code200OverrideUserName"] = code200OverrideUserName; + row["code200OverridePR"] = code200OverridePR; + row["AgreementURL"] = AgreementURL; + row["AgreementOverridePR"] = AgreementOverridePR; + row["reviewText"] = reviewText; + }//end if row vm + }//end for r + + /* + if (null == string_out) {0 + string_out = ( "" | Select-Object "PackageIdentifier","gitHubUserName","authStrictness","authUpdateType","autoWaiverLabel","versionParamOverrideUserName","versionParamOverridePR","code200OverrideUserName","code200OverridePR","AgreementOverridePR","AgreementURL","reviewText") + string_out.PackageIdentifier = PackageIdentifier + } + + data += string_out + data = data.OrderBy(o=>o["PackageIdentifier"]).ToArray(); + */ + OutFile(DataFileName, ToCsv(data)); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Utility Functions --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void OpenSandbox(string string_PRNumber){ + int int_PRNumber = 0; + if (string_PRNumber[0] == '#') { + int_PRNumber = Int32.Parse(string_PRNumber.Substring(1,string_PRNumber.Length)); + } + StopProcess("sandbox"); + StopProcess("wingetautomator"); + string version = "1.6.1573-preview";//This is out of date. + string process ="wingetautomator://install?pull_request_number="+int_PRNumber.ToString()+"&winget_cli_version=v"+version.ToString()+"&watch=yes"; + System.Diagnostics.Process.Start(process); + } + + public string PadRight(string PackageIdentifier,int PadChars = 45){ + string string_out = ""; + if (PackageIdentifier.Length < PadChars) { + int int_extraSpaces = (PadChars - PackageIdentifier.Length -1); + string string_extraSpaces = new string(' ', int_extraSpaces); + string_out = String.Concat(PackageIdentifier, string_extraSpaces); + //} else if (PackageIdentifier.Length > PadChars) { + //string_out = PackageIdentifier.substring(0..(PadChars -1)) + //} + } + return string_out; + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- PowerShell Equivs --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// +/*Powershell functional equivalency imperatives + Get-Clipboard = Clipboard.GetText(); + Get-Date = DateTime.Now.ToString("M/d/yyyy"); + Get-Process = public Process[] processes = Process.GetProcesses(); or var processes = Process.GetProcessesByName("Test"); + New-Item = Directory.CreateDirectory(Path) or File.Create(Path); + Remove-Item = Directory.Delete(Path) or File.Delete(Path); + Get-ChildItem = string[] entries = Directory.GetFileSystemEntries(path, "*", SearchOption.AllDirectories); + Start-Process = System.Diagnostics.Process.Start("PathOrUrl"); + Stop-Process = StopProcess("ProcessName"); + Start-Sleep = Thread.Sleep(GitHubRateLimitDelay); + Get-Random - Random rnd = new Random(); or int month = rnd.Next(1, 13); or int card = rnd.Next(52); + Create-Archive = ZipFile.CreateFromDirectory(dataPath, zipPath); + Expand-Archive = ZipFile.ExtractToDirectory(zipPath, extractPath); + Sort-Object = .OrderBy(n=>n).ToArray(); and -Unique = .Distinct(); Or Array.Sort(strArray); or List + + Get-VM = GetVM("VMName"); + Start-VM = SetVMState("VMName", 2); + Stop-VM = SetVMState("VMName", 4); + Stop-VM -TurnOff = SetVMState("VMName", 3); + Reboot-VM = SetVMState("VMName", 10); + Reset-VM = SetVMState("VMName", 11); + +*/ + //System + public void StopProcess(string ProcessName) { + var processes = Process.GetProcessesByName(ProcessName); + foreach (Process process in processes){ + process.CloseMainWindow(); + } + } + //JSON + public dynamic FromJson(string string_input) { + dynamic dynamic_output = new System.Dynamic.ExpandoObject(); + dynamic_output = serializer.Deserialize(string_input); + return dynamic_output; + } + + public string ToJson(dynamic dynamic_input) { + string string_out; + string_out = serializer.Serialize(dynamic_input); + return string_out; + } + //CSV + public Dictionary[] FromCsv(string csv_in) { + //CSV isn't just a 2d object array - it's an array of Dictionary, whose string keys are the column headers. + string[] Rows = csv_in.Replace("\r\n","\n").Replace("\"","").Split('\n'); + string[] columnHeaders = Rows[0].Split(','); + Dictionary[] matrix = new Dictionary [Rows.Length]; + try { + for (int row = 1; row < Rows.Length; row++){ + matrix[row] = new Dictionary(); + //Need to enumerate values to create first row. + string[] rowData = Rows[row].Split(','); + try { + for (int col = 0; col < rowData.Length; col++){ + //Need to record or access first row to match with values. + matrix[row].Add(columnHeaders[col].ToString(), rowData[col]); + } + } catch { + } + } + } catch { + } + return matrix; + } + + public string ToCsv(Dictionary[] matrix) { + string csv_out = ""; + //Arrays seem to have a buffer row above and below the data. + int topRow = 1; + Dictionary headerRow = matrix[topRow]; + //Write header row (th). Support for multi-line headers maybe someday but not today. + if (headerRow != null) { + string[] columnHeaders = new string[headerRow.Keys.Count]; + headerRow.Keys.CopyTo(columnHeaders, 0); + //var a = matrix[0].Keys; + foreach (string columnHeader in columnHeaders){ + csv_out += columnHeader.ToString()+","; + } + csv_out = csv_out.TrimEnd(','); + // Write data rows (td). + for (int row = topRow; row < matrix.Length -1; row++){ + csv_out += "\n"; + foreach (string columnHeader in columnHeaders){ + csv_out += matrix[row][columnHeader]+","; + } + csv_out = csv_out.TrimEnd(','); + } + } + csv_out += "\n"; + return csv_out; + } + //File + public string GetContent(string Filename, bool NoErrorMessage = false) { + string string_out = ""; + try { + // Open the text file using a stream reader. + using (var sr = new StreamReader(Filename)) { + // Read the stream as a string, and write the string to the console. + string_out = sr.ReadToEnd(); + } + } catch (IOException e) { + if (NoErrorMessage == false) { + MessageBox.Show(e.Message, "Error"); + } + } + return string_out; + } + + public void OutFile(string path, object content, bool Append = false) { + //From SO: Use "typeof" when you want to get the type at compilation time. Use "GetType" when you want to get the type at execution time. "is" returns true if an instance is in the inheritance tree. + if (TestPath(path) == "None") { + File.Create(path).Close(); + } + if (content.GetType() == typeof(string)) { + string out_content = (string)content; + //From SO: File.WriteAllLines takes a sequence of strings - you've only got a single string. If you only want your file to contain that single string, just use File.WriteAllText. + if (Append == true) { + File.AppendAllText(path, out_content, Encoding.ASCII);//string + } else { + File.WriteAllText(path, out_content, Encoding.ASCII);//string + } + } else { + IEnumerable out_content = (IEnumerable)content; + if (Append == true) { + File.AppendAllLines(path, out_content, Encoding.ASCII);//IEnumerable' + } else { + File.WriteAllLines(path, out_content, Encoding.ASCII);//string[] + } + } + } + + public string TestPath(string path) { + string string_out = ""; + if (path != null) { + path = path.Trim(); + if (Directory.Exists(path)) { + string_out = "Directory"; + } else if (File.Exists(path)) { + string_out = "File"; + } else {// neither file nor directory exists. guess intention + string_out = "None"; + } + } else {// neither file nor directory exists. guess intention + string_out = "Empty"; + } + return string_out; + } + //Web + public string InvokeWebRequest(string Url, string Method = WebRequestMethods.Http.Get, string Body = "",bool Authorization = false){ + string response_out = ""; + + // SSL stuff + //ServicePointManager.Expect100Continue = true; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); + + if (Authorization == true) { + request.Headers.Add("Authorization", "Bearer "+GitHubToken); + request.Headers.Add("X-GitHub-Api-build", "2022-11-28"); + request.PreAuthenticate = true; + } + + request.Method = Method; + request.ContentType = "application/json;charset=utf-8"; + request.Accept = "application/vnd.github+json"; + request.UserAgent = "WinGetApprovalPipeline"; + + //Check Headers + // for (int i=0; i < response.Headers.Count; ++i) { + // outBox_msg.AppendText(Environment.NewLine + "Header Name : " + response.Headers.Keys[i] + "Header value : " + response.Headers[i]); + // } + + try { + if ((Body == "") || (Method ==WebRequestMethods.Http.Get)) { + } else { + var data = Encoding.Default.GetBytes(Body); // note: choose appropriate encoding + request.ContentLength = data.Length; + var newStream = request.GetRequestStream(); // get a ref to the request body so it can be modified + newStream.Write(data, 0, data.Length); + newStream.Close(); + } + + } catch (Exception e) { + //MessageBox.Show("Wrong request!" + ex.Message, "Error"); + response_out = "Request Error: " + e.Message; + } + + try { + HttpWebResponse response = (HttpWebResponse)request.GetResponse(); + StreamReader sr = new StreamReader(response.GetResponseStream()); + if (Method == "Head") { + string response_text = response.StatusCode.ToString(); + response_out = response_text; + + } else { + string response_text = sr.ReadToEnd(); + response_out = response_text; + } + sr.Close(); + } catch (Exception e) { + response_out = "Response Error: " + e.Message; + } + return response_out; + }// end InvokeWebRequest + + public void RemoveItem(string Path,bool remake = false){ + if (TestPath(Path) == "File") { + File.Delete(Path); + if (remake) { + File.Create(Path); + } + } else if (TestPath(Path) == "Directory") { + Directory.Delete(Path, true); + if (remake) { + Directory.CreateDirectory(Path); + } + } + } + //Hyper-V + public ManagementObject GetCimService(string ServiceName) { + string CImQuery = "SELECT * FROM "+ServiceName; + ObjectQuery QueryData = new ObjectQuery(@CImQuery); + ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, QueryData); + ManagementObjectCollection collection = searcher.Get(); + + ManagementObject CimService = null; + foreach (ManagementObject obj in collection) { + CimService = obj; + break; + } + return CimService; + } + + public ManagementObject GetVM(string VMName, string ServiceName = "Msvm_ComputerSystem") { + return GetCimService(ServiceName + " WHERE ElementName = '" + VMName + "'"); + } + /*States: + 1: Other + 2: Start-VM + 3: Stop-VM -TurnOff + 4: Stop-VM + 5: Stopped??? + 6: Offline + 7: Test + 8: Defer + 9: Quiesce + 10: Reboot + 11: Reset + */ + public void SetVMState(string VMName, int state) { + ManagementObject vm = GetVM(VMName); + ManagementBaseObject inParams = vm.GetMethodParameters("RequestStateChange"); + inParams["RequestedState"] = state; + ManagementBaseObject outParams = vm.InvokeMethod("RequestStateChange", inParams, null); + } + + public void RemoveVM(string VMName) { + ManagementObject vm = GetVM(VMName); + ManagementObject virtualSystemService = GetCimService("Msvm_VirtualSystemManagementService"); + + ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("DestroyVirtualSystem"); + inParams["ComputerSystem"] = vm.Path.Path; + ManagementBaseObject outParams = virtualSystemService.InvokeMethod("DestroyVirtualSystem", inParams, null); + } + + public ManagementObject GetLastSnapshot(string VMName = "") { + ManagementObject vm = GetVM(VMName); + ManagementObjectCollection settings = vm.GetRelated( + "Msvm_VirtualSystemSettingData", + "Msvm_MostCurrentSnapshotInBranch", + null, + null, + "Dependent", + "Antecedent", + false, + null); + + ManagementObject virtualSystemsetting = null; + foreach (ManagementObject setting in settings) { + //Console.WriteLine(setting.Path.Path); + //Console.WriteLine(setting["ElementName"]); + virtualSystemsetting = setting; + } + return virtualSystemsetting; + } + + public void RestoreVMSnapshot(string VMName) { + try { + + ManagementObject snapshot = GetLastSnapshot(VMName); + ManagementObject snapshotService = GetCimService("Msvm_VirtualSystemSnapshotService"); + + var inParameters = snapshotService.GetMethodParameters("ApplySnapshot"); + inParameters["Snapshot"] = snapshot.Path.Path; + var outParameters = snapshotService.InvokeMethod("ApplySnapshot", inParameters, null); + //return (uint)outParameters["ReturnValue"]; + } catch (Exception e) { + outBox_msg.AppendText(Environment.NewLine + "e: " + e ); + } + } + + public uint CheckpointVM(string VMName) { + ManagementObject snapshot = GetLastSnapshot(VMName); + ManagementObject snapshotService = GetCimService("Msvm_VirtualSystemSnapshotService"); + + var inParameters = snapshotService.GetMethodParameters("CreateSnapshot"); + inParameters["Snapshot"] = snapshot.Path.Path; + var outParameters = snapshotService.InvokeMethod("CreateSnapshot", inParameters, null); + return (uint)outParameters["ReturnValue"]; + } + + public uint RemoveVMSnapshot(string VMName) { + ManagementObject snapshot = GetLastSnapshot(VMName); + ManagementObject snapshotService = GetCimService("Msvm_VirtualSystemSnapshotService"); + + var inParameters = snapshotService.GetMethodParameters("DestroySnapshot"); + inParameters["Snapshot"] = snapshot.Path.Path; + var outParameters = snapshotService.InvokeMethod("DestroySnapshot ", inParameters, null); + return (uint)outParameters["ReturnValue"]; + } + + public void RenameVM(string VMName, string NewName) { + Process process = new Process(); + string command = "Rename-VM -VM "+VMName+" -newName "+NewName; + process.StartInfo.Arguments = string.Format(command); + process.StartInfo.FileName = "PowerShell.EXE"; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.UseShellExecute = false; + process.Start(); + process.WaitForExit(); + } + + public void RenameVM2(string VMName, string vmNewName) { + + ManagementObject virtualSystemService = GetCimService("Msvm_VirtualSystemManagementService"); + ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("ModifyVirtualSystem"); + ManagementObject vm = GetVM(VMName); + // ManagementBaseObject inParams = vm.GetMethodParameters("ModifyVirtualSystem"); + + inParams["ComputerSystem"] = vm.Path.Path; + ManagementObject settingData = null; + ManagementObjectCollection settingsData = vm.GetRelated( + "Msvm_VirtualSystemSettingData", + "Msvm_SettingsDefineState", + null, + null, + "SettingData", + "ManagedElement", + false, + null); + + foreach (ManagementObject data in settingsData) { + settingData = data; + } + settingData["ElementName"] = vmNewName; + inParams["SystemsettingData"] = settingData.GetText(TextFormat.CimDtd20); + ManagementBaseObject outParams = virtualSystemService.InvokeMethod("ModifyVirtualSystem", inParams, null); + // ManagementBaseObject outParams = vm.InvokeMethod("RequestStateChange", inParams, null); + + } + + public void MoveVMStorage(string VMName, string DestinationPath) { + Process process = new Process(); + string command = "Move-VMStorage -VM "+VMName+" -DestinationStoragePath "+DestinationPath; + process.StartInfo.Arguments = string.Format(command); + process.StartInfo.FileName = "PowerShell.EXE"; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.UseShellExecute = false; + process.Start(); + process.WaitForExit(); + } + + public void ImportVM(string CurrentPath, string DestinationPath) { + Process process = new Process(); + string command = "Import-VM -Path " + CurrentPath + " -Copy -GenerateNewId -VhdDestinationPath "+DestinationPath +" -VirtualMachinePath "+DestinationPath; + process.StartInfo.FileName = "PowerShell.EXE"; + process.StartInfo.Arguments = command; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.UseShellExecute = false; + outBox_msg.AppendText(Environment.NewLine + "ImportVM " + process.StartInfo.FileName); + process.Start(); + outBox_msg.AppendText(Environment.NewLine + "Start " + process.StartInfo.FileName); + process.WaitForExit(); + outBox_msg.AppendText(Environment.NewLine + "WaitForExit " + process.StartInfo.FileName); + } + + public void SetVMMemory(string VMName, int MemoryMaximumGB) { + Process process = new Process(); + string command = "Set-VM -VMName " + VMName + " -MemoryMaximumBytes " + ((MemoryMaximumGB + 2) * 1073741824); + process.StartInfo.Arguments = string.Format(command); + process.StartInfo.FileName = "PowerShell.EXE"; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.UseShellExecute = false; + process.Start(); + process.WaitForExit(); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Window Locations --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); + + [DllImport("user32.dll")] + public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); + + public struct RECT { + public int Left; // x position of upper-left corner + public int Top; // y position of upper-left corner + public int Right; // x position of lower-right corner + public int Bottom; // y position of lower-right corner + } + + public RECT rect; + + public void WindowLoc(int vm,ref RECT rect) { + //Need to readd the logic that finds the mainwindowhandle from the VM number. + var processes = Process.GetProcessesByName("vmconnect"); + string VMName = "vm"+vm; + foreach (Process process in processes){ + if (process.MainWindowTitle ==(VMName)) { + GetWindowRect(process.MainWindowHandle,out rect); + } + } + } + + public void WindowSet(int vm,int Left,int Top,int Right,int Bottom) { + var processes = Process.GetProcessesByName("vmconnect"); + string VMName = "vm"+vm; + foreach (Process process in processes){ + if (process.MainWindowTitle ==(VMName)) { + MoveWindow(process.MainWindowHandle,Left,Top,Right,Bottom,true); + } + } + } + + public void WindowArrange() { + Dictionary[] GetStatus = FromCsv(GetContent(StatusFile)); + + Dictionary[] VMs = (Dictionary[])GetStatus.Where(n => (string)n["status"] != "Ready").Select(n => n["vm"]); + + if (VMs != null) { + int n = 0; + //for (int n = 1;n < VMs.Length;n++) { + foreach (Dictionary FullVM in VMs){ + RECT Base = new RECT(); + int VM = (int)FullVM["vm"]; + if (n == 0) { + WindowSet(VM,900,0,1029,860); + WindowLoc(VM, ref Base); + } + + int Left = (Base.Left - (100 * n)); + int Top = (Base.Top + (66 * n)); + WindowSet(VM,Left,Top,1029,860); + n++; + } + } + + for (int VM = 0; VM < GetStatus.Length; VM++) { + try { + string string_ram = GetStatus[VM]["RAM"]+" "; + } catch { + //inputBox_VMRAM.Text = e.ToString(); + } + } + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Event Handlers --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + //File + public void Save_File_Action(object sender, EventArgs e) { + MessageBox.Show("You're saved"); + }// end Save_File_Action + + public void Daily_Report_Action(object sender, EventArgs e) { + PRFullReport(); + }// end Daily_Report_Action + + //VM Lifecycle + public void Complete_VM_Image_Action (object sender, EventArgs e) { + CompleteVM(GetSelectedVM()); + } // end Complete_VM_Image_Action + + public void Launch_Window_Image_Action (object sender, EventArgs e) { + LaunchWindow(GetSelectedVM()); + } // end Launch_Window_Image_Action + + public void Open_Folder_Image_Action (object sender, EventArgs e) { + int VM = GetSelectedVM(); + Process.Start("C:\\ManVal\\vm\\"+VM.ToString()); + } // end Launch_Window_Image_Action + //VM Lifecycle - Win10 + public void Generate_Win10_VM_Image_Action (object sender, EventArgs e) { + GenerateVM("Win10"); + } // end Generate_VM_Image_Action + + public void Start_Win10_Image_Action (object sender, EventArgs e) { + ImageVMStart("Win10"); + } // end Start_Win10_Image_Action + + public void Launch_Win10_Window_Image_Action (object sender, EventArgs e) { + LaunchWindow(0,"Win10"); + } // end Launch_Win10_Window_Image_Action + + public void Stop_Win10_Image_Action (object sender, EventArgs e) { + ImageVMStop("Win10"); + } // end Stop_Win10_Image_Action + + public void TurnOff_Win10_Image_Action (object sender, EventArgs e) { + StopVM(0,"Win10"); + } // end TurnOff_Win10_Image_Action + + public void Attach_Win10_Image_Action (object sender, EventArgs e) { + ImageVMMove("Win10"); + } // end Attach_Win10_Image_Action + //VM Lifecycle - Win11 + public void Generate_Win11_VM_Image_Action (object sender, EventArgs e) { + GenerateVM("Win11"); + } // end Generate_VM_Image_Action + + public void Start_Win11_Image_Action (object sender, EventArgs e) { + ImageVMStart("Win11"); + } // end Start_Win11_Image_Action + + public void Launch_Win11_Window_Image_Action (object sender, EventArgs e) { + LaunchWindow(0,"Win11"); + } // end Launch_Win11_Window_Image_Action + + public void Stop_Win11_Image_Action (object sender, EventArgs e) { + ImageVMStop("Win11"); + } // end Stop_Win11_Image_Action + + public void TurnOff_Win11_Image_Action (object sender, EventArgs e) { + StopVM(0,"Win11"); + } // end TurnOff_Win11_Image_Action + + public void Attach_Win11_Image_Action (object sender, EventArgs e) { + ImageVMMove("Win11"); + } // end Attach_Win11_Image_Action + //VM Lifecycle + public void Disgenerate_VM_Image_Action (object sender, EventArgs e) { + DisgenerateVM(GetSelectedVM()); + } // end Disgenerate_VM_Image_Action + + //Validate Manifest + public void Validate_Manifest_Action(object sender, EventArgs e) { + ValidateManifest(); + }// end Validate_Manifest_Action + + public void Validate_By_Configure_Action(object sender, EventArgs e) { + ValidateManifest(0,"","",0,"","","","","",false,false,"","",false, "","Configure"); + }// end Validate_By_ID_Action + + public void Validate_By_ID_Action(object sender, EventArgs e) { + string PackageIdentifier = inputBox_User.Text; + + ValidateManifest(0,PackageIdentifier,"",0,"","","","","",false,false,"","",false, "--id "+PackageIdentifier); +//ValidateManifest(VM = 0, PackageIdentifier = "", PackageVersion = "", PR = 0, Arch = "", Scope = "", InstallerType = "", OS = "", Locale = "", InspectNew = false, notElevated = false, MinimumOSVersion = "", ManualDependency = "", NoFiles = false, installerLine = "", Operation = "Scan") + }// end Validate_By_ID_Action + + public void Validate_By_Arch_Action(object sender, EventArgs e) { + ValidateManifest(0,"","",0,"x64"); + Thread.Sleep(HyperVRateLimitDelay); + ValidateManifest(0,"","",0,"x86"); + }// end Validate_By_ID_Action + + public void Validate_By_Scope_Action(object sender, EventArgs e) { + ValidateManifest(0,"","",0,"","Machine"); + Thread.Sleep(HyperVRateLimitDelay); + ValidateManifest(0,"","",0,"","User"); + }// end Validate_By_ID_Action + + public void Validate_By_Arch_And_Scope_Action(object sender, EventArgs e) { + ValidateManifest(0,"","",0,"x64","Machine"); + Thread.Sleep(HyperVRateLimitDelay); + ValidateManifest(0,"","",0,"x86","Machine"); + Thread.Sleep(HyperVRateLimitDelay); + ValidateManifest(0,"","",0,"x64","User"); + Thread.Sleep(HyperVRateLimitDelay); + ValidateManifest(0,"","",0,"x86","User"); + }// end Validate_By_ID_Action + //Generate manifest for selected VM + public void Manifest_From_Clipboard (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + }// end Validate_By_ID_Action + + public void Single_File_Automation_Action(object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + }// end Validate_By_ID_Action + //Update manifest + public void Add_Dependency_Disk_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end Add_Dependency_Disk_Action + + public void Add_Installer_Switch_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end Add_Installer_Switch_Action + + //Modify PR + public void Add_Waiver_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + dynamic string_out = FromJson(AddWaiver(PR)); + AddPRToRecord(PR,"Waiver"); + }// end Add_Waiver_Action + + public void Label_Action_Action(object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + }// end Label_Action_Action + + public void Approved_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + + string Timestamp = DateTime.Now.ToString("H:mm:ss"); + DataRow row = table_val.NewRow(); + row[0] = Timestamp; + row[1] = PR; + row[2] = ""; + row[3] = ""; + row[4] = "A"; + row[5] = 0;//M + row[6] = "R"; + row[7] = "G"; + row[8] = "W"; + row[9] = "F"; + row[10] = "I"; + row[11] = "D"; + row[12] = "V"; + row[13] = ""; + row[14] = "+"; + table_val.Rows.InsertAt(row,0); + + string response_out = FromJson(ApprovePR(PR))["state"]; + table_val.Rows[0].SetField("OK", response_out[0]); + AddPRToRecord(PR,"Approved"); + }// end Approved_Action + + public void Needs_Author_Feedback_Action(object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + }// end Needs_Author_Feedback_Action + + public void Check_Installer_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + CheckInstaller(PR); + }// end Check_Installer_Action + //Modify PR - Canned Replies + public void Automation_Block_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Blocking"); + string response_out = ReplyToPR(PR,"AutomationBlock","Network-Blocker"); + }// end Automation_Block_Action + + public void Driver_Install_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + string response_out = ReplyToPR(PR,"DriverInstall","DriverInstall"); + AddPRToRecord(PR,"Blocking"); + }// end Driver_Install_Action + + public void Installer_Missing_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Feedback"); + string response_out = ReplyToPR(PR,"InstallerMissing",MagicLabels[30]); + }// end Installer_Missing_Action + + public void Installer_Not_Silent_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Feedback"); + string response_out = ReplyToPR(PR,"InstallerNotSilent",MagicLabels[30]); + }// end Installer_Not_Silent_Action + + public void Needs_PackageUrl_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Feedback"); + string response_out = ReplyToPR(PR,"PackageUrl",MagicLabels[30]); + }// end Needs_PackageUrl_Action + + public void One_Manifest_Per_PR_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Feedback"); + string response_out = ReplyToPR(PR,"OneManifestPerPR",MagicLabels[30]); + }// end One_Manifest_Per_PR_Action + //Modify PR - Update Manifest + public void Add_Dependency_Repo_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end Add_Dependency_Repo_Action + + public void Update_Hash_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end Update_Hash_Action + + public void Update_Hash2_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end Update_Hash2_Action + + public void Update_Arch_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end Update_Arch_Action + //Modify PR + public void Retry_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + dynamic response_out = FromJson(RetryPR(PR)); + AddPRToRecord(PR,"Retry"); + }// end Approved_Action + + public void Manually_Validated_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + string response_out = ReplyToPR(PR,"InstallsNormally","","Manually-Validated"); + AddPRToRecord(PR,"Manual"); + }// end Manually_Validated_Action + //Modify PR - Close PR + public void Closed_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + string UserInput = inputBox_User.Text; + inputBox_User.Text = ""; + AddPRToRecord(PR,"Closed"); + InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","Close with reason: "+UserInput+";"); + }// end Closed_Action + + public void Merge_Conflicts_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Closed"); + dynamic response_out = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","Close with reason: Merge Conflicts;")); + }// end Merge_Conflicts_Action + + public void Version_Already_Exiss_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Closed"); + dynamic response_out = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","Close with reason: Version already exists;")); + }// end Version_Already_Exiss_Action + + public void Package_Available_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Closed"); + dynamic response_out = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","Close with reason: Package still available;")); + }// end Package_Available_Action + + public void Regen_Hash_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Closed"); + dynamic response_out = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","Close with reason: Regenerate with new hash, and the newest version number.;")); + }// end Package_Available_Action + + public void Duplicate_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + int UserInput = Int32.Parse(inputBox_User.Text.Replace("#","")); + inputBox_User.Text = ""; + AddPRToRecord(PR,"Closed"); + dynamic response_out = FromJson(InvokeGitHubPRRequest(PR,WebRequestMethods.Http.Post,"comments","Close with reason: Duplicate of #"+UserInput+";")); + }// end Duplicate_Action + //Modify PR + public void Project_File_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Project"); + }// end Project_File_Action + + public void Squash_Action(object sender, EventArgs e) { + int PR = GetCurrentPR(); + AddPRToRecord(PR,"Squash"); + }// end Approved_Action + + //Open In Browser + public void Open_Current_PR_Action(object sender, EventArgs e) { + OpenPRInBrowser(GetCurrentPR()); + + }// end Approved_Action + + public void Open_PR_Selected_VM_Action(object sender, EventArgs e) {; + int PR = Convert.ToInt32(dataGridView_vm.SelectedRows[0].Cells["PR"].Value); + OpenPRInBrowser(PR); + }// end Approved_Action + + public void Pkgs_Issues_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/issues"); + }// end Approval_Search_Action + + public void Cli_Issues_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-cli/issues"); + }// end Approval_Search_Action + + public void Manual_Merge_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/labels/Needs-Manual-Merge"); + }// end Approval_Search_Action + + public void Highest_Version_Remaining_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/pulls?q=is%3Aopen+is%3Apr+draft%3Afalse+label%3AHighest-Version-Removal+");//HVR + }// end Approval_Search_Action + + public void Approval_Search_Action(object sender, EventArgs e) { + SearchGitHub("Approval",1,0, false,false,true); + }// end Approval_Search_Action + + public void Defender_Search_Action(object sender, EventArgs e) { + SearchGitHub("Defender",1,0, false,false,true); + }// end Defender_Search_Action + + public void ToWork_Search_Action(object sender, EventArgs e) { + SearchGitHub("ToWork",1,0, false,false,true); + }// end ToWork_Search_Action + + public void Open_Repo_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start(GitHubBaseUrl); + }// end Approved_Action + //Open In Browser - Open many tabs: + public void Open_AllUrls_Action(object sender, EventArgs e) { + string clip = Clipboard.GetText(); + foreach (int PR in PRNumber(clip,true)) { + OpenPRInBrowser(PR); + Thread.Sleep(GitHubRateLimitDelay); + } + }// end Approved_Action + + public void Approval_Run_Search_Action(object sender, EventArgs e) { + WorkSearch("Approval"); + }// end Approved_Action + + public void ToWork_Run_Search_Action(object sender, EventArgs e) { + WorkSearch("ToWork"); + }// end Approved_Action + + public void All_Resources_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://app.gitter.im/#/room/#Microsoft_winget-pkgs:gitter.im");//Gitter chat + System.Diagnostics.Process.Start("https://dev.azure.com/ms/winget-pkgs/_build");//Pipeline status + System.Diagnostics.Process.Start("https://stpkgmandashwesus2pme.z5.web.core.windows.net/");//Dashboard + SearchGitHub("Approval",1,0, false,false,true);//Approval search + SearchGitHub("ToWork",1,0, false,false,true);//ToWork search + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/pulls?q=is%3Aopen+is%3Apr+draft%3Afalse+-label%3ABlocking-Issue++label%3AValidation-Executable-Error+label%3AAzure-Pipeline-Passed+-label%3AValidation-Completed+-label%3AInternal-Error-Dynamic-Scan+-label%3AValidation-Defender-Error+-label%3AChanges-Requested+-label%3ADependencies+-label%3AHardware+-label%3AInternal-Error-Manifest+-label%3AInternal-Error-NoSupportedArchitectures+-label%3ALicense-Blocks-Install+-label%3ANeeds-CLA+-label%3ANetwork-Blocker+-label%3ANo-Recent-Activity+-label%3Aportable-jar+-label%3AReboot+-label%3AScripted-Application+-label%3AWindowsFeatures+-label%3Azip-binary");//APP-VEE + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/issues?q=is%3Aopen+assignee%3A"+gitHubUserName+"+-label%3AValidation-Completed+-label%3AValidation-Defender-Error+-label%3AError-Hash-Mismatch");//Assigned to user + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/pulls?q=is%3Apr+is%3Aopen+-is%3Adraft+label%3Amoderator-approved+label%3AValidation-Completed+-label%3ANeeds-CLA+-label%3ANeeds-Attention+-label%3ANeeds-Author-Feedback++-label%3ABlocking-Issue+");//Squash-Ready + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/labels/Internal-Error-Dynamic-Scan");//IEDS + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/pulls?page=1&q=is%3Apr+is%3Aopen+draft%3Afalse+label%3AValidation-Completed+label%3ANeeds-Attention+-label%3ALast-Version-Remaining+-label%3AScripted-Application+-label%3Ahardware");//VCNA + System.Diagnostics.Process.Start("https://github.com/notifications?query=reason%3Amention");//Notifications mentions + }// end All_Resources_Action + + public void Start_Of_Day_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/issues"); + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-cli/issues"); + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/labels/Needs-Manual-Merge"); + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-pkgs/pulls?q=is%3Aopen+is%3Apr+draft%3Afalse+label%3AHighest-Version-Removal+");//HVR + SearchGitHub("Defender",1,0, false,false,true); + }// end Start_Of_Day_Action + //Open In Browser + public void Open_PKGS_Repo_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start(GitHubBaseUrl); + }// end Open_PKGS_Repo_Action + + public void Open_CLI_Repo_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/microsoft/winget-cli/"); + }// end Open_CLI_Repo_Action + + public void Open_Notifications_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://github.com/notifications?query=reason%3Amention"); + }// end Approved_Action + + public void Open_Gitter_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://app.gitter.im/#/room/#Microsoft_winget-pkgs:gitter.im"); + }// end Approved_Action + + public void Open_Pipeline_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://dev.azure.com/ms/winget-pkgs/_build"); + }// end Approved_Action + + public void Open_Dashboard_Action(object sender, EventArgs e) { + System.Diagnostics.Process.Start("https://stpkgmandashwesus2pme.z5.web.core.windows.net/"); + }// end Approved_Action + + public void Pkgs_Search_Action(object sender, EventArgs e) { + string UserInput = inputBox_User.Text; + inputBox_User.Text = ""; + System.Diagnostics.Process.Start("https://github.com/search?q=repo%3Amicrosoft%2Fwinget-pkgs+"+UserInput+"&type=pullrequests"); + }// end Pkgs_Search_Action + + public void Open_SelectedApproved_Action(object sender, EventArgs e) { + int PR = Convert.ToInt32(dataGridView_val.SelectedRows[0].Cells["PR"].Value); + OpenPRInBrowser(PR); + }// end Open_SelectedApproved_Action + + + //Help + public void About_Click_Action (object sender, EventArgs e) { + string AboutText = "WinGet Approval Pipeline" + Environment.NewLine; + AboutText += "(c) 2024 Microsoft Corp" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "Report bugs and request features:" + Environment.NewLine; + AboutText += "https://Github.com/winget-pkgs/issues/" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + AboutText += "" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end About_Click_Action + + public void VCDependency_Click_Action (object sender, EventArgs e) { + string AboutText = "VCRedist DLL to dependency mapping:" + Environment.NewLine; + AboutText += "Missing DLL - Dependency" + Environment.NewLine; + AboutText += "MSVCR71.dll - Microsoft.VCRedist.2005.x64 (x86)" + Environment.NewLine; + AboutText += "MSVCR08.dll - Microsoft.VCRedist.2008.x64 (x86)" + Environment.NewLine; + AboutText += "MSVCR09.dll & MSVCR100.dll - Microsoft.VCRedist.2010.x64 (x86)" + Environment.NewLine; + AboutText += "MSVCR120.dll - Microsoft.VCRedist.2012.x64 (x86)" + Environment.NewLine; + AboutText += "MSVCR130.dll - Microsoft.VCRedist.2013.x64 (x86)" + Environment.NewLine; + AboutText += "MSVCR140.dll - Microsoft.VCRedist.2015+.x64 (x86)" + Environment.NewLine; + AboutText += "??? - Microsoft.VCRedist.2019.arm64" + Environment.NewLine; + AboutText += "??? - Microsoft.VCRedist.2022.arm64" + Environment.NewLine; + MessageBox.Show(AboutText); + } // end About_Click_Action + + + + + + public void Testing_Action(object sender, EventArgs e) { + // string string_out = (PRStateFromComments(PR).ToString()); + // dynamic string_out = GetFileData(DataFileName,"PackageIdentifier", UserInput); + // dynamic string_out = FromCsv(GetContent(DataFileName)).Where(n => n[Property] != null).Where(n => (string)n[Property].Contains(Match); + string UserInput = inputBox_User.Text; + dynamic line = FromCsv(GetContent(DataFileName)).Where(n => (string)n["PackageIdentifier"] == (UserInput)); + outBox_msg.AppendText(Environment.NewLine + "Testing: " + ToJson(line)); + }// end Testing_Action + + public void Testing2_Action(object sender, EventArgs e) { + string UserInput = inputBox_User.Text; + List versions = ManifestListing(UserInput); + // dynamic line = FromCsv(GetContent(DataFileName)).Where(n => (string)n["PackageIdentifier"] == (UserInput)); + outBox_msg.AppendText(Environment.NewLine + "Testing2: " + ToJson(versions)); + }// end Testing_Action + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Inject into PRs --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// +/*Inject into PRs +public string AddDependencyToPR(int PR){ + string Dependency = "Microsoft.VCRedist.2015+.x64", + string SearchString = "Installers:", + string LineNumbers = CommitFile(PR, string File, string url) (Select-String SearchString).LineNumber), + string ReplaceString = "Dependencies:\n PackageDependencies:\n - PackageIdentifier: $Dependency\nInstallers:", + string comment = "\\\\\\suggestion\n$ReplaceString\n\\\\\\\n\n(Automated response - build "build".)" + string_out = "" + foreach ($Line in $LineNumbers) { + string_out += Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Policy "Needs-Author-Feedback" + } +} +public string UpdateHashInPR(int PR, string ManifestHash, string PackageHash, string LineNumbers = ((Get-CommitFile -PR $PR | Select-String ManifestHash).LineNumber), string ReplaceTerm = (" InstallerSha256: $($PackageHash.toUpper())"), string comment = "\\\\\\suggestion\n$ReplaceString\n\\\\\\\n\n(Automated response - build "build".)"){ + foreach ($Line in $LineNumbers) { + Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Policy "Needs-Author-Feedback" + } +} + +public string UpdateHashInPR2(int PR, string clip, string SearchTerm = "Expected hash", string ManifestHash = (YamlValue $SearchTerm -Clip $Clip), string LineNumbers = ((Get-CommitFile -PR $PR | Select-String ManifestHash).LineNumber), string ReplaceTerm = "Actual hash", string PackageHash = (" InstallerSha256: "+(YamlValue $ReplaceTerm -Clip $Clip).toUpper()), string comment = "\\\\\\suggestion\n$ReplaceString\n\\\\\\\n\n(Automated response - build "build".)"){ + foreach ($Line in $LineNumbers) { + Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Policy "Needs-Author-Feedback" + } +} + +public string UpdateArchInPR(int PR, string SearchTerm = " Architecture: x86", string LineNumbers = ((Get-CommitFile -PR $PR | Select-String SearchTerm).LineNumber),string ReplaceTerm = (($SearchTerm.Split(": "))[1]),string ReplaceArch = (("x86","x64").Where(n => n -notmatch $ReplaceTerm}), string ReplaceString = ($SearchTerm.Replace($ReplaceTerm, string ReplaceArch), string comment = "\\\\\\suggestion\n$ReplaceString\n\\\\\\\n\n(Automated response - build "build".)")){ +[ValidateSet("x86","x64","arm","arm32","arm64","neutral")] + foreach ($Line in $LineNumbers) { + Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Policy "Needs-Author-Feedback" + } +} +*/ + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Inject into Files --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void AddToValidationFile(int VM, string Dependency = "Microsoft.VCRedist.2015+.x64"){ + string VMFolder = MainFolder+"\\vm\\"+VM; + string manifestFolder = VMFolder+"\\manifest"; + string FilePath = "manifestFolder\\Package.installer.yaml"; + string fileContents = GetContent(FilePath); + //string Selector = "Installers:"; + // int offset = 1; + // int lineNo = 0;//((fileContents| Select-String Selector -List).LineNumber -offset); + //string fileInsert = "Dependencies:\n PackageDependencies:\n - PackageIdentifier: Dependency"; + string fileOutput = fileContents;//(fileContents[0..(lineNo -1)]+fileInsert+fileContents[lineNo..(fileContents.Length)]); + OutFile(FilePath,fileOutput); + SetStatus(VM,"Revert"); + } + + public void AddInstallerSwitch(int VM, string Data){ + string VMFolder = MainFolder+"\\vm\\"+VM; + string manifestFolder = VMFolder+"\\manifest"; + string FilePath = "manifestFolder\\Package.installer.yaml"; + string fileContents = GetContent(FilePath); + // string Selector = "ManifestType:"; + // int offset = 1; + // int lineNo = 0;//((fileContents| Select-String Selector -List).LineNumber -offset); + // string fileInsert = " InstallerSwitches:\n Silent: $Data"; + string fileOutput = fileContents;//(fileContents[0..(lineNo -1)]+fileInsert+fileContents[lineNo..(fileContents.Length)]); + OutFile(FilePath,fileOutput); + SetStatus(VM,"Revert"); + } + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Modes --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public void Approving_Action(object sender, EventArgs e) { + SetMode("Approving"); + }// end Approving_Action + + public void IEDS_Action(object sender, EventArgs e) { + SetMode("IEDS"); + }// end IEDS_Action + + public void Validating_Action(object sender, EventArgs e) { + SetMode("Validating"); + }// end Validating_Action + + public void Idle_Action(object sender, EventArgs e) { + SetMode("Idle"); + }// end Idle_Action + + + + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Misc Data --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// + public string[] StandardPRComments = { + "Validation Pipeline Badge",//Pipeline status + "wingetbot run",//Run pipelines + "azp run",//Run pipelines + "AzurePipelines run",//Run pipelines + "Azure Pipelines successfully started running 1 pipeline",//Run confirmation + "The check-in policies require a moderator to approve PRs from the community",//Validation complete + "microsoft-github-policy-service agree",//CLA acceptance + "wingetbot waivers Add",//Any waivers + "The pull request encountered an internal error and has been assigned to a developer to investigate",//IEDS or other error + "Manifest Schema Version: 1.4.0 less than 1.5.0 for ID:",//Manifest depreciation for 1.4.0 + "This account is bot account and belongs to CoolPlayLin",//CoolPlayLin's automation + "This account is automated by Github Actions and the source code was created by CoolPlayLin",//Exorcism0666's automation + "Response status code does not indicate success",//My automation - removal PR where URL failed status check. + "Automatic Validation ended with",//My automation - Validation output might be immaterial if unactioned. + "Manual Validation ended with",//My automation - Validation output might be immaterial if unactioned. + "No errors to post",//My automation - AutoValLog with no logs. + "The package didn't pass a Defender or similar security scan",//My automation - DefenderFail. + "Installer failed security check",//My automation - AutoValLog DefenderFail. + "Sequence contains no elements",//New Sequence error. + "Missing Properties value based on version",//New property detection. + "Azure Pipelines could not run because the pipeline triggers exclude this branch/path"//Pipeline error. + }; + + public string[] WordFilterList = { + "accept_gdpr ", + "accept-licenses", + "accept-license", + "eula", + "downloadarchive.documentfoundation.org", + "paypal" + }; + + public string[] AppsAndFeaturesEntriesList = { + "DisplayName", + "DisplayVersion", + // "Publisher", + "ProductCode", + "UpgradeCode" //, + // "InstallerType" + }; + + public string[] CountrySet = { + "Default", "Warm", "Cool", "Random", "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antigua And Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia And Herzegovina", "Botswana", "Bouvet Island", "Brazil", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cabo Verde", "Cambodia", "Cameroon", "Canada", "Central African Republic", "Chad", "Chile", "China", "Colombia", "Comoros", "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Curacao", "Cyprus", "Czechia", "Cöte D'Ivoire", "Democratic Republic Of The Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Eswatini", "Ethiopia", "Fiji", "Finland", "France", "French Polynesia", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Greece", "Grenada", "Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Holy See (Vatican City State)", "Honduras", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "North Macedonia", "Norway", "Oman", "Pakistan", "Palau", "Palestine", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Qatar", "Republic Of The Congo", "Romania", "Russian Federation", "Rwanda", "Saint Kitts And Nevis", "Saint Lucia", "Saint Vincent And The Grenadines", "Samoa", "San Marino", "Sao Tome And Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Korea", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Sweden", "Switzerland", "Syrian Arab Republic", "Tajikistan", "Tanzania", " United Republic Of", "Thailand", "Togo", "Tonga", "Trinidad And Tobago", "Tunisia", "Turkey", "Turkmenistan", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "Yemen", "Zambia", "Zimbabwe", "Ã…land Islands" + }; + + public string[] MagicStrings = { + "Installer Verification Analysis Context Information:", //0 + "[error] One or more errors occurred.", //1 + "[error] Manifest Error:", //2 + "BlockingDetectionFound", //3 + "Processing manifest", //4 + "SQL error or missing database", //5 + "Error occurred while downloading installer" //6 + }; + + public string[] MagicLabels = { + "Validation-Defender-Error", //0 + "Binary-Validation-Error", //1 + "Error-Analysis-Timeout", //2 + "Error-Hash-Mismatch", //3 + "Error-Installer-Availability", //4 + "Internal-Error", //5 + "Internal-Error-Dynamic-Scan", //6 + "Internal-Error-Manifest", //7 + "Internal-Error-URL", //8 + "Manifest-AppsAndFeaturesVersion-Error", //9 + "Manifest-Installer-Validation-Error", //10 + "Manifest-Validation-Error", //11 + "Possible-Duplicate", //12 + "PullRequest-Error", //13 + "URL-Validation-Error", //14 + "Validation-Domain", //15 + "Validation-Executable-Error", //16 + "Validation-Hash-Verification-Failed", //17 + "Validation-Missing-Dependency", //18 + "Validation-Merge-Conflict", //19 + "Validation-No-Executables", //20 + "Validation-Installation-Error", //21 + "Validation-Shell-Execute", //22 + "Validation-Unattended-Failed", //23 + "Policy-Test-1.2", //24 + "Policy-Test-2.3", //25 + "Validation-Completed", //26 + "Validation-Forbidden-URL-Error", //27 + "Validation-Unapproved-URL", //28 + "Validation-Retry", //29 + "Needs-Author-Feedback",//30 + "Policy-Test-2.3" //31 + }; + + public string[] HourlyRun_PresetList = { + "Defender", + "ToWork2" + }; + }// end WinGetApprovalPipeline +}// end WinGetApprovalNamespace + + + + +//////////////////////////////////////////====================//////////////////////////////////////// +//////////////////////====================--------------------====================//////////////////// +//===================-------------------- Miscellany --------------------==================== +//////////////////////====================--------------------====================//////////////////// +//////////////////////////////////////////====================//////////////////////////////////////// +/* Original drawing +................................................................................................................................................................................................................................................ +WinGet Approver - Build 365 +....VMs..................................................................................................................................................................................................................................... +....................................................................................................................|......--------------------......--------------------......---------------------------------------------..... +....VM..|.Status.|.Version.|.OS.|.Package.|.PR.|.RAM.............................|......|...Blocking...|......|..Feedback..|.....|..................139040....................|..... +....600.|.Ready.|.99.....|.Win10..|.............|.......|......................................|......|___Issue___|.....|__________|.....|_________________________|...... +....601.|.Ready.|.99.....|.Win10..|.............|.......|......................................|......--------------------......--------------------......--------------------......--------------------..... +....602.|.Ready.|.99.....|.Win10..|.............|.......|......................................|......|......Retry.....|......|...Changes....|.....|.....Check....|.....|...Approved..|..... +....603.|.Ready.|.99.....|.Win10..|.............|.......|......................................|......|__________|......|_Requested_|.....|__Installer_|.....|__________|..... +....604.|.Ready.|.99.....|.Win10..|.............|.......|......................................|......--------------------......--------------------......--------------------......--------------------..... +....605.|.Ready.|.99.....|.Win10..|.............|.......|......................................|......|....Waiver....|......|.....Squash....|.....|.....Project....|.....|.....Closed....|..... +....................................................................................................................|......|__________|......|__________|......|__________|.....|__________|..... +__________________________________________________________|_____________________________________________________________ +....Approvals............................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................. +|.Timestp..|.PR#.......|.PackageIdentifier......................|.PRVersion........|.A.|.R.|.W.|.F.|.I.|.D.|.V.|.ManifestVer.........|.OK.|.......................................... +|.15:18:10.|.138430.|.JetBrains.WebStorm.EAP..........|.241.11761.28..|.A.|.R.|.W.|.1.|.I.|.D.|.999.|.241.10840.2......|.OK.|.......................................... +|.15:18:18.|.138431.|.Fly-io.flyctl.................................|.0.1.148............|.A.|.R.|.W.|.0.|.I.|.D.|.999.|.0.1.147..............|.OK.|......................................... +|.15:18:32.|.138435.|.JosephFinney.Text-Grab...........|.4.1.3.................|.A.|.R.|.W.|.0.|.I.|.D.|.999.|.4.1.0..................|.OK.|......................................... +|.15:18:42.|.138437.|.AdGuard.AdGuardVPN..............|.2.2.1251.0.......|.A.|.R.|.W.|.0.|.-.|.D.|.999.|.2.2.1233.0.........|.OK.|......................................... +|.15:18:52.|.138438.|.VSCodium.VSCodium.Insiders..|.1.86.0.24039....|.A.|.R.|.W.|.0.|.I.|.D.|.999.|.1.86.0.24038.....|.OK.|......................................... +|.15:19:31.|.138440.|.Rustlang.Rust.MSVC...................|.1.76.0..............|.+.|.R.|.W.|.1.|.I.|.D.|.999.|.1.75.0................|.OK.|........................................ +|.15:19:48.|.138441.|.Rustlang.Rust.GNU.....................|.1.76.0..............|.+.|.R.|.W.|.1.|.I.|.D.|.999.|.1.75.0................|.OK.|........................................ +________________________________________________________________________________________________________________________ +......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------..... +......|..Approving.|......|.......IEDS......|.....|.......Idle.......|.....|..Validating..|.....|.....Button....|......|.....Button....|.....|.....Button....|.....|......Reset.....|..... +......|__________|......|__________|......|__________|.....|__________|......|__________|......|__________|......|__________|.....|__Vedant__|..... +......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------..... +......|...Installer...|......|....Installer...|......|.....Merge....|.....|...Network..|.....|One.Manifest|......|...Package...|.....|WorkSearch.|.....|..Timeclock..|..... +......|_Not_Silent|......|__Missing__|.....|_Conflicts__|.....|__Blocker__|......|__Per_PR___|......|___Url____|......|__________|.....|__________|..... +......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------......--------------------..... +......|..Defender..|......|.Automation|.....|.....Button....|.....|.....Button....|.....|.....Button....|......|.....Button....|.....|.....Button....|.....|.....Button....|..... +......|___Fail____|......|___Block___|.....|__________|.....|__________|......|__________|......|__________|......|__________|.....|__________|..... +................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................ +*/ +/* A PR's journey through the WinGet pipeline system: +- PR committed - manually or with a tool. +- PR pulled into Automatic Validation Pipeline. + - On fail, add label. + - Pipeline errors - these often have the label Internal-Error or Internal-Error-Dynamic-Scan. The former are usually ephemeral and disappear on retry. The latter are sometimes ephemeral, and sometimes happen to a package on every run - it's far enough along that the package can be manually validated. Manual validation might still fail on one of the following errors, and has to manually update labels and comment in the PR similar to how the pipeline would. + - PR and Manifest errors - these can often be remediated in PR, then retry and pass. + - Defender and scan errors - some can linger in the fail-and-remediation state ("Defender Loop") for an extended duration before passing. + - Installer and application errors - these can sometimes be remediated in PR, by adding data such as switches or dependencies. If so, retry and pass. + - Legal and political issues - these can be hard blockers. Some might need the manifest schema to be updated with additional fields, and those fields populated with legal agreements, before the PR can pass. + - Unfortunately, for some PRs, the next step is closure. The path to this step isn't always straightforward, and some linger here for an extended duration as well. Closed PRs can be reopened for a good reason. Feel free to ask. + - On pass, continue. +- SDL checks occur at some point. These don't take very long, unless you're waiting on the PR. +- PR pends for community and moderator review. (Review "pool") + - On fail, add comment. + - Installer: Duplicate PRs, version mismatches between manifest and registry, different installer types. + - Locale: Incorrect PackageName, ReleaseNotes not in locale's natural language, PackageUrl not leading to InstallerUrl, and other errata. + - On pass, continue. +- PR pends for moderator approval. (Approval pipeline) + - On fail, add comment. + - Auth fail - Package has Auth strictness of "must" and submitter isn't on the list. Ask someone who IS on the list for approval. + - Version parameter fail - the number of version parameters (data between dots, such as major and minor version numbers) has changed. This is common for some developers, and an exception list is currently manually implemented. + - Version number contains spaces fail - this check needs to be reimplemented. It was meant to catch an automation bug adding spaces after the dots in PackageVersion numbers. + - Review fail - PackageIdentifier has review notes blocking approval. Post them. + - Agreements fail - PackageIdentifier has EULA but PR is missing the AgreementsUrl. Post this. + - Words filter fail - Manifest contains words (such as "EULA") that are restricted, because they might indicate another check has failed or been skipped. Post about these. + - AnF fail - missing the "AppsAndFeaturesEntries" entry but present in previous PR. This check needs to be updated. Usually only block on DisplayVersion, but also note if there are more than 3 of these missing. + - InstallerUrl contains PackageVersion - Doesn't block but is informative. Should be rebuilt to include a vanity URL detector, and also detect if the InstallerUrl shows previous version. + - Files removed - if the PR has more than 2 files, and it's not a removal, check if the previous version had at least as many files. To prevent a PR from leaving out localization files from the previous version. + - OR Last Version Remaining fail - If it's a removal, check if it's the highest version. If it is, ask if it's available from another location. + - On pass, approve. +- PR pends for publish pipeline. + - Publish converts repo to an XML database and compresses into MSIX. + - Uploads to storage location, refreshes CDN. +- Package is available to users. +(Goal is to make this have 1 remediation loop instead of 3.) +*/ diff --git a/Tools/ManualValidationPipeline.csv b/Tools/ManualValidationPipeline.csv new file mode 100644 index 0000000000000..a285c60f818ba --- /dev/null +++ b/Tools/ManualValidationPipeline.csv @@ -0,0 +1,303 @@ +"PackageIdentifier","gitHubUserName","authStrictness","authUpdateType","autoWaiverLabel","versionParamOverrideUserName","versionParamOverridePR","code200OverrideUserName","code200OverridePR","AgreementOverridePR","AgreementUrl","reviewText" +"2BrightSparks.SyncBackFree","2BrightSparks","should","auto","","","","","","","", +"2BrightSparks.SyncBackPro","2BrightSparks","should","auto","","","","","","","", +"2BrightSparks.SyncBackSE","2BrightSparks","should","auto","","","","","","","", +"AdGuard.dnsproxy","","","","Validation-Executable-Error","","","","","","", +"aiko-chan-ai.DiscordBotClient","aiko-chan-ai","should","auto","","","","","","","", +"AlexanderPro.SmartSystemMenu","AlexanderPro","should","manual","","","","","","","", +"amrdeveloper.gitql","AmrDeveloper","should","manual","","","","","","","", +"Anki.Anki","","","","","fabio-muramatsu","","","","","", +"AntoineAflalo.SoundSwitch","","","","","Belphemur","","","","","", +"ApeCloud.kbcli","apecloud-bot","should","manual","","","","","","","", +"aquaproj.aqua","suzuki-shunsuke","should","auto","","","","","","","", +"ART.ART","","","","Policy-Test-2.3","","","","","","", +"Aserto.DSLoad","","","","Validation-Executable-Error","","","","","","", +"Aserto.Topaz","gertd","must","manual","","","0","","0","0","", +"ast-grep.ast-grep","","","","Validation-Executable-Error","","","","","","", +"Astronomer.Astro","kushalmalani/neel-astro","should","manual","","","","","","","", +"BakkesMod.BakkesMod","BakkesMod","must","manual","","","","","","","", +"beeradmoore.dlss-swapper","beeradmoore","should","manual","","","","","","","", +"blacktop.ipsw","blacktop","should","auto","","","","","","","", +"blacktop.ipswd","blacktop","should","auto","","","","","","","", +"BlenderFoundation.Blender.LTS","EGuillemot","should","auto","","","","","","","", +"bloznelis.typioca","bloznelis","should","auto","","","","","","","", +"BlueBubbles.BlueBubbles","","","","Validation-Installation-Error","","","","","","", +"BrettMayson.HEMTT","","","","Validation-Executable-Error","","","","","","", +"Brows.App","kyourek","should","manual","","","","","","","", +"c3er.mdview","c3er","should","manual","","","","","","","", +"Chocolatey.Chocolatey","pauby/gep13/choco-bot","must","manual","","","","","","","", +"chrisant996.Clink","chrisant996","should","manual","","","","","","","", +"ClassWidgets.ClassWidgets","","must","manual","","","","","","","", +"Coder.Coder","cdrci","should","manual","","","","","","","", +"CodingWondersSoftware.DISMTools.Stable","CodingWonders","should","auto","","","","","","","", +"Coloryr.ColorMC","Coloryr","should","manual","","","","","","","", +"craftablescience.VPKEdit","craftablescience","should","manual","","","","","","","", +"creativeprojects.resticprofile","","","","Validation-Executable-Error","","0","","0","0","", +"DanielMcGuireCorporation.MathBotCLI","DanielLMcGuire","should","manual","","","","","","","", +"DanielMcGuireCorporation.SimpleBrowser","DanielLMcGuire","should","manual","","","","","","","", +"Dapr.CLI","dapr-bot","should","manual","","","","","","","", +"Datadog.Agent","robot-github-winget-datadog-agent","should","auto","","","0","","0","0","", +"Devolutions.Launcher","devolutionsbot","should","manual","","","","","","","", +"Devolutions.RemoteDesktopManagerAgent","devolutionsbot","should","manual","","","","","","","", +"DoltHub.Dolt","coffeegoddd","should","manual","","","","","","","", +"Doppler.doppler","doppler-bot","should","manual","","","","","","","", +"ducaale.xh","ducaale","should","manual","Validation-Executable-Error","","","","","","", +"dundee.gdu","dundee","should","manual","","","0","","0","0","", +"dustinblackman.oatmeal","dustinblackman","should","manual","","","","","","","", +"DVSTSEOOD.QOps","qops-hub","should","manual","Validation-No-Executables","","","","","","", +"DuckStudio.FufuTools","DuckDuckStudio/Luna-Grace/fjwxzde","must","","","","","","","", +"DuckStudio.FufuDevTools","DuckDuckStudio/Luna-Grace/fjwxzde","must","","","","","","","", +"DuckStudio.ChineseGit","DuckDuckStudio/Luna-Grace/fjwxzde","must","","","","","","","", +"DuckStudio.GitHubLabelsManager","DuckDuckStudio","must","","","","","","","", +"DuckStudio.GitHubView","DuckDuckStudio","must","","","","","","","", +"DuckStudio.GitHubView.Nightly","DuckDuckStudio","must","","","","","","","", +"DuckStudio.Sundry","DuckDuckStudio","must","","","","","","","", +"EFIBootEditor.EFIBootEditor","EFIBootEditorBot","should","auto","","","","","","","", +"EliWeitzman.ETT","eliweitzman","should","auto","","","","","","","", +"Emurasoft.EmEditor","yutakaemura","should","auto","","","","","","","", +"ErikAraojo.FintX","namigop","should","manual","","","","","","","", +"erikbra.grate","erikbra","should","manual","","","","","","","", +"Ferdium.Ferdium","Alphrag","should","auto","","","","","","","", +"Ferdium.Ferdium.Nightly","Alphrag","should","auto","","","","","","","", +"File-New-Project.EarTrumpet","riverar","must","manual","","","","","","","", +"Fort.Firewall","","","","","","Emi-Emi-Emi","139421","","","", +"FOSSA.FOSSA-cli","","","","Validation-Executable-Error","","","","","","", +"FreeDV.FreeDV","","","","","fancybody","","","","","", +"G0rocks.Cab","G0rocks","should","manual","","","0","","0","0","", +"GalvanizeInc.GalvanizeCirrus","andrewsingley-glv","should","auto","","","","","","","", +"Genivia.ugrep","genivia-inc","should","manual","Validation-Executable-Error","","0","","0","0","", +"Genivia.ugrep","genivia-inc","should","auto","Validation-Executable-Error","","","","","","", +"GiulioSorrentino.astroni","numerunix","should","auto","Validation-No-Executables","","","","","","", +"GiulioSorrentino.Backgrounds","numerunix","should","auto","Validation-No-Executables","","","","","","", +"GiulioSorrentino.BackgroundsOtto","numerunix","should","auto","Validation-No-Executables","","","","","","", +"GiulioSorrentino.CBriscola.WPF","numerunix","should","auto","","","","","","","", +"GiulioSorrentino.numeronesfortuneinavalonia ","numerunix","should","auto","Validation-No-Executables","","","","","","", +"GiulioSorrentino.WinDateFrom","numerunix","should","auto","","","","","","","", +"GiulioSorrentino.wxBriscola","numerunix","should","manual","Waived-Validation-Executable-Error","","0","","0","0","", +"GNU.Nano","","","","Validation-Executable-Error","","","","","","", +"goplus.gop","cpunion","should","auto","Validation-Executable-Error","","","","","","", +"goreleaser.goreleaser","caarlos0","should","auto","Validation-Executable-Error","","","","","","", +"goreleaser.goreleaser-pro","caarlos0","should","auto","Validation-Executable-Error","","","","","","", +"GorillaDevs.Ferium","","","","Validation-Executable-Error","","","","","","", +"Guilded.Guilded","","","","","Always Fails Due To Spaces In Version.","","","","","", +"Gyan.FFmpeg","","","","","BiosPlus","","","","","", +"h3poteto.whalebird-desktop","itsAdee","should","auto","","","","","","","", +"Hashicorp.Nomad","","","","Validation-Executable-Error","","0","","0","0","", +"haskell.cabal","","","","Validation-Executable-Error","","","","","","", +"HiroshibaKazuyuki.VOICEVOX","","","","Validation-Executable-Error","","","","","","", +"HiroshibaKazuyuki.VOICEVOX.CPU","","","","Validation-Executable-Error","","","","","","", +"hrkfdn.ncspot","","","","Validation-Executable-Error","","0","","0","0","", +"IcoFXSoftware.icofx","Dvd-Znf","should","auto","","","","","","","", +"IDRIX.VeraCrypt","","","","","","0","","0","147744","https://veracrypt.fr/en/VeraCrypt%20License.html","" +"igoogolx.lux","igoogolx","should","auto","","","","","","","", +"Insomnia.Inso","","","","Validation-Executable-Error","","","","","","", +"Intel.FortranCompiler","lars-nvhgroup","should","manual","","","0","","0","140928","https://cdrdv2-public.intel.com/777700/intel-end-user-license-agreement-for-developer-tools-version-april-2023.pdf","" +"Intel.oneMKL","","","","","","0","","0","140741","", +"IPEP.Scantailor-Experimental","plzombie","should","auto","","","","","","","", +"iQIYI.iQIYI","kingcean","should","auto","","","","","","","", +"Istio.Istio","ateoi","should","manual","","","","","","","", +"Jackett.Jackett","ilike2burnthing","should","auto","","","","","","","", +"JAMSoftware.JAMSoftware.UltraSearch","JAMSoftwareAutomatedTasks","should","auto","","Daniel-Tr","","","","","", +"JAMSoftware.TreeSize","JAMSoftwareAutomatedTasks","should","auto","","Daniel-Tr","","","","","", +"JanDeDobbeleer.OhMyPosh","JanDeDobbeleer","must","manual","","","","","","","", +"Japplis.AntCommander.Personal","japplis","should","manual","","","","","","","", +"Japplis.AntCommander.Pro","japplis","should","manual","","","","","","","", +"Japplis.ClipboardHistory","japplis","should","manual","","","","","","","", +"Japplis.ClipboardHistory.Pro","japplis","should","manual","","","","","","","", +"Japplis.ControlDashboard","japplis","should","manual","","","","","","","", +"Japplis.ControlDashboard.Pro","japplis","should","manual","","","","","","","", +"Japplis.Decoration","japplis","should","manual","","","","","","","", +"Japplis.DesktopWatchmaker","japplis","should","manual","","","","","","","", +"Japplis.Dictaphone","japplis","should","manual","","","","","","","", +"Japplis.Discotheek","japplis","should","manual","","","","","","","", +"Japplis.M2RepoCleaner","japplis","should","manual","","","","","","","", +"Japplis.Pastel","japplis","should","manual","","","","","","","", +"Japplis.PosterFont","japplis","should","manual","","","","","","","", +"Japplis.PosterFont.Light","japplis","should","manual","","","","","","","", +"Japplis.PostOnScreen.Pro","japplis","should","manual","","","","","","","", +"Japplis.ScreenHighlighter","japplis","should","manual","","","","","","","", +"Japplis.SheetStats","japplis","should","manual","","","","","","","", +"Japplis.SheetViewer","japplis","should","manual","","","","","","","", +"Japplis.Toolbox","japplis","should","manual","","","","","","","", +"Japplis.Toolbox.Pro","japplis","should","manual","","","","","","","", +"Japplis.TreeDataExplorer","japplis","should","manual","","","","","","","", +"Japplis.Watch","japplis","should","manual","","","","","","","", +"Japplis.Watch.Pro","japplis","should","manual","","","","","","","", +"Japplis.WebsiteOptimizer","japplis","should","manual","","","","","","","", +"JesseDuffield.Lazydocker","","","","Validation-Executable-Error","","","","","","", +"JetBrains.*","","","","","SpecterShell","","","","","", +"junegunn.fzf","junegunn","should","auto","","","","","","","", +"kairoaraujo.tufie","kairoaraujo","should","auto","","","","","","","", +"Keboola.KeboolaCLI","KeboolaAsCodeBot","should","auto","","","","","","","", +"kevinboss.port","kevinboss","should","manual","","","","","","","", +"KhronosGroup.VulkanSDK","","","","","","0","","0","139478","", +"Kingsoft.KingsoftPDF","","","","","","0","","0","139290","", +"kramo.Cartridges","","","","","kbdharun","","","","","", +"krishisrani.appel","krishisrani61","should","auto","","","","","","","", +"Kubernetes.kwok","","","","Validation-Executable-Error","","0","","0","0","", +"Lenovo.SystemUpdate","philjorgensen","should","auto","","","","","","","", +"Libretro.RetroArch","fpscan","should","auto","","","","","","","", +"lin-ycv.EverythingPowerToys","lin-ycv","should","auto","","","","","","","", +"LinwoodCloud.Butterfly","","","","Validation-Executable-Error","","","","","","", +"LizardByte.Sunshine","LizardByte-bot","should","auto","","","","","","","", +"LutzRoeder.Netron","lutzroeder","should","auto","","","","","","","", +"lycheeverse.lychee","","","","Validation-Executable-Error","","","","","","", +"mar10.stressor","mar10","should","auto","","","","","","","", +"maximmax42.CustomRP","maximmax42","should","manual","","","","","","","", +"meshmakers.octo-cli","","","","Validation-Executable-Error","","","","","","", +"MichalStrehovsky.bflat","MichalStrehovsky","should","manual","","","0","","0","0","","" +"Microsoft.Accessibility","DaveTryon","must","manual","","","","","","","", +"Microsoft.AccessibilityInsights","DaveTryon","must","manual","","","","","","","", +"Microsoft.Azd","azure-sdk","should","auto","","","","","","","", +"Microsoft.Azure.QuickReview","cmendible","should","auto","","","","","","","", +"Microsoft.AzureCLI","(Microsoft)","should","auto","","","","","","","", +"Microsoft.AzureDataStudio","(Microsoft)/erpett/Charles-Gagnon","must","manual","","","","","","","", +"Microsoft.DevHome","(Microsoft)/cinnamon-msft","should","auto","","","","","","","", +"Microsoft.devtunnel","","","","Validation-Executable-Error","","","","","","", +"Microsoft.DotNet","(Microsoft)/mthalman/dotnet-winget-bot","must","manual","","","","","","","", +"Microsoft.Git","(Microsoft)","should","auto","","","","","","","", +"Microsoft.PIX","sfreed141","should","manual","","","0","","0","146955","https://aka.ms/pix-eula-april2024","" +"Microsoft.PowerAutomateDesktop","","","","","","0","","0","139648","", +"Microsoft.PowerBI.DesktopReportServer","","","","","","0","","0","139341","", +"Microsoft.PowerShell","(Microsoft)/anamnavi","must","manual","","","","","","","", +"Microsoft.PowerShell.Previdew","(Microsoft)/anamnavi","must","manual","","","","","","","", +"Microsoft.PowerToys","(Microsoft)/crutkas/consvc","must","manual","","","","","","","", +"Microsoft.Sqlcmd","(Microsoft)","should","auto","","","","","","","", +"Microsoft.SQLServer.2012.NativeClient","","","","","","0","","0","139454","", +"Microsoft.SQLServer.2019.Developer","","","","","","0","","0","139457","", +"Microsoft.SQLServer.2019.Express","","","","","","0","","0","139456","", +"Microsoft.SQLServerManagementStudio","(Microsoft)","must","manual","","","","","","","", +"Microsoft.VisualStudio","(Microsoft)/edwardskrod","must","manual","","","","","","","", +"Microsoft.VisualStudioCode","(Microsoft)/lszomoru","must","manual","","","","","","","", +"Microsoft.VisualStudioCode.CLI","(Microsoft)/lszomoru","must","manual","","","","","","","", +"Microsoft.VisualStudioCode.Insiders","(Microsoft)/lszomoru","must","manual","","","","","","","", +"Microsoft.VisualStudioCode.Insiders.CLI","(Microsoft)/lszomoru","must","manual","","","","","","","", +"Microsoft.WindowsTerminal","(Microsoft)/consvc/DHowett","must","manual","","","","","","","", +"Momento.cli","momento-github-actions-machine-user","should","auto","","","","","","","", +"Mozilla.Firefox","","","","","krystofkrticka","","","","","", +"mpv.net","","","","Validation-Installation-Error","","","","","","", +"nektos.act","nektos-ci","should","auto","","","","","","","", +"NelsonNumericalSoftware.Nelson","Nelson-numerical-software","should","auto","","","","","","","", +"Neovim.Neovim.Nightly","nvim-winget","should","auto","","","","","","","", +"Nervatura.Nervatura","nervatura","should","auto","","","","","","","", +"NewTek.NDI5Runtime","","","","Validation-No-Executables","","0","","0","0","", +"nginxinc.nginx-prometheus-exporter","nginx-bot","should","auto","","","","","","","", +"NhekoReborn.Nheko","","","","","","0","","0","139455","", +"NI.ni-daqmx","lars-nvhgroup","should","manual","","","0","","0","140243","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf", +"NI.ni-packagemanager","lars-nvhgroup","should","manual","","","0","","0","139458","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf", +"NI.ni-pxiplatformservices","lars-nvhgroup","should","manual","","","0","","0","140233","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf", +"NI.ni-serial","lars-nvhgroup","should","manual","","","0","","0","140987","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf", +"NI.ni-systemconfiguration","lars-nvhgroup","should","manual","","","0","","0","140989","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf","" +"NI.ni-visa","lars-nvhgroup","should","manual","","","0","","0","140984","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf","" +"NI.ni-xnet","lars-nvhgroup","should","manual","","","0","","0","140241","https://www.ni.com/content/dam/web/pdfs/legal/software_license_agreement_en.pdf", +"NickeManarin.ScreenToGif","","","","","Trenly","","","","","", +"nkdAgility.AzureDevOpsMigrationTools","MrHinsh","should","auto","","","","","","","", +"nkdAgility.AzureDevOpsMigrationTools.Preview","MrHinsh","should","auto","","","","","","","", +"nomic.gpt4all","","","","","","0","","0","139459","", +"NoMoreFood.PuTTY-CAC","NoMoreFood","should","auto","","","","","","","", +"NumeRe.NumeRe","numeredev","should","auto","","","","","","","", +"octobuild.octobuild","slonopotamus","should","auto","","","","","","","", +"OleksisFraga.PythonLauncher","oleksis","should","auto","","","","","","","", +"OpenTofu.Tofu","","","","Validation-Executable-Error","","","","","","", +"pedrojreis.scrumchrono","pedrojreis","should","manual","","","0","","0","0","", +"Peppy.Osu!","","","","Validation-No-Executables","","","","","","", +"Phoner.PhonerLite","PhonerLite","should","auto","","","","","","","", +"Pikcube.OrangeJuiceModMaker","Pikcube","should","auto","","","","","","","", +"pit-ray.win-vind","pit-ray","should","auto","","","","","","","", +"pizzaboxer.Bloxstrap","pizzaboxer","should","auto","","","","","","","", +"pnpm.pnpm","zkochan","should","manual","","","","","","","", +"prefix-dev.pixi","ruben-arts","should","manual","Validation-Executable-Error","","","","","","", +"Princessmortix.Cobalt","princessmortix","should","manual","","","","","","","", +"PRQL.prqlc","","","","Validation-Executable-Error","","","","","","", +"Pulumi.Pulumi","pulumi-bot","should","manual","","","","","","","", +"Pylogmon.pot","Pylogmon","should","manual","","","","","","","", +"qarmin.czkawka.cli","","","","Validation-Executable-Error","","","","","","", +"rink-turksma.IntunePrepTool","rink-turksma","should","manual","","","","","","","", +"robinovitch61.wander","robinovitch61","should","auto","","","","","","","", +"Rohde&Schwarz.SDC.IETDViewPublish","RohdeSchwarz-SDC","should","auto","","","","","","","", +"Rowley.CrossWorks","","","","","","0","","0","139477","", +"rsteube.Carapace","rsteube-bot","should","auto","","","","","","","", +"Ruben2776.PicView","Ruben2776","should","auto","","","","","","","", +"RussellBanks.Komac","russellbanks","must","manual","Policy-Test-1.8","","","","","","", +"RussellBanks.Komac.Nightly","russellbanks","must","manual","Policy-Test-1.8","","","","","","", +"Rustlang.Rust","Rust-Winget-Bot","should","auto","","","","","","","", +"Rustlang.Rust.GNU","Rust-Winget-Bot","should","auto","","","","","","","", +"Rustlang.Rust.MSVC","Rust-Winget-Bot","should","auto","","","","","","","", +"ryanbekhen.nanoproxy","ryanbekhen","should","manual","","","","","","","", +"Rye.Rye","","","","Validation-Unattended-Failed","","","","","","", +"Ryujinx.Ryujinx","Exorcism0666","should","auto","Validation-Executable-Error","","","","","","", +"Ryujinx.Ryujinx.Ava","Exorcism0666","should","auto","Validation-Executable-Error","","","","","","", +"SatDump.SatDump","","","","Validation-Executable-Error","","","","","","", +"Schlaubi.Tonbrett","DRSchlaubi/tonbrett-ci","should","manual","","","","","","","", +"Schuischta.SystemLoadTracker","Schuischta","should","auto","","","0","","0","0","", +"Segger.EmbeddedStudioARM","","","","","","0","","0","139476","", +"Sentry.sentry-cli","","","","Validation-Executable-Error","","","","","","", +"sirredbeard.wslinternals","sirredbeard","should","auto","","","","","","","", +"SKDataAS.ORMCore","skdataas","should","auto","","","","","","","", +"Slonopotamus.Stevedore","slonopotamus","should","auto","","","","","","","", +"Splunk.UniversalForwarder","","","","","","0","","0","139475","", +"stacklok.frizbee","stacklok/stacklokbot","should","auto","","","","","","","", +"stacklok.minder","stacklok/stacklokbot","should","auto","","","","","","","", +"StandardNotes.StandardNotes","russellbanks","must","manual","","","","","","","", +"StefHeyenrath.GitHubReleaseNotes","StefH","should","manual","","","","","","","", +"swri.EverythingToolbar","stnkl","should","auto","","","","","","","", +"SylvainRougeaux.Metatogger","","","","Validation-Shell-Execute","","","","","","", +"t1m0thyj.WinDynamicDesktop","t1m0thyj","must","manual","","","","","","","", +"Tableau.Desktop","","","","","","0","","0","139479","", +"Tableau.PrepBuilder","","","","","","0","","0","139481","", +"Tableau.Public","","","","","","0","","0","139474","", +"Tableau.Reader","","","","","","0","","0","139471","", +"taers232c.GAMADV-XTD3","Exorcism0666","should","manual","","","","","","","", +"tangshimin.MuJing","","","","Validation-Executable-Error","","","","","","", +"Taozuhong.Kangaroo","taozuhong","should","manual","","","","","","","", +"Tauri.create-tauri-app","SpecterShell","should","manual","","","","","","","", +"TechPowerUp.GPU-Z","","","","","","0","","0","0","","Don't process removals. Host only allows package manager user agents to download." +"Tonec.InternetDownloadManager","","","","","","0","","0","0","","Adds patch versions as duplicates of the latest build version. https://github.com/microsoft/winget-pkgs/issues/128340" +"Telegram.TelegramDesktop","","","","","MaanuelMM","","","","","", +"Tencent.Foxmail","","","","Validation-Domain","","0","","0","0","","" +"Tgstation.Server","Cyberboss","should","manual","","","","","","","", +"th-ch.YouTubeMusic","youtube-music-winget","should","manual","","","0","","0","0","", +"ThaUnknown.Miru","ThaUnknown","should","manual","","","","","","","", +"the-sz.Auburn","the-sz","should","manual","","","","","","","", +"the-sz.Banks","the-sz","should","manual","","","","","","","", +"the-sz.Bear","the-sz","should","manual","","","","","","","", +"the-sz.Carroll","the-sz","should","manual","","","","","","","", +"the-sz.Conroe","the-sz","should","manual","","","","","","","", +"the-sz.Doro","the-sz","should","manual","","","","","","","", +"the-sz.FlashBuilder","the-sz","should","manual","","","","","","","", +"the-sz.Homedale","the-sz","should","manual","","","0","","0","0","", +"the-sz.Howard","the-sz","should","manual","","","","","","","", +"the-sz.Lacey","the-sz","should","manual","","","","","","","", +"the-sz.Newfield","the-sz","should","manual","","","","","","","", +"the-sz.Rimhill","the-sz","should","manual","","","","","","","", +"the-sz.Seaside","the-sz","should","manual","","","","","","","", +"the-sz.SkypeFocusFix","the-sz","should","manual","","","","","","","", +"the-sz.Spencer","the-sz","should","manual","","","","","","","", +"the-sz.Trion","the-sz","should","manual","","","","","","","", +"the-sz.Yale","the-sz","should","manual","","","","","","","", +"the-sz.York","the-sz","should","manual","","","","","","","", +"thebookisclosed.ViVeTool","thebookisclosed","must","manual","","","","","","","", +"therealpaulgg.ssh-sync","therealpaulgg","should","manual","","","0","","0","0","", +"tinygo-org.tinygo","","","","Validation-Executable-Error","","","","","","", +"Toit.Jaguar","LeonGungadinMogensen","should","auto","","","","","","","", +"TopalaSoftwareSolutions.SIW","gtopala","should","manual","","","","","","","", +"TortoiseSVN.TortoiseSVN","","","","","PckgrBot","","","","","", +"trzsz.tssh","","","","Validation-Executable-Error","","","","","","", +"twpayne.chezmoi","twpayne","should","manual","","","","","","","", +"Typst.Typst","michidk","should","manual","Validation-Executable-Error","","0","","0","0","", +"vedantmgoyal.sheltasks-cli","vedantmgoyal2009","must","manual","","","","","","","", +"veeam.veeam-agent","","","","","","0","","0","139659","", +"vim.vim","chrisbra","should","manual","","","","","","","", +"vim.vim.nightly","chrisbra","should","manual","Validation-Installation-Error","","","","","","", +"VMware.WorkstationPlayer","","","","","","0","","0","143919","https://docs.vmware.com/en/VMware-Workstation-Player/17.5/rn/vmware-workstation-175-player-release-notes/index.html","" +"VMware.WorkstationPro","","","","","","0","","0","139464","", +"Wasmer.Wasmer","","","","Validation-Executable-Error","","0","","0","0","","" +"WerWolv.ImHex","WerWolv","should","manual","","","","","","","", +"wez.wezterm","wez","should","manual","","","","","","","", +"WHONET.2023","drshtmstry","should","manual","","","","","","","", +"WHTA.Tamara","lars-nvhgroup","must","manual","","","0","","0","139830","", +"Wilfred.difftastic","","","","Validation-Executable-Error","","","","","","", +"xavidop.cxcli","xavidop","should","manual","Validation-Installation-Error","","","","","","", +"XmacsLabs.Mogan","","","","","","0","","0","139462","", +"yetone.OpenAITranslator","yetone","should","manual","","","","","","","", +"Zoom.ZoomRooms","","","","","","0","","0","139461","", diff --git a/Tools/ManualValidationPipeline.ps1 b/Tools/ManualValidationPipeline.ps1 new file mode 100644 index 0000000000000..9d9e09a20409a --- /dev/null +++ b/Tools/ManualValidationPipeline.ps1 @@ -0,0 +1,5694 @@ +#Copyright 2022-2025 Microsoft Corporation +#Author: Stephen Gillie +#Title: Manual Validation Pipeline v3.90.0 +#Created: 10/19/2022 +#Updated: 3/3/2025 +#Notes: Utilities to streamline evaluating 3rd party PRs. + + +$build = 1085 +$appName = "ManualValidationPipeline" +Write-Host "$appName build: $build" +$MainFolder = "C:\ManVal" +$Owner = "microsoft" +$Repo = "winget-pkgs" +$ReposFolder = "C:\repos\$Repo" +#Share this folder with Windows File Sharing, then access it from within the VM across the network, as \\LaptopIPAddress\SharedFolder. For LaptopIPAddress use Ethernet adapter vEthernet (Default Switch) IPv4 Address. +Set-Location $MainFolder + +$ipconfig = (ipconfig) +$remoteIP = ([ipaddress](($ipconfig[($ipconfig | Select-String "vEthernet").LineNumber..$ipconfig.length] | Select-String "IPv4 Address") -split ": ")[1]).IPAddressToString +$RemoteMainFolder = "//$remoteIP/" +$SharedFolder = "$RemoteMainFolder/write" + +$imagesFolder = "$MainFolder\Images" #VM Images folder +$logsFolder = "$MainFolder\logs" #VM Logs folder +$runPath = "$MainFolder\vm\" #VM working folder +$writeFolder = "$MainFolder\write" #Folder with write permissions +$vmCounter = "$MainFolder\vmcounter.txt" +$VMversion = "$MainFolder\VMversion.txt" +$StatusFile = "$writeFolder\status.csv" +$TrackerModeFile = "$logsFolder\trackermode.txt" +$RemoteTrackerModeFile = "$RemoteMainFolder\ManVal\logs\trackermode.txt" +$LogFile = "$MainFolder\misc\ApprovedPRs.txt" +$PeriodicRunLog = "$MainFolder\misc\PeriodicRunLog.txt" +$SharedErrorFile = "$writeFolder\err.txt" +$DataFileName = "$ReposFolder\Tools\ManualValidationPipeline.csv" + +$LabelActionFile = "$ReposFolder\Tools\LabelActions.csv" +$ExitCodeFile = "$ReposFolder\Tools\ExitCodes.csv" +$MsiErrorCodeFile = "$ReposFolder\Tools\MsiErrorCodes.csv" +$AutowaiverFile = "$ReposFolder\Tools\Autowaiver.csv" +$PRStateDataFile = "$ReposFolder\Tools\PRStateFromComments.csv" +$PRQueueFile = "C:\manval\misc\PRQueue.txt" +$PRExcludeFile = "C:\manval\misc\PRExclude.txt" + +$Win10Folder = "$imagesFolder\Win10-Created053025-Original" +$Win11Folder = "$imagesFolder\Win11-Created061225-Original" + +$GitHubBaseUrl = "https://github.com/$Owner/$Repo" +$GitHubContentBaseUrl = "https://raw.githubusercontent.com//$Owner/$Repo" +$GitHubApiBaseUrl = "https://api.github.com/repos/$Owner/$Repo" +$ADOMSBaseUrl = "https://dev.azure.com/shine-oss" +$ADOMSGUID = "8b78618a-7973-49d8-9174-4360829d979b" + +$CheckpointName = "Validation" +$VMUserName = "user" #Set to the internal username you're using in your VMs. +$GitHubUserName = "stephengillie" +$SystemRAM = (Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb +$Host.UI.RawUI.WindowTitle = "Utility" +$GitHubRateLimitDelay = 0.2 #seconds + +$PRRegex = "[0-9]{5,6}" +$hashPRRegex = "[#]"+$PRRegex +$hashPRRegexEnd = $hashPRRegex+"$" +$colonPRRegex = $PRRegex+"[:]" +#"Manual Validation results for $PackageIdentifier version $PackageVersion on $Date" + +<# +$package = "clang-uml" +$a = Get-ARPTable |where {$_.DisplayName -match $package} +$a.displayversion +$b = &"C:\Program Files\clang-uml\bin\clang-uml.exe" "--version" +$a.DisplayVersion -match $b +$a.DisplayVersion -match $b -join " " +$b -match $a.DisplayVersion +#> + +#region Data +[array]$DisplayVersionExceptionList = "Netbird.Netbird", +"ppy.osu" + +#$MagicStrings = @{} +[array]$MagicStrings = "Installer Verification Analysis Context Information:", #0 +"[error] One or more errors occurred.", #1 +"[error] Manifest Error:", #2 +"BlockingDetectionFound", #3 +"Processing manifest", #4 +"SQL error or missing database", #5 +"Error occurred while downloading installer", #6 +"Specified hash doesn't match", #7 +"[error] Manifest is invalid", #8 +"Result: Failed", #9 +"[error] Manifest Warning:",#10 +"[error] Manifest:",#11 +"Exception Message",#12 +"[error] "#13 + +$Actions = @{} +$Actions.Approved = "Approved" +$Actions.Blocking = "Blocking" +$Actions.Feedback = "Feedback" +$Actions.Retry = "Retry" +$Actions.Manual = "Manual" +$Actions.Closed = "Closed" +$Actions.Project = "Project" +$Actions.Squash = "Squash" +$Actions.Waiver = "Waiver" + +$Labels = @{} + +$Labels.403 = "Validation-Forbidden-URL-Error" +$Labels.404 = "Validation-404-Error" +$Labels.AGR = "Agreements" +$Labels.ANA = "Author-Not-Authorized" +$Labels.ANF = "Manifest-AppsAndFeaturesVersion-Error" +$Labels.APP = "Azure-Pipeline-Passed" +$Labels.BI = "Blocking-Issue" +$Labels.BMM = "Bulk-Modify-Metadata" +$Labels.BVE = "Binary-Validation-Error" +$Labels.CLA = "Needs-CLA" +$Labels.CR = "Changes-Requested" +$Labels.DI = "DriverInstall" +$Labels.EAT = "Error-Analysis-Timeout" +$Labels.EHM = "Error-Hash-Mismatch" +$Labels.EIA = "Error-Installer-Availability" +$Labels.HVF = "Validation-Hash-Verification-Failed" +$Labels.HVL = "Highest-Version-Remaining" +$Labels.HVR = "Highest-Version-Removal" +$Labels.HW = "Hardware" +$Labels.IE = "Internal-Error" +$Labels.IEDS = "Internal-Error-Dynamic-Scan" +$Labels.IEM = "Internal-Error-Manifest" +$Labels.IEU = "Internal-Error-URL" +$Labels.IOD = "Interactive-Only-Download" +$Labels.IOI = "3AInteractive-Only-Installer" +$Labels.LBI = "License-Blocks-Install" +$Labels.LVR = "Last-Version-Removal" +$Labels.MA = "Moderator-Approved" +$Labels.MIVE = "Manifest-Installer-Validation-Error" +$Labels.MMC = "Manifest-Metadata-Consistency" +$Labels.MV = "Manually-Validated" +$Labels.MVE = "Manifest-Validation-Error" +$Labels.NA = "Needs-Attention" +$Labels.NAF = "Needs-Author-Feedback" +$Labels.NB = "Network-Blocker" +$Labels.NM = "New-Manifest" +$Labels.NMM = "Needs-Manual-Merge" +$Labels.NP = "New-Package" +$Labels.NR = "Needs-Review" +$Labels.NRA = "No-Recent-Activity" +$Labels.NSA = "Internal-Error-NoSupportedArchitectures" +$Labels.OUF = "Validation-Open-Url-Failed" +$Labels.PD = "Possible-Duplicate" +$Labels.PF = "Project-File" +$Labels.PRE = "PullRequest-Error" +$Labels.PT12 = "Policy-Test-1.2" +$Labels.PT23 = "Policy-Test-2.3" +$Labels.PT27 = "Policy-Test-2.7" +$Labels.RB = "Reboot" +$Labels.RET = "Retry-1" +$Labels.SA = "Scripted-Application" +$Labels.UF = "Unexpected-File" +$Labels.UVE = "URL-Validation-Error" +$Labels.VC = "Validation-Completed" +$Labels.VCR = "Validation-Certificate-Root" +$Labels.VD = "Validation-Domain" +$Labels.VDE = "Validation-Defender-Error" +$Labels.VEE = "Validation-Executable-Error" +$Labels.VER = "Manifest-Version-Error" +$Labels.VHE = "Validation-HTTP-Error" +$Labels.VIE = "Validation-Installation-Error" +$Labels.VMC = "Validation-Merge-Conflict" +$Labels.VMD = "Validation-Missing-Dependency" +$Labels.VNE = "Validation-No-Executables" +$Labels.VR = "Validation-Retry" +$Labels.VSA = "Validation-Skip-Automations" +$Labels.VSE = "Validation-Shell-Execute" +$Labels.VSS = "Validation-SmartScreen-Error" +$Labels.VUF = "Validation-Unattended-Failed" +$Labels.VUU = "Validation-Unapproved-URL" + + +$PushMePRWho = "Author,MatchString`nspectopo,Mozilla.Firefox`ntrenly,Standardize formatting`nSpecterShell,Mozilla.Thunderbird" | ConvertFrom-Csv + +$QueueInputs = "No suitable installer found for manifest", #0 +"Caught std::exception: bad allocation", #1 +"exit code: -1073741515",#2 +"exit code: -1978335216"#3 + +#endregion + +#First tab +Function Get-TrackerVMRunTracker { + param( + [switch]$RunLatch + ) + $HourLatch = $False + while ($True) { + $Host.UI.RawUI.WindowTitle = "Orchestration" + #Run once an hour at ~20 after. + if (([int](get-date -f mm) -eq 20) -OR ([int](get-date -f mm) -eq 50)) { + $HourLatch = $True + } + if ($RunLatch -eq $False) { + $HourLatch = $False + } + if ($HourLatch) {#Hourly Run functionality + Get-ScheduledRun + $HourLatch = $False + } + + Clear-Host + $GetStatus = Get-Status + $GetStatus | Format-Table; + $VMRAM = Get-ArraySum $GetStatus.RAM + $ramColor = "green" + $valMode = Get-TrackerMode + +(Get-Status).vm | %{$path = "C:\ManVal\vm\$_\manifest\Package.yaml";(gc $path) -replace "ManifestVersion: 1..0$","ManifestVersion: 1.10.0" | out-file $path} + + if ($VMRAM -gt ($SystemRAM*0.5)) { + $ramColor = "red" + } elseif ($VMRAM -gt ($SystemRAM*.25)) { + $ramColor = "yellow" + } + Write-Host "VM RAM Total: " -nonewline + Write-Host -f $ramColor $VMRAM + $timeClockColor = "red" + if (Get-TimeRunning) { + $timeClockColor = "green" + } + $PRQueueCount = Get-PRQueueCount + Write-Host -nonewline "Build: $build - Hours worked: " + Write-Host -nonewline -f $timeClockColor (Get-HoursWorkedToday) + Write-Host " - PRs in queue: $PRQueueCount - Hourly Run: $RunLatch" + (Get-VM) | ForEach-Object { + if(($_.MemoryDemand / $_.MemoryMaximum) -ge 0.9){ + Set-VM -VMName $_.name -MemoryMaximumBytes "$(($_.MemoryMaximum / 1073741824)+2)GB" + } + } + $status = Get-Status + $status | ForEach-Object {$_.RAM = [math]::Round((Get-VM -Name ("vm"+$_.vm)).MemoryAssigned/1024/1024/1024,2)} + Write-Status $status + Get-TrackerVMCycle; + Get-TrackerVMWindowArrange + + if ($valMode -eq "IEDS") { + if ((Get-ArraySum (Get-Status).RAM) -lt ($SystemRAM*.42)) { + Write-Output $valMode + Get-RandomIEDS + } + } + + if ($PRQueueCount -gt 0) { + if ((Get-ArraySum (Get-Status).RAM) -lt ($SystemRAM*.42)) { + $PR = Get-PopPRQueue + if ($null -ne $PR) { + Write-Output "Running $PR from queue." + Get-RandomIEDS -PR $PR + } + } + } + + $clip = (Get-Clipboard) + If ($clip -match $ADOMSBaseUrl) { + #Write-Output "Gathering Automated Validation Logs" + #Get-AutoValLog + } elseIf ($clip -match "Skip to content") { + if ($valMode -eq "Validating") { + Write-Output $valMode + Get-TrackerVMValidate; + $valMode | clip + } + } elseIf ($clip -match " Windows Package Manager") {#Package Manager Dashboard + #Write-Output "Gathering PR Headings" + #Get-PRNumber + } elseIf ($clip -match "^manifests`/") { + Write-Output "Opening manifest file" + $ManifestUrl = "$GitHubBaseUrl/tree/master/"+$clip + $ManifestUrl | clip + start-process ($ManifestUrl) + } + # $MozillaThunderbird = (Get-Status | ? {$_.Package -match "Mozilla.Thunderbird"} ).vm + # if ($null -ne $MozillaThunderbird) { + # $MozillaThunderbird | %{Get-TrackerVMSetStatus -Status Complete -VM $_} + # } + if (Get-ConnectedVM) { + #Get-TrackerVMResetStatus + } else { + Get-TrackerVMRotate + } + Write-Output "End of cycle." + Start-Sleep 5; + } + #Write-Progress -Completed +} + +#Second tab +Function Get-PRWatch { + [CmdletBinding()] + param( + [switch]$noNew, + [ValidateSet("Default","Warm","Cool","Random","Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antigua And Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia And Herzegovina","Botswana","Bouvet Island","Brazil","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cabo Verde","Cambodia","Cameroon","Canada","Central African Republic","Chad","Chile","China","Colombia","Comoros","Cook Islands","Costa Rica","Croatia","Cuba","Curacao","Cyprus","Czechia","Cöte D'Ivoire","Democratic Republic Of The Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Fiji","Finland","France","French Polynesia","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Grenada","Guatemala","Guinea","Guinea-Bissau","Guyana","Haiti","Holy See (Vatican City State)","Honduras","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Qatar","Republic Of The Congo","Romania","Russian Federation","Rwanda","Saint Kitts And Nevis","Saint Lucia","Saint Vincent And The Grenadines","Samoa","San Marino","Sao Tome And Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Sweden","Switzerland","Syrian Arab Republic","Tajikistan","Tanzania, United Republic Of","Thailand","Togo","Tonga","Trinidad And Tobago","Tunisia","Turkey","Turkmenistan","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Yemen","Zambia","Zimbabwe","Åland Islands")]$Chromatic = "Default", + $LogFile = ".\PR.txt", + $ReviewFile = ".\Review.csv", + $oldclip = "", + $PrePipeline = $false, + $AuthList = (Get-ValidationData -Property authStrictness), + $AgreementsList = (Get-ValidationData -Property AgreementUrl), + $ReviewList = (Get-LoadFileIfExists $ReviewFile), + $clip = (Get-Clipboard), + [switch]$WhatIf + ) + $Host.UI.RawUI.WindowTitle = "PR Watcher"#I'm a PR Watcher, watchin PRs go by. + #if ((Get-Command Get-TrackerVMSetMode).name) {Get-TrackerVMSetMode "Approving"} + + Write-Host " | Timestmp | $(Get-PadRight PR# 6) | $(Get-PadRight PackageIdentifier) | $(Get-PadRight prVersion 15) | A | R | G | W | F | I | D | V | $(Get-PadRight ManifestVer 14) | OK |" + Write-Host " | -------- | ----- | ------------------------------- | -------------- | - | - | - | - | - | - | - | - | ------------- | -- |" + + while($True -gt 0){ + $clip = (Get-Clipboard) + $PRtitle = $clip | Select-String ($hashPRRegexEnd); + $PR = ($PRtitle -split "#")[1] + if ($PRtitle) { + if (Compare-Object $PRtitle $oldclip) { + # if ((Get-Command Get-Status).name) { + # (Get-Status | Where-Object {$_.status -eq "ValidationCompleted"} | Format-Table) + # } + $validColor = "green" + $invalidColor = "red" + $cautionColor = "yellow" + + Switch ($Chromatic) { + #Color schemes, to accomodate needs and also add variety. + "Default" { + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" + } + "Warm" { + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" + } + "Cool" { + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "Cyan" + } + "Random" { + $Chromatic = ($CountrySet | get-random) + Write-Host "Using CountrySet $Chromatic" -f green + } +#https://www.flagpictures.com/countries/flag-colors/ +"Afghanistan"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Albania"{ + $validColor = "DarkGray" + $invalidColor = "Red" +} +"Algeria"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"American Samoa"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Andorra"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Angola"{ + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Anguilla"{ + $invalidColor = "Blue" + $cautionColor = "White" +} +"Antigua And Barbuda"{ + $invalidColor = "Red" + $validColor = "DarkGray" + $invalidColor = "Blue" + $validColor = "White" + $cautionColor = "Yellow" +} +"Argentina"{ + $validColor = "White" + $cautionColor = "Cyan" +} +"Armenia"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "DarkYellow" +} +"Aruba"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Australia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Austria"{ + $validColor = "White" + $invalidColor = "Red" +} +"Azerbaijan"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Cyan" +} +"Bahamas"{ + $validColor = "DarkGray" + $invalidColor = "Cyan" + $cautionColor = "Yellow" +} +"Bahrain"{ + $validColor = "White" + $invalidColor = "Red" +} +"Bangladesh"{ + $validColor = "Green" + $invalidColor = "Red" +} +"Barbados"{ + $validColor = "DarkGray" + $invalidColor = "Blue" + $cautionColor = "DarkYellow" +} +"Belarus"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Belgium"{ + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Belize"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Benin"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Bermuda"{ + $invalidColor = "Red" +} +"Bhutan"{ + $validColor = "DarkRed" + $invalidColor = "DarkYellow" + $cautionColor = "White" +} +"Bolivia"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Bosnia And Herzegovina"{ + $invalidColor = "Blue" + $validColor = "White" + $cautionColor = "Yellow" +} +"Botswana"{ + $validColor = "DarkGray" + $invalidColor = "White" + $cautionColor = "Cyan" +} +"Bouvet Island"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Brazil"{ + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "DarkYellow" +} +"Brunei Darussalam"{ + $validColor = "DarkGray" + $invalidColor = "Red" + $validColor = "White" + $cautionColor = "Yellow" +} +"Bulgaria"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Burkina Faso"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Burundi"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Cabo Verde"{ + $validColor = "White" + $invalidColor = "DarkYellow" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Cambodia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Cameroon"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Canada"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Central African Republic"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" + $cautionColor = "Yellow" +} +"Chad"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Chile"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"China"{ + $invalidColor = "Red" + $cautionColor = "DarkYellow" +} +"Colombia"{ + $invalidColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Comoros"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" + $cautionColor = "Yellow" +} +"Cook Islands"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Costa Rica"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Croatia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Cuba"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Curaçao"{ + $validColor = "White" + $invalidColor = "Blue" + $cautionColor = "Yellow" +} +"Cyprus"{ + $validColor = "White" + $invalidColor = "Blue" +} +"Czechia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Côte D'Ivoire"{ + $validColor = "Green" + $invalidColor = "DarkYellow" + $cautionColor = "White" +} +"Democratic Republic Of The Congo"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Denmark"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Djibouti"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Cyan" +} +"Dominica"{ + $validColor = "Green" + $validColor = "DarkGray" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Dominican Republic"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Ecuador"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Egypt"{ + $validColor = "DarkGray" + $invalidColor = "DarkYellow" + $invalidColor = "Red" + $cautionColor = "White" +} +"El Salvador"{ + $validColor = "White" + $invalidColor = "DarkYellow" + $cautionColor = "Blue" +} +"Equatorial Guinea"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Eritrea"{ + $validColor = "Green" + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Estonia"{ + $validColor = "DarkGray" + $invalidColor = "Blue" + $cautionColor = "White" +} +"Eswatini"{ + $validColor = "DarkGray" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" + $cautionColor = "Yellow" +} +"Ethiopia"{ + $validColor = "Green" + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Fiji"{ + $validColor = "White" + $validColor = "DarkBlue" + $invalidColor = "DarkYellow" + $invalidColor = "Red" + $cautionColor = "Cyan" +} +"Finland"{ + $validColor = "White" + $invalidColor = "Blue" +} +"France"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"French Polynesia"{ + $validColor = "White" + $invalidColor = "Red" + $invalidColor = "Blue" + $cautionColor = "DarkYellow" +} +"Gabon"{ + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "Yellow" +} +"Gambia"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Georgia"{ + $validColor = "White" + $invalidColor = "Red" +} +"Germany"{ + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "DarkYellow" +} +"Ghana"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Greece"{ + $validColor = "White" + $invalidColor = "Blue" +} +"Grenada"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Guatemala"{ + $validColor = "White" + $invalidColor = "Blue" +} +"Guinea"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Guinea-Bissau"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Guyana"{ + $validColor = "DarkGray" + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Haiti"{ + $validColor = "Blue" + $invalidColor = "Red" +} +"Holy See (Vatican City State)"{ + $validColor = "White" + $cautionColor = "Yellow" +} +"Honduras"{ + $validColor = "White" + $invalidColor = "Blue" +} +"Hong Kong" { + $validColor = "White" + $invalidColor = "Red" +} +"Hungary"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Iceland"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"India"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Blue" + $cautionColor = "DarkYellow" +} +"Indonesia"{ + $validColor = "White" + $invalidColor = "Red" +} +"Iran"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Iraq"{ + $invalidColor = "Red" + $validColor = "DarkGray" + $validColor = "Green" + $cautionColor = "White" +} +"Ireland"{ + $validColor = "Green" + $invalidColor = "Blue" +} +"Israel"{ + $validColor = "White" + $invalidColor = "Blue" +} +"Italy"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Jamaica"{ + $validColor = "Green" + $invalidColor = "DarkGray" + $cautionColor = "DarkYellow" +} +"Japan"{ + $validColor = "White" + $invalidColor = "Red" +} +"Jordan"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Kazakhstan"{ + $cautionColor = "Yellow" + $invalidColor = "Blue" +} +"Kenya"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Kiribati"{ + $validColor = "White" + $invalidColor = "Red" + $invalidColor = "Blue" + $cautionColor = "DarkYellow" +} +"Kuwait"{ + $validColor = "Green" + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "White" +} +"Kyrgyzstan"{ + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Laos"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "White" +} +"Latvia"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Lebanon"{ + $invalidColor = "Red" + $validColor = "Green" + $cautionColor = "White" +} +"Lesotho"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "White" +} +"Liberia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Libya"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Liechtenstein"{ + $validColor = "Blue" + $invalidColor = "Red" +} +"Lithuania"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Luxembourg"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Cyan" +} +"Macao" { + $validColor = "Green" + $cautionColor = "White" +} +"Madagascar"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Malawi"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "DarkGray" +} +"Malaysia"{ + $validColor = "White" + $invalidColor = "Red" + $invalidColor = "DarkBlue" + $cautionColor = "Yellow" +} +"Maldives"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Mali"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Malta"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Marshall Islands"{ + $invalidColor = "Blue" + $invalidColor = "DarkYellow" + $cautionColor = "White" +} +"Mauritania"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Mauritius"{ + $validColor = "Green" + $invalidColor = "Red" + $invalidColor = "Blue" + $cautionColor = "Yellow" +} +"Mexico"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Micronesia"{ + $invalidColor = "Blue" + $cautionColor = "White" +} +"Moldova"{ + $validColor = "Blue" + $invalidColor = "DarkYellow" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Monaco"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Mongolia"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Montenegro"{ + $invalidColor = "Red" + $cautionColor = "DarkYellow" +} +"Morocco"{ + $validColor = "Green" + $invalidColor = "Red" +} +"Mozambique"{ + $validColor = "DarkGray" + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Myanmar"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" + $cautionColor = "White" +} +"Namibia"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Nauru"{ + $invalidColor = "Blue" + $validColor = "White" + $cautionColor = "Yellow" +} +"Nepal"{ + $validColor = "DarkRed" + $invalidColor = "Blue" + $cautionColor = "White" +} +"Netherlands"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"New Zealand"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Nicaragua"{ + $invalidColor = "Blue" + $cautionColor = "White" +} +"Niger"{ + $validColor = "Green" + $cautionColor = "White" + $cautionColor = "DarkYellow" +} +"Nigeria"{ + $validColor = "Green" + $cautionColor = "White" +} +"Niue"{ + $validColor = "DarkYellow" +} +"Norfolk Island"{ + $validColor = "Green" + $cautionColor = "White" +} +"North Korea"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"North Macedonia"{ + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Norway"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Oman"{ + $invalidColor = "Red" + $validColor = "Green" + $cautionColor = "White" +} +"Pakistan"{ + $validColor = "Green" + $cautionColor = "White" +} +"Palau"{ + $cautionColor = "Yellow" + $invalidColor = "Blue" +} +"Palestine"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Panama"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Papua New Guinea"{ + $validColor = "DarkGray" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Paraguay"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Peru"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Philippines"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" + $cautionColor = "Yellow" +} +"Pitcairn Islands"{ + $validColor = "Green" + $validColor = "DarkGray" + $validColor = "White" + $invalidColor = "Red" + $invalidColor = "Blue" + $cautionColor = "Brown" + $cautionColor = "Yellow" +} +"Poland"{ + $validColor = "White" + $invalidColor = "Red" +} +"Portugal"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Qatar"{ + $validColor = "DarkRed" + $cautionColor = "White" +} +"Republic Of The Congo"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Romania"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Russian Federation"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Rwanda"{ + $validColor = "Green" + $invalidColor = "Cyan" + $cautionColor = "Yellow" +} +"Saint Kitts And Nevis"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Saint Lucia"{ + $validColor = "DarkGray" + $validColor = "White" + $invalidColor = "Cyan" + $cautionColor = "Yellow" +} +"Saint Vincent And The Grenadines"{ + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "Yellow" +} +"Samoa"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"San Marino"{ + $validColor = "White" + $cautionColor = "Cyan" +} +"Sao Tome And Principe"{ + $validColor = "Green" + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Saudi Arabia"{ + $validColor = "Green" + $cautionColor = "White" +} +"Senegal"{ + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Serbia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Seychelles"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Sierra Leone"{ + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "White" +} +"Singapore"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Slovakia"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Slovenia"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $invalidColor = "Blue" + $cautionColor = "DarkYellow" + $cautionColor = "White" +} +"Solomon Islands"{ + $validColor = "Green" + $invalidColor = "Blue" + $cautionColor = "Yellow" +} +"Somalia"{ + $invalidColor = "Blue" + $cautionColor = "White" +} +"South Africa"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $invalidColor = "Blue" + $invalidColor = "DarkYellow" + $cautionColor = "White" +} +"South Korea"{ + $validColor = "White" + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"South Sudan"{ + $validColor = "DarkGray" + $validColor = "Green" + $validColor = "White" + $invalidColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Spain"{ + $invalidColor = "Red" + $invalidColor = "DarkYellow" +} +"Sri Lanka"{ + $validColor = "Green" + $invalidColor = "DarkRed" + $cautionColor = "DarkYellow" +} +"Sudan"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Suriname"{ + $validColor = "DarkYellow" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Sweden"{ + $validColor = "Blue" + $invalidColor = "DarkYellow" +} +"Switzerland"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Syrian Arab Republic"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Tajikistan"{ + $validColor = "DarkYellow" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"Tanzania, United Republic Of"{ + $validColor = "Green" + $validColor = "DarkGray" + $invalidColor = "Blue" + $cautionColor = "Yellow" +} +"Thailand"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Togo"{ + $validColor = "Green" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Tonga"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Trinidad And Tobago"{ + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "White" +} +"Tunisia"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Turkey"{ + $invalidColor = "Red" + $cautionColor = "White" +} +"Turkmenistan"{ + $validColor = "Green" + $cautionColor = "White" +} +"Tuvalu"{ + $validColor = "DarkBlue" + $invalidColor = "DarkYellow" + $invalidColor = "Red" + $cautionColor = "Cyan" + $cautionColor = "White" +} +"Uganda"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" + $cautionColor = "Yellow" +} +"Ukraine"{ + $invalidColor = "Blue" + $invalidColor = "DarkYellow" +} +"United Arab Emirates"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "White" +} +"United Kingdom"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"United States"{ + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Blue" +} +"Uruguay"{ + $invalidColor = "Blue" + $cautionColor = "White" +} +"Uzbekistan"{ + $validColor = "Green" + $invalidColor = "Blue" + $invalidColor = "Red" + $cautionColor = "White" +} +"Vanuatu"{ + $validColor = "DarkGray" + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Venezuela"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Vietnam"{ + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Yemen"{ + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "White" +} +"Zambia"{ + $validColor = "Green" + $validColor = "DarkGray" + $invalidColor = "Red" + $cautionColor = "DarkYellow" +} +"Zimbabwe"{ + $validColor = "Green" + $validColor = "DarkGray" + $validColor = "White" + $invalidColor = "Red" + $cautionColor = "Yellow" +} +"Ã…land Islands"{ + $validColor = "Blue" + $invalidColor = "Red" + $cautionColor = "DarkYellow" +} + Default { + $validColor = "Green" + $invalidColor = "Red" + $cautionColor = "Yellow" + } + }; #end Switch Chromatic + + $noRecord = $False + $title = $PRtitle -split ": " + if ($title[1]) { + $title = $title[1] -split " " + } else { + $title = $title -split " " + } + $Submitter = (($clip | Select-String "wants to merge") -split " ")[0] + $InstallerType = Get-YamlValue InstallerType + + #Split the title by spaces. Try extracting the version location as the next item after the word "version", and if that fails, use the 2nd to the last item, then 3rd to last, and 4th to last. For some reason almost everyone puts the version number as the last item, and GitHub appends the PR number. + $prVerLoc =($title | Select-String "version").linenumber + #Version is on the line before the line number, and this set indexes with 1 - but the following array indexes with 0, so the value is automatically transformed by the index mismatch. + try { + [System.Version]$prVersion = Get-YamlValue PackageVersion $clip -replace "'","" -replace '"','' + } catch { + try { + $prVersion = Get-YamlValue PackageVersion $clip -replace "'","" -replace '"','' + } catch { + try { + [System.Version]$prVersion = Get-YamlValue PackageVersion $clip + } catch { + if ($null -ne $PRVerLoc) { + try { + [System.Version]$prVersion = $title[$prVerLoc] + } catch { + [string]$prVersion = $title[$prVerLoc] + } + } else { + #Otherwise we have to go hunting for the version number. + try { + [System.Version]$prVersion = $title[-1] + } catch { + try { + [System.Version]$prVersion = $title[-2] + } catch { + try { + [System.Version]$prVersion = $title[-3] + } catch { + try { + [System.Version]$prVersion = $title[-4] + } catch { + #If it's not a semantic version, guess that it's the 2nd to last, based on the above logic. + [string]$prVersion = $title[-2] + } + } + } + }; #end try + }; #end try + }; #end if null + }; #end try + }; #end try + + #Get the PackageIdentifier and alert if it matches the auth list. + $PackageIdentifier = "" + try { + $PackageIdentifier = Get-YamlValue PackageIdentifier $clip -replace '"',"" + } catch { + $PackageIdentifier = (Get-CleanClip $PRtitle); -replace '"',"" + } + $matchColor = $validColor + + + + + + Write-Host -nonewline -f $matchColor " | $(Get-Date -Format T) | $PR | $(Get-PadRight $PackageIdentifier) | " + + #Variable effervescence + $prAuth = "+" + $Auth = "A" + $Review = "R" + $WordFilter = "W" + $AgreementAccept = "G" + $AnF = "F" + $InstVer = "I" + $ListingDiff = "D" + $NumVersions = 99 + $PRvMan = "P" + $Approve = "+" + + $WinGetOutput = Find-WinGetPackage $PackageIdentifier | where {$_.id -eq $PackageIdentifier} + $ManifestVersion = $WinGetOutput.version + $ManifestVersionParams = ($ManifestVersion -split "[.]").count + $prVersionParams = ($prVersion -split "[.]").count + + + $AuthMatch = $AuthList | Where-Object {$_.PackageIdentifier -eq $PackageIdentifier} + + if ($AuthMatch) { + $AuthAccount = $AuthMatch.GitHubUserName | Sort-Object -Unique + } + + if ($null -eq $WinGetOutput) { + $PRvMan = "N" + $matchColor = $invalidColor + $Approve = "-!" + if ($noNew) { + $noRecord = $True + } else { + Add-PRToQueue -PR $PR + # if ($title[-1] -match $hashPRRegex) { + # if ((Get-Command Get-TrackerVMValidate).name) { + #Add-PRToQueue -PR $PR + # Get-TrackerVMValidate -Silent -InspectNew + # } else { + # Get-Sandbox ($title[-1] -replace"#","") + # }; #end if Get-Command + # }; #end if title + }; #end if noNew + } + Write-Host -nonewline -f $matchColor "$(Get-PadRight $PRVersion.toString() 14) | " + $matchColor = $validColor + + + + + if ($AuthMatch) { + $strictness = $AuthMatch.authStrictness | Sort-Object -Unique + $matchVar = "" + $matchColor = $cautionColor + $AuthAccount -split "/" | where {$_ -notmatch "Microsoft"} | %{ + #write-host "This $_ Submitter $Submitter" + if ($_ -eq $Submitter) { + $matchVar = "matches" + $Auth = "+" + $matchColor = $validColor + } + foreach ($User in ((Invoke-GitHubPRRequest -PR $PR -Type reviews -Output Content).user.login | select -Unique)) { + if ($Submitter -match $User) { + $matchVar = "preapproved" + $Auth = "+" + $matchColor = $validColor + } + } + + } + + if ($matchVar -eq "") { + $matchVar = "does not match" + $Auth = "-" + $matchColor = $invalidColor + } + if ($strictness -eq "must") { + $Auth += "!" + } + } + if ($Auth -eq "-!") { + if (!$WhatIf) { + Get-PRApproval -PR $PR -PackageIdentifier $PackageIdentifier + } + } + Write-Host -nonewline -f $matchColor "$Auth | " + $matchColor = $validColor + + + + + + $ReviewMatch = $ReviewList | Where-Object {$_.PackageIdentifier -match $PackageIdentifier } + if ($ReviewMatch) { + $Review = $ReviewMatch.Reason | Sort-Object -Unique + $matchColor = $cautionColor + } + + Write-Host -nonewline -f $matchColor "$Review | " + $matchColor = $validColor + + + + #In list, matches PR - explicit pass + #In list, PR has no Installer.yaml - implicit pass + #In list, missing from PR - block + #In list, mismatch from PR - block + #Not in list or PR - pass + #Not in list, in PR - alert and pass? + #Check previous version for omission - depend on wingetbot for now. + $AgreementUrlFromList = ($AgreementsList | where {$_.PackageIdentifier -eq $PackageIdentifier}).AgreementUrl + if ($AgreementUrlFromList) { + $AgreementUrlFromClip = Get-YamlValue AgreementUrl $clip -replace '"',"" + if ($AgreementUrlFromClip -eq $AgreementUrlFromList) { + #Explicit Approve - URL is present and matches. + $AgreementAccept = "+!" + } else { + #Explicit mismatch - URL is present and does not match, or URL is missing. + $AgreementAccept = "-!" + if (!$WhatIf) { + Reply-ToPR -PR $PR -CannedMessage AgreementMismatch -UserInput $AgreementUrlFromList -Silent + } + } + } else { + $AgreementAccept = "+" + #Implicit Approve - your AgreementsUrl is in another file. Can't modify what isn't there. + } + Write-Host -nonewline -f $matchColor "$AgreementAccept | " + $matchColor = $validColor + + + + + + + + + if (($PRtitle -notmatch "Automatic deletion") -AND + ($PRtitle -notmatch "Delete") -AND + ($PRtitle -notmatch "Remove") -AND + ($AgreementAccept -notmatch "[+]")) { + + $WordFilterMatch = $WordFilterList | ForEach-Object {($Clip -match $_) -notmatch "Url" -notmatch "Agreement"} + + if ($WordFilterMatch) { + $WordFilter = "-!" + $Approve = "-!" + $matchColor = $invalidColor + if (!$WhatIf) { + Reply-ToPR -PR $PR -CannedMessage WordFilter -UserInput $WordFilterMatch -Silent + } + } + } + Write-Host -nonewline -f $matchColor "$WordFilter | " + $matchColor = $validColor + + + + + + + if ($null -ne $WinGetOutput) { + if (($PRvMan -ne "N") -AND + ($PRtitle -notmatch (($DisplayVersionExceptionList) -join " ")) -AND + ($PRtitle -notmatch "Automatic deletion") -AND + ($PRtitle -notmatch "Delete") -AND + ($PRtitle -notmatch "Remove")) { + $DisplayVersion = Get-YamlValue DisplayVersion -clip $clip + $DeveloperIsAuthor = (((Get-YamlValue PackageIdentifier -clip $clip) -split ".") -eq $Submitter) + $InstallerMatch = ($InstallerUrl -split "/") -match $Submitter + + if ($DisplayVersion) { + if ($DisplayVersion -eq $prVersion) { + $matchColor = $invalidColor + $AnF = "-" + if (!$WhatIf) { + Reply-ToPR -PR $PR -CannedMessage AppsAndFeaturesMatch -UserInput $Submitter -Policy $Labels.NAF -Silent + Add-PRToRecord -PR $PR -Action $Actions.Feedback -Title $PRtitle + } + } + } + + # if (!($DeveloperIsAuthor)) { + # if ($InstallerMatch) { + # $matchColor = $invalidColor + # $AnF = "-" + # Reply-ToPR -PR $PR -CannedMessage InstallerMatchesSubmitter -UserInput $Submitter -Policy $Labels.NAF -Silent + # Add-PRToRecord -PR $PR -Action $Actions.Feedback -Title $PRtitle + # } + # } + } + } +<# + #> + Write-Host -nonewline -f $matchColor "$AnF | " + $matchColor = $validColor + + + + + if (($PRvMan -ne "N") -AND + ($PRtitle -notmatch "Automatic deletion") -AND + ($PRtitle -notmatch "Delete") -AND + ($PRtitle -notmatch "Remove")) { + try { + if ([bool]($clip -match "InstallerUrl")) { + $InstallerUrl = Get-YamlValue InstallerUrl -clip $clip + #write-host "InstallerUrl: $InstallerUrl $installerMatches prVersion: -PR $PRVersion" -f "blue" + $installerMatches = [bool]($InstallerUrl | Select-String $PRVersion) + if (!($installerMatches)) { + #Matches when the dots are removed from semantec versions in the URL. + $installerMatches2 = [bool]($InstallerUrl | Select-String ($prVersion -replace "[.]","")) + if (!($installerMatches2)) { + $matchColor = $invalidColor + $InstVer = "-" + } + } + } + } catch { + $matchColor = $invalidColor + $InstVer = "-" + }; #end try + }; #end if PRvMan + + try { + if (($prVersion = Get-YamlValue PackageVersion $clip) -match " ") { + $matchColor = $invalidColor + $InstVer = "-!" + } + }catch{ + $null = (Get-Process) #This section intentionally left blank. + } + + Write-Host -nonewline -f $matchColor "$InstVer | " + $matchColor = $validColor + + + + + + if (($PRvMan -ne "N") -AND + (($PRtitle -match "Automatic deletion") -OR + ($PRtitle -match "Delete") -OR + ($PRtitle -match "Remove"))) {#Removal PR + #$Versions = + $NumVersions = ($WinGetOutput.AvailableVersions | sort).count + if (($prVersion -eq $ManifestVersion) -OR ($NumVersions -eq 1)) { + $matchColor = $invalidColor + if (!$WhatIf) { + Reply-ToPR -PR $PR -CannedMessage VersionCount -UserInput $Submitter -Silent -Policy "[Policy] $($Labels.NAF)`n[Policy] $($Labels.HVL)" -Output Silent + Add-PRToRecord -PR $PR -Action $Actions.Feedback -Title $PRtitle + $NumVersions = "L" + } + } + } else {#Addition PR + $GLD = (Get-ListingDiff $clip | Where-Object {$_.SideIndicator -eq "<="}).installer.yaml #Ignores when a PR adds files that didn't exist before. + if ($null -ne $GLD) { + if ($GLD -eq "Error") { + $ListingDiff = "E" + $matchColor = $invalidColor + } else { + $ListingDiff = "-!" + $matchColor = $cautionColor + if (!$WhatIf) { + Reply-ToPR -PR $PR -CannedMessage ListingDiff -UserInput $GLD -Silent + Invoke-GitHubPRRequest -PR $PR -Method POST -Type comments -Data "[Policy] $Labels.NAF" -Output Silent + Add-PRToRecord -PR $PR -Action $Actions.Feedback -Title $PRtitle + }#if Whatif + }#end if GLD + }#end if null + }#end if PRvMan + Write-Host -nonewline -f $matchColor "$ListingDiff | " + Write-Host -nonewline -f $matchColor "$NumVersions | " + $matchColor = $validColor + + + + + + if ($PRvMan -ne "N") { + if ($null -eq $PRVersion -or "" -eq $PRVersion) { + $noRecord = $True + $PRvMan = "Error:prVersion" + $matchColor = $invalidColor + } elseif ($ManifestVersion -eq "Unknown") { + $noRecord = $True + $PRvMan = "Error:ManifestVersion" + $matchColor = $invalidColor + } elseif ($null -eq $ManifestVersion) { + $noRecord = $True + $PRvMan = $WinGetOutput + $matchColor = $invalidColor + } elseif ($prVersion -gt $ManifestVersion) { + $PRvMan = $ManifestVersion.toString() + } elseif ($prVersion -lt $ManifestVersion) { + $PRvMan = $ManifestVersion.toString() + $matchColor = $cautionColor + } elseif ($prVersion -eq $ManifestVersion) { + $PRvMan = "=" + } else { + $noRecord = $True + $PRvMan = $WinGetOutput + }; + }; + + + if (($Approve -eq "-!") -or + ($Auth -eq "-!") -or + ($AnF -eq "-") -or + ($InstVer -eq "-!") -or + ($prAuth -eq "-!") -or + ($Review -ne "R") -or + ($ListingDiff -eq "-!") -or + ($NumVersions -eq 1) -or + ($NumVersions -eq "L") -or + ($WordFilter -eq "-!") -or + ($AgreementAccept -eq "-!") -or + ($PRvMan -eq "N")) { + #-or ($PRvMan -match "^Error") + $matchColor = $cautionColor + $Approve = "-!" + $noRecord = $True + } + if ($WhatIf) { + $Approve += "W" + } + + $PRvMan = Get-PadRight $PRvMan 14 + Write-Host -nonewline -f $matchColor "$PRvMan | " + $matchColor = $validColor + + + + + + if ($PrePipeline -eq $false) { + if ($Approve -eq "+") { + if (!$WhatIf) { + $Approve = Approve-PR -PR $PR + Add-PRToRecord -PR $PR -Action $Actions.Approved -Title $PRtitle + } + } + } + + Write-Host -nonewline -f $matchColor "$Approve | " + Write-Host -f $matchColor "" + + $oldclip = $PRtitle + }; #end if Compare-Object + }; #end if PRtitle + Start-Sleep 1 + }; #end while Count + $Count-- +}; #end function + +Function Get-RunPRWatchAutomation { + param( + $SleepDuration = 5, + $Preset = "Approval2", + $Results = (Get-SearchGitHub -Preset $Preset).number + ) + Write-Output "$(Get-Date -Format T) Starting $Preset with $($Results.length) Results" + $Results | %{ + write-output "$(Get-Date): $_"; + Get-PRManifest -PR $_ | clip; + sleep $SleepDuration + } + Write-Output "$(Get-Date -Format T) Completing $Preset with $($Results.length) Results" +} + +#Third tab +Function Get-WorkSearch { + param( + $PresetList = @("ToWork"),#Approval"," + $Days = 7 + ) + Foreach ($Preset in $PresetList) { + $Page = 1 + While ($true) { + $line = 0 + $PRs = (Get-SearchGitHub -Preset $Preset -Page $Page -NoLabels -nBMM) + Write-Output "$(Get-Date -f T) $Preset Page $Page beginning with $Count Results" + $PRs = $PRs | where {$_.labels} | where {$_.number -notin (Get-Status).pr} + + Foreach ($FullPR in $PRs) { + $PR = $FullPR.number + Get-TrackerProgress -PR $PR $MyInvocation.MyCommand $line $PRs.length + $line++ + if ($Labels.HVL -notin $FullPR.labels.name) { + if (($FullPR.title -match "Remove") -OR + ($FullPR.title -match "Delete") -OR + ($FullPR.title -match "Automatic deletion")){ + Get-GitHubPreset CheckInstaller -PR $PR + } + } + $Comments = (Invoke-GitHubPRRequest -PR $PR -Type comments -Output content) + if ($Preset -eq "Approval"){ + if (Get-NonstandardPRComments -PR $PR -comments $Comments.body){ + Open-PRInBrowser -PR $PR + } else { + Open-PRInBrowser -PR $PR -FIles + } + } elseif ($Preset -eq "Defender"){ + Get-GitHubPreset -Preset LabelAction -PR $PR + } else {#ToWork etc + $Comments = ($Comments | select created_at,@{n="UserName";e={$_.user.login -replace "\[bot\]"}},body) + $State = (Get-PRStateFromComments -PR $PR -Comments $Comments) + $LastState = $State[-1] + if ($LastState.event -eq "DefenderFail") { + Get-PRLabelAction -PR $PR + } elseif ($LastState.event -eq "LabelAction") { + Get-GitHubPreset -Preset LabelAction -PR $PR + Open-PRInBrowser -PR $PR + } else { + if ($Comments[-1].UserName -ne $GitHubUserName) { + if ($LastState.event -eq "PreValidation") { + Get-GitHubPreset -Preset LabelAction -PR $PR + } + Open-PRInBrowser -PR $PR + } + }#end if LastCommenter + }#end if Preset + }#end foreach FullPR + Read-Host "$(Get-Date -f T) $Preset Page $Page complete with $Count Results - press ENTER to continue..." + $Page++ + }#end While Count + }#end Foreach Preset + Write-Progress -Activity $MyInvocation.MyCommand -Completed +}#end Get-WorkSearch + +#Automation tools +Function Get-GitHubPreset { + param( + [ValidateSet("Approved","AutomationBlock","BadPR","Blocking","CheckInstaller","Closed","Completed","DefenderFail","DriverInstall","Duplicate","Feedback","IdleMode","IEDSMode","InstallerNotSilent","InstallerMissing","LabelAction","ManuallyValidated","MergeConflicts","NetworkBlocker","NoInstallerChange","OneManifestPerPR","PRNoYamlFiles","PackageUrl","Paths","PossibleDuplicate","Project","RestrictedSubmitter","ResetApproval","Retry","Squash","Timeclock","Validating","VedantResetPR","WorkSearch","Waiver")][string]$Preset, + $PR = (Get-Clipboard), + $CannedMessage = $Preset, + $UserInput, + [Switch]$Force, + $out = "" + ) + if (($Preset -eq "GitHubStatus") -OR + ($Preset -eq "IdleMode") -OR + ($Preset -eq "IEDSMode") -OR + ($Preset -eq "Timeclock") -OR + ($Preset -eq "Validating") -OR + ($Preset -eq "WorkSearch")) { + $Force = $True + $out += $Preset; + } + + if (($PR.ToString().length -eq 6) -OR $Force) { + Switch ($Preset) { + $Actions.Approved { + $out += Approve-PR -PR $PR; + Add-PRToRecord -PR $PR -Action $Preset + } + "AutomationBlock" { + Add-PRToRecord -PR $PR -Action $Actions.Blocking + $out += Reply-ToPR -PR $PR -CannedMessage AutomationBlock -Policy $Labels.NB + } + $Actions.Blocking { + Add-PRToRecord -PR $PR -Action $Actions.Blocking + $out += Invoke-GitHubPRRequest -PR $PR -Method POST -Type comments -Data "[Policy] $($Labels.NB)" + } + "CheckInstaller" { + $Pull = (Invoke-GitHubPRRequest -PR $PR -Type files -Output content -JSON) + $PullInstallerContents = (Get-DecodeGitHubFile ((Invoke-GitHubRequest -Uri $Pull.contents_url[0] -JSON).content)) + $Url = (Get-YamlValue -StringName InstallerUrl -clip $PullInstallerContents) + $out = "" + try { + $InstallerStatus = Check-PRInstallerStatusInnerWrapper $Url + $out = "Status Code: $InstallerStatus" + }catch{ + $out = $error[0].Exception.Message + } + $Body = "URL: $Url `n"+$out + "`n`n(Automated message - build $build)" + #If ($Body -match "Response status code does not indicate success") { + #$out += Get-GitHubPreset InstallerMissing -PR $PR + #} #Need this to only take action on new PRs, not removal PRs. + $out = $out += Invoke-GitHubPRRequest -PR $PR -Method Post -Type comments -Data $Body -Output StatusDescription + } + "Completed" { + $out += Reply-ToPR -PR $PR -Body "This package installs and launches normally in a Windows 10 VM." -Policy $Labels.MV + } + $Actions.Closed { + if ($UserInput) { + Add-PRToRecord -PR $PR -Action $Preset + $out += Invoke-GitHubPRRequest -PR $PR -Type comments -Output StatusDescription -Method POST -Data "Close with reason: $UserInput;" + } else { + Write-Output "-UserInput needed to use preset $preset" + } + } + "DefenderFail" { + Add-PRToRecord -PR $PR -Action $Actions.Blocking + $out += Get-CannedMessage -Response DefenderFail -NoClip -NotAutomated + #$out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy "Needs-Attention`n[Policy] $($Labels.VDE)" + } + "DriverInstall" { + Add-PRToRecord -PR $PR -Action $Actions.Blocking + $out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy $Labels.DI + } + "Duplicate" { + if ($UserInput -match "[0-9]{5,6}") { + Get-GitHubPreset -Preset Closed -PR $PR -UserInput "Duplicate of #$UserInput" + } else { + Write-Output "-UserInput PRNumber needed to close as duplicate." + } + } + $Actions.Feedback { + Add-PRToRecord -PR $PR -Action $Preset + if ($UserInput) { + $out += Reply-ToPR -PR $PR -Body $UserInput -Policy $Labels.NAF + } else { + Write-Output "-UserInput needed to use preset $preset" + } + } + "GitHubStatus" { + return (Invoke-GitHubRequest -Uri https://www.githubstatus.com/api/v2/summary.json -JSON) | Select-Object @{n="Status";e={$_.incidents[0].status}},@{n="Message";e={$_.incidents[0].name+" ("+$_.incidents.count+")"}} + #$out += $Preset; + } + "IEDSMode" { + Get-TrackerVMSetMode IEDS + } + "IdleMode" { + Get-TrackerVMSetMode Idle + } + "InstallerNotSilent" { + Add-PRToRecord -PR $PR -Action $Actions.Feedback + $out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy $Labels.NAF + } + "InstallerMissing" { + Add-PRToRecord -PR $PR -Action $Actions.Feedback + $out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy $Labels.NAF + } + "LabelAction" { + Get-PRLabelAction -PR $PR + } + "ManuallyValidated" { + $out += Reply-ToPR -PR $PR -Body "Completing validation." -Policy $Labels.MV + } + "MergeConflicts" { + Get-GitHubPreset -Preset Closed -PR $PR -UserInput "Merge Conflicts" + } + "NetworkBlocker" { + Write-Output "Use AutomationBlock instead." + } + "NoInstallerChange" { + $out += Reply-ToPR -PR $PR -Body "This PR doesn't modify any of the `InstallerUrl` nor `InstallerSha256` fields." -Policy $Labels.MV + } + "OneManifestPerPR" { + Add-PRToRecord -PR $PR -Action $Actions.Feedback + $out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy $Labels.NAF + Get-AddPRLabel -PR $PR -Label $Labels.BI + } + "PRNoYamlFiles" { + Add-PRToRecord -PR $PR -Action $Actions.Feedback + $out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy $Labels.NAF + Get-GitHubPreset -Preset MergeConflicts -PR $PR + } + "PackageUrl" { + Add-PRToRecord -PR $PR -Action $Actions.Feedback + $out += Reply-ToPR -PR $PR -CannedMessage $Preset -Policy $Labels.NAF + } + "PossibleDuplicate" { + $Pull = (Invoke-GitHubPRRequest -PR $PR -Type files -Output content -JSON) + $PullInstallerContents = (Get-DecodeGitHubFile ((Invoke-GitHubRequest -Uri $Pull.contents_url[0] -JSON).content)) + $Url = (Get-YamlValue -StringName InstallerUrl -clip $PullInstallerContents) + $PackageIdentifier = (Get-YamlValue -StringName PackageIdentifier -clip $PullInstallerContents) + $Version = (Find-WinGetPackage $PackageIdentifier | where {$_.ID -eq $PackageIdentifier}).Version + $out = ($PullInstallerContents -match $Version) + $UserInput = $out | where {$_ -match "http"} | where {$_ -notmatch "json"} + if ($UserInput) { + $UserInput = "InstallerUrl contains Manifest version instead of PR version:`n"+$UserInput + "`n`n(Automated message - build $build)" + $out += Reply-ToPR -PR $PR -Body $UserInput -Policy $Labels.NAF + Add-PRToRecord -PR $PR -Action Feedback + } + } + "Project" { + Add-PRToRecord -PR $PR -Action $Preset + } + "RestrictedSubmitter" { + Get-GitHubPreset -Preset Closed -PR $PR -UserInput "Restricted Submitter" + } + "ResetApproval" { + $out += Reply-ToPR -PR $PR -Body "Reset approval workflow." -Policy "Reset Feedback `n[Policy] $($Labels.VC) `n[Policy] $($Actions.Approved)" } + "Retry" { + Add-PRToRecord -PR $PR -Action $Preset + $out += Get-RetryPR -PR $PR + } + "Squash" { + Add-PRToRecord -PR $PR -Action $Preset + } + "Timeclock" { + Get-TimeclockSet + } + "Validating" { + Get-TrackerVMSetMode Validating + $PR = "" + } + "Waiver" { + Add-PRToRecord -PR $PR -Action $Preset + $out += Add-Waiver -PR $PR; + } + "WorkSearch" { + Get-WorkSearch + } + } + } else { + $out += "Error: $($PR[0..10])" + } + Write-Output "PR $($PR): $out" +} + +Function Get-PRLabelAction { #Soothing label action. + param( + [int]$PR, + $PRLabels = ((Invoke-GitHubPRRequest -PR $PR -Type labels -Output content -JSON).name), + $PRLabelActions = (Get-Content $LabelActionFile | ConvertFrom-Csv) + ) + Write-Output "PR $PR has labels $PRLabels" + if ($PRLabels -contains $Labels.VDE) { + $PRState = Get-PRStateFromComments $PR + if (($PRState | where {$_.event -eq "PreValidation"})[-1].created_at -lt (Get-Date).AddHours(-8)) {# -AND #Last Prevalidation was 8 hours ago. + #($PRState | where {$_.event -eq "AutoValEnd"})[-1].created_at -lt (Get-Date).AddHours(-12)) { #Last Run was 18 hours ago. + Get-GitHubPreset Retry -PR $PR + } + } else { + + Foreach ($Label in ($PRLabels -split " ")) { + $Logset = ($PRLabelActions | ? {$_.Label -match $Label}).Logset -split "\|" + $StringSet = ($PRLabelActions | ? {$_.Label -match $Label}).StringSet -split "\|" + $LengthSet = ($PRLabelActions | ? {$_.Label -match $Label}).LengthSet -split "\|" + Switch -wildcard ($Label) { + $Labels.403 { + $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + Get-Autowaiver -PR $PR + } + $Labels.ANF { + $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet + if ($null -ne $UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.BVE { + $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet -length 5 + if ($null -ne $UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + if ($UserInput -match $MagicStrings[3]) { + #Get-GitHubPreset -PR $PR -Preset AutomationBlock + } + } + $Labels.EAT { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 36 -SearchString $MagicStrings[0] -length 4 + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + if ($UserInput -match $MagicStrings[3]) { + Get-GitHubPreset -PR $PR -Preset AutomationBlock + } + } + $Labels.EHM { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 44 -SearchString $MagicStrings[7] -length 3 + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } # write-host "a" + # $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet -Length $LengthSet + # write-host "b" + # if ($null -ne $UserInput) { + # write-host "c" + # Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + # write-host "d" + # Get-UpdateHashInPR2 -PR $PR -Clip $UserInput + # write-host "e" + # } + # write-host "f" + } + $Labels.EIA { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 53 -SearchString $MagicStrings[6] -length 5 + if ($null -eq $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 25 -SearchString $MagicStrings[0] -Length 10 + } + if ($null -eq $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 57 -SearchString $MagicStrings[0] -Length 10 + } + if ($null -eq $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 42 -SearchString $MagicStrings[0] -Length 10 + } + if ($UserInput) { + $UserInput = Get-AutomatedErrorAnalysis $UserInput + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + Get-GitHubPreset -PR $PR -Preset CheckInstaller + } + } + $Labels.HVF { + Get-AutoValLog -PR $PR + } + $Labels.HVL { + Approve-PR -PR $PR + } + $Labels.HVR { + Approve-PR -PR $PR + } + $Labels.IE { + $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet + if ($UserInput) { + if (($MagicStrings[5] -in $UserInput) -OR ("Server Unavailable" -in $UserInput)) { + Get-GitHubPreset -PR $PR Retry + } + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.IEDS { + Get-AutoValLog -PR $PR + Add-PRToQueue -PR $PR + } + $Labels.IEM { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 15 -SearchString $MagicStrings[1] + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 30 -SearchString $MagicStrings[13] + } + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 25 -SearchString $MagicStrings[4] -length 7 + } + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 39 -SearchString $MagicStrings[4] -length 7 + } + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 42 -SearchString $MagicStrings[9] -MatchOffset -3 -Length 4 + } + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 46 -SearchString $MagicStrings[9] -MatchOffset -3 -Length 4 + } + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 47 -SearchString $MagicStrings[9] -MatchOffset -3 -Length 4 + } + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + if ($UserInput -match "Sequence contains no elements") {#Reindex fixes this. + Reply-ToPR -PR $PR -CannedMessage SequenceNoElements + $PRtitle = ((Invoke-GitHubPRRequest -PR $PR -Type "" -Output content -JSON).title) + if (($PRtitle -match "Automatic deletion") -OR ($PRtitle -match "Remove")) { + Get-GitHubPreset -Preset Completed -PR $PR + } + } + } + } + $Labels.IEU { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 25 -SearchString $MagicStrings[1] + if ($UserInput) { + if ($MagicStrings[5] -in $UserInput) { + Get-GitHubPreset -PR $PR Retry + } + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.LVR { + Approve-PR -PR $PR + } + $Labels.MIVE { + $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet + if ($null -ne $UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.MMC { + Get-VerifyMMC -PR $PR + } + $Labels.MVE {#One of these is VER. + $UserInput = Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet + if ($null -ne $UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.MVE { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 42 -SearchString $MagicStrings[2] + if ($null -eq $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 42 -SearchString $MagicStrings[1] + } + if ($null -ne $UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.NMM { + Approve-PR -PR $PR + Get-MergePR -PR $PR + } + $Labels.NP { + if ((($PRLabels -join " ") -notmatch $Labels.MA)) { + Add-PRToQueue -PR $PR + } + } + $Labels.PD { + Get-DuplicateCheck -PR $PR + } + $Labels.PRE { + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 47 -SearchString $MagicStrings[12] -Length 2 + } + if ($null -match $UserInput) { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 33 -SearchString $MagicStrings[12] -Length 2 + } + $UserInput += Get-LogFromCommitFile -PR $PR -LogNumbers $LogSet -StringNumbers $StringSet + + if ($UserInput -match "The pull request contains more than one manifest") { + Get-GitHubPreset -Preset OneManifestPerPR -PR $PR + } + if ($UserInput -match "The pull request doesn't include any manifest files yaml") { + Get-GitHubPreset -Preset PRNoYamlFiles -PR $PR + } + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.UVE { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 32 -SearchString "Validation result: Failed" + Get-GitHubPreset -PR $PR -Preset CheckInstaller + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + Get-Autowaiver -PR $PR + } + $Labels.VC { + } + $Labels.VD { + Get-Autowaiver -PR $PR + } + $Labels.VEE { + Get-AutoValLog -PR $PR + Add-PRToQueue -PR $PR + } + $Labels.VIE { + Get-AutoValLog -PR $PR + Get-Autowaiver -PR $PR + } + $Labels.VMD { + $UserInput = Get-LineFromBuildResult -PR $PR -LogNumber 25 -SearchString $MagicStrings[1] + if ($UserInput) { + Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + $Labels.VMC { + } + $Labels.VNE { + Get-Autowaiver -PR $PR +<# + $Title = ((Invoke-GitHubPRRequest -PR $PR -Type "" -Output content -JSON).title); + foreach ($Waiver in (Get-ValidationData -Property AutoWaiverLabel)) { + if ($Title -match $Waiver.PackageIdentifier) { + Get-GitHubPreset -PR $PR Waiver + } + } + #> + } + $Labels.VSE { + Get-AutoValLog -PR $PR + Add-PRToQueue -PR $PR + } + $Labels.VUF { + Get-AutoValLog -PR $PR + Add-PRToQueue -PR $PR + } + $Labels.VUE { + Get-Autowaiver -PR $PR + } + $Labels.VUU { + Get-Autowaiver -PR $PR + } + "Policy-Test-*" { + Get-Autowaiver -PR $PR + } + }#end Switch Label + }#end Foreach Label + }#end if PRLabels +} + +Function Get-ScheduledRun { + [console]::beep(500,250);[console]::beep(500,250);[console]::beep(500,250) #Beep 3x to alert the PC user. + $Host.UI.RawUI.WindowTitle = "Periodic Run" + + #Check for yesterday's report and create if missing. + $Month = (Get-Culture).DateTimeFormat.GetMonthName((Get-Date).Month) + md "C:\ManVal\logs\$Month" -ErrorAction SilentlyContinue + $Yesterday = (get-date).AddDays(-1) + $YesterdayFormatted = (get-date $Yesterday -f MMddyy) + $ReportName = "$logsFolder\$Month\$YesterdayFormatted-Report.txt" + if (Get-Content $ReportName -ErrorAction SilentlyContinue) { + Write-Host "Report for $YesterdayFormatted found." + } else { + Write-Host "Report for $YesterdayFormatted not found." + Get-PRFullReport -Today $YesterdayFormatted + } + + Get-StaleVMCheck + + $PresetList = ("Defender","Domain","Duplicate","HVR","IEDS","LVR","MMC","NMM","ToWork3","Approval","Approval2","VCMA") + foreach ($Preset in $PresetList) { + $Results = (Get-SearchGitHub -Preset $Preset -nBMM).number + Write-Output "$(Get-Date -Format T) Starting $Preset with $($Results.length) Results" + if ($Results) { + switch ($Preset) { + "Approval" { + $Results = (Get-SearchGitHub Approval -NewPackages).number + $Results | %{Add-PRToQueue -PR $_} + } + "Approval2" { + $Results | %{ + write-output "$(get-date): $_"; + Get-PRManifest -pr $_ | clip; + sleep 5 + } + } + "IEDS" { + $Results | %{Add-PRToQueue -PR $_} + } + "VCMA" { + $GitHubResults = Get-SearchGitHub VCMA + $AnHourAgo = (get-date).AddHours(-1) + $Results = ($GitHubResults | where {[TimeZone]::CurrentTimeZone.ToLocalTime($_.updated_at) -lt $AnHourAgo}).number + #Time, as a number, is always increasing. So the past is always less than the present, which is always less than the future. + $Results | %{Approve-PR -PR $_;Get-MergePR -PR $_} + } + Default { + $Results | %{Get-PRLabelAction -PR $_ } + } + }#end switch Preset + }#end if Results12 + Write-Output "$(Get-Date -Format T) Completing $Preset with $($Results.length) Results" + }#End for preset + + + Write-Output "$(Get-Date -Format T) Starting PushMePRYou with $($PushMePRWho.count) Results" + $PushMePRWho | %{write-host $_.Author;Get-PushMePRYou -Author $_.Author -MatchString $_.MatchString} + Write-Output "$(Get-Date -Format T) Completing PushMePRYou with $($PushMePRWho.count) Results" + if (([int](get-date -f mm) -eq 20) -OR ([int](get-date -f mm) -eq 50)) { + sleep (60-(get-date -f ss))#Sleep out the minute. + } +} + +Function Get-StaleVMCheck { + $VMStatus = gc $statusFile | convertfrom-csv + $CheckVMStatus = ($VMStatus | where {$_.status -ne "Ready"}) + Write-Output "$(Get-Date -Format T) Starting stale VM check with $($CheckVMStatus.count) Results" + foreach ($vm in $CheckVMStatus) { + $PRState = Invoke-GitHubPRRequest -PR $VM.pr -Type "" -Output Content; + $PRLabels = ((Invoke-GitHubPRRequest -PR $PR -Type "labels" -Output content -JSON).name) + if (($PRState.state -ne "open") -OR + (($PRLabels -join " ") -match $Labels.CR)){ + Get-TrackerVMSetStatus -Status Complete -VM $VM.vm + } + } + Write-Output "$(Get-Date -Format T) Completing stale VM check with $($CheckVMStatus.count) Results" +} + +Function Get-LogFromCommitFile { + param( + $PR, + $LogNumbers, + $StringNumbers, + $Length, + [switch]$WhatIf + ) + Foreach ($Log in $LogNumbers) { + $n = 0; + if ($WhatIf) { + write-host $log + } + while ($n -le ($StringNumbers.Count -1)) { + if ($WhatIf) { + write-host "n $n - string $($MagicStrings[($StringNumbers[$n])]) - UserInput $UserInput" + } + try { + if ($WhatIf) { + write-host "Get-LineFromBuildResult -PR $PR -LogNumber $Log -SearchString $($MagicStrings[$StringNumbers[$n]]) -Length $Length" + } else { + $UserInput += Get-LineFromBuildResult -PR $PR -LogNumber $Log -SearchString $MagicStrings[$StringNumbers[$n]] -Length $Length + } + } catch {} + $n++ + } + } + + if ($WhatIf) { + write-host "return $UserInput" + } else { + return $UserInput + } +} + +Function Add-Waiver { + param( + $PR, + $Labels = ((Invoke-GitHubPRRequest -PR $PR -Type "labels" -Output content -JSON).name) + ) + #$actions = "Manual","Waiver","Approved" + $actions = "Manual","Manual","Approved" + Foreach ($Label in $Labels) { + $Waiver = "" + Switch ($Label) { + $Labels.EAT { + Get-GitHubPreset -Preset Completed -PR $PR + Add-PRToRecord -PR $PR -Action $actions[0] + $Waiver = $Label + } + $Labels.PT27 { + Add-PRToRecord -PR $PR -Action $actions[0] + $Waiver = $Label + } + $Labels.PT12 { + Add-PRToRecord -PR $PR -Action $actions[0] + $Waiver = $Label + } + $Labels.PT23 { + Add-PRToRecord -PR $PR -Action $actions[0] + $Waiver = $Label + } + $Labels.VC { + Get-GitHubPreset -Preset Approved -PR $PR + Add-PRToRecord -PR $PR -Action $actions[2] + } + $Labels.VD { + Add-PRToRecord -PR $PR -Action $actions[0] + $Waiver = $Label + } + $Labels.VEE { + Add-PRToRecord -PR $PR -Action $actions[0] + $Waiver = $Label + } + $Labels.403 { + Add-PRToRecord -PR $PR -Action $actions[1] + $Waiver = $Label + } + $Labels.VIE { + Add-PRToRecord -PR $PR -Action $actions[1] + $Waiver = $Label + } + $Labels.VNE { + Add-PRToRecord -PR $PR -Action $actions[1] + $Waiver = $Label + } + $Labels.VSE { + Add-PRToRecord -PR $PR -Action $actions[1] + $Waiver = $Label + } + $Labels.VUF { + Add-PRToRecord -PR $PR -Action $actions[1] + $Waiver = $Label + } + $Labels.VUE { + Add-PRToRecord -PR $PR -Action $actions[1] + $Waiver = $Label + } + $Labels.VR { + Get-GitHubPreset -Preset Completed -PR $PR + #Invoke-GitHubPRRequest -PR $PR -Method POST -Type labels -Data "Retry-1" + Add-PRToRecord -PR $PR -Action $actions[0] + } + $Labels.IEDS { + Get-GitHubPreset -Preset Completed -PR $PR + #Invoke-GitHubPRRequest -PR $PR -Method POST -Type labels -Data "Retry-1" + Add-PRToRecord -PR $PR -Action $actions[0] + } + } + if ($Waiver -ne "") { + $out = Get-CompletePR -PR $PR + Write-Output $out + }; #end if Waiver + }; #end Foreach Label +}; #end Add-Waiver + +Function Get-SearchGitHub { + param( + [ValidateSet("Approval","Approval2","Autowaiver","Blocking","Defender","Domain","Duplicate","HVR","IEDS","LVR","MMC","NMM","None","ToWork","ToWork2","ToWork3","VCMA")][string]$Preset = "Approval", + [Switch]$Browser, + $Url = "https://api.github.com/search/issues?page=$Page&q=", + $Author, #wingetbot + $Commenter, #wingetbot + $Title, + $ExcludeTitle, + [string]$Label, + $Page = 1, + [int]$Days, + [Switch]$BMM, + [Switch]$NewPackages, + [Switch]$nBMM, + [Switch]$IEDS, + [Switch]$NotWorked, + [Switch]$NoLabels, + [Switch]$AllowClosedPRs + ) + if ($Browser) { + $Url = "$GitHubBaseUrl/pulls?page=$Page&q=" + } + #Base settings + $Base = "repo:$Owner/$Repo+" + $Base = $Base + "is:pr+" + if (!($AllowClosedPRs)) { + $Base += "is:open+" + } + $Base += "draft:false+" + $Base += "sort:created-asc+" + + #Smaller blocks + $date = Get-Date (Get-Date).AddDays(-$Days) -Format "yyyy-MM-dd" + $Defender = "label:$($Labels.VDE)+" + $HaventWorked = "-commenter:$($GitHubUserName)+" + $HVR = "label:$($Labels.HVR)+" + $IEDSLabel = "label:$($Labels.IEDS)+" + $IEM = "label:$($Labels.IEM)+" + $LVR = "label:$($Labels.LVR)+" + $MA = "label:$($Labels.MA)+" + $MMC = "label:$($Labels.MMC)+" + $NA = "label:$($Labels.NA)+" + $NAF = "label:$($Labels.NAF)+" + $nBI = "-label:Blocking-Issue+" + $nHW = "-label:Hardware+" + $nIEDS = "-"+$IEDSLabel + $nMA = "-"+$MA + $NMM = "label:$($Labels.NMM)+" + $nMMC = "-"+$MMC + $nNA = "-"+$NA + $nNP = "-label:$($Labels.NP)+" + $nNRA = "-label:$($Labels.IOD)+" + $nNRA = "-label:$($Labels.IOI)+" + $nNRA = "-label:$($Labels.NRA)+" + $nNSA = "-label:$($Labels.NSA)+" + $NotPass = "-label:$($Labels.APP)+"#Hasn't psased pipelines + $nVC = "-"+$VC #Not Completed + $Recent = "updated:>$($date)+" + $VC = "label:$($Labels.VC)+"#Completed + $VD = "label:$($Labels.VD)+" + $VSA = "label:$($Labels.VSA)+" + + + #Building block settings + $Blocking = $nHW + $Blocking += $nNSA + $Blocking += "-label:$($Labels.AGR)+" + $Blocking += "-label:$($Labels.DI)+" + $Blocking += "-label:$($Labels.LBI)+" + $Blocking += "-label:$($Labels.NB)+" + $Blocking += "-label:$($Labels.PF)+" + $Blocking += "-label:$($Labels.RB)+" + $Blocking += "-label:$($Labels.SA)+" + + $Common = $nBI + $Common = $Common + "-"+$IEM + $Common = $Common + "-"+$Defender + + $Cna = $VC + $Cna = $Cna+ $nMA + + $Review1 = "-label:$($Labels.CR)+" + $Review1 += "-label:$($Labels.CLA)+" + $Review1 += $nNRA + + $Review2 = "-"+$NA + $Review2 = $Review2 + "-"+$NAF + $Review2 = $Review2 + "-label:$($Labels.NR)+" + + $Approvable = "-label:$($Labels.VMC)+" + $Approvable += "-label:$($Labels.VER)+" + $Approvable += "-label:$($Labels.MIVE)+" + $Approvable += "-label:$($Labels.PD)+" + $Approvable += "-label:$($Labels.UF)+" + + $Workable += "-label:$($Labels.LVR)+" + $Workable += "-label:$($Labels.HVR)+" + $Workable += "-label:$($Labels.VMC)+" + $Workable += "-label:$($Labels.BVE)+" + $Workable += "-label:$($Labels.UF)+" + $Workable += "-label:$($Labels.VCR)+" + $Workable += "-label:$($Labels.VSS)+" + + $PolicyTests = "-label:Policy-Test-1.1+"; + $PolicyTests += "-label:$($Labels.PT12)+" + $PolicyTests += "-label:Policy-Test-1.3+"; + $PolicyTests += "-label:Policy-Test-1.4+"; + $PolicyTests += "-label:Policy-Test-1.5+"; + $PolicyTests += "-label:Policy-Test-1.6+"; + $PolicyTests += "-label:Policy-Test-1.7+"; + $PolicyTests += "-label:Policy-Test-1.8+"; + $PolicyTests += "-label:Policy-Test-1.9+"; + $PolicyTests += "-label:Policy-Test-1.10+"; + $PolicyTests += "-label:Policy-Test-2.1+"; + $PolicyTests += "-label:Policy-Test-2.2+"; + $PolicyTests += "-label:$($Labels.PT23)+" + $PolicyTests += "-label:Policy-Test-2.4+"; + $PolicyTests += "-label:Policy-Test-2.5+"; + $PolicyTests += "-label:Policy-Test-2.6+"; + $PolicyTests += "-label:$($Labels.PT27)+" + $PolicyTests += "-label:Policy-Test-2.8+"; + $PolicyTests += "-label:Policy-Test-2.9+"; + $PolicyTests += "-label:Policy-Test-2.10+"; + $PolicyTests += "-label:Policy-Test-2.11+"; + $PolicyTests += "-label:Policy-Test-2.12+"; + + $Automatable = "-label:WSL+"; + $Automatable = "-label:$($Labels.UVE)+" + $Automatable = "-label:$($Labels.VUE)+" + $Automatable = "-label:$($Labels.OUF)+" + $Automatable = "-label:$($Labels.VHE)+" + $Automatable = "-label:$($Labels.403)+" + $Automatable = "-label:$($Labels.404)+" + $Automatable = "-label:$($Labels.ANA)+" + $Automatable = "-label:$($Labels.HW)+" + $Automatable = "-label:$($Labels.PRE)+" + $Automatable = "-label:$($Labels.MVE)+" + $Automatable = "-label:$($Labels.EHM)+" + $Automatable = "-label:$($Labels.ANF)+" + $Automatable = "-label:$($Labels.EIA)+" + $Automatable = "-label:$($Labels.VC)+" + $Automatable += "-"+$VD; + + #Composite settings + $Set1 = $Blocking + $Common + $Review1 + $Set2 = $Set1 + $Review2 + $Url += $Base + if ($Author) { + $Url += "author:$($Author)+" + } + if ($Commenter) { + $Url += "commenter:$($Commenter)+" + } + if ($Days) { + $Url += $Recent + } + if ($IEDS) { + $Url += $nIEDS + } + if ($Label) { + $Url += "label:$($Label)+" + } + if ($NotWorked) { + $Url += $HaventWorked + } + if ($NewPackages) { + $Url += "label:New-Package+" + } + if ($Title) { + $Url += "$Title in:title+" + } + if ($BMM) { + $Url += "label:$($Labels.BMM)+" + } + if ($nBMM) { + $Url += "-label:$($Labels.BMM)+" + } + switch ($Preset) { + "Approval"{ + $Url += $Cna + $Url += $Set2 #Blocking + Common + Review1 + Review2 + $Url += $Approvable + $Url += $Workable; + $Url += $nMMC; + } + "Approval2"{ + $Url += $Cna + $Url += $nNP + $Url += $Set2 #Blocking + Common + Review1 + Review2 + $Url += $Approvable + $Url += $Workable; + $Url += $nMMC; + } + "Defender"{ + $Url += $Defender + } + "Domain"{ + $Url += "label:$($Labels.VD)+" + } + "Duplicate"{ + $Url += "label:"+$Labels.PD+"+";#dupe + $Url += $nNRA + } + "Autowaiver"{ + $Url += $Set1 + $Url += $Workable + $Url += $nIEDS + $Url += $nVC + $Url += "label:$($Labels.EHM)+" + $Url += "label:$($Labels.MIVE)+" + $Url += "label:$($Labels.MVE)+" + $Url += "label:$($Labels.VEE)+" + $Url += "label:$($Labels.VNE)+" + $Url += "label:$($Labels.VIE)+" + $Url += "label:$($Labels.VSE)+" + $Url += "label:$($Labels.VUF)+" + $Url += "label:$($Labels.ANF)+" + $Url += $nBI + $Url += $nIOD + $Url += $nIOI + } + "IEDS" { + $Url += $IEDSLabel + $Url += $nBI + $Url += $Blocking + $Url += $NotPass + $Url += $nVC + } + "HVR"{ + $date = Get-Date (Get-Date).AddDays(-7) -Format "yyyy-MM-dd" + $createdDate = "created:<$($date)+" + $Url += $createdDate; + $Url += $HVR; + } + "LVR"{ + $date = Get-Date (Get-Date).AddDays(-7) -Format "yyyy-MM-dd" + $createdDate = "created:<$($date)+" + $Url += $createdDate; + $Url += $LVR; + } + "MMC"{ + $Url += $MMC; + } + "NMM"{ + $Url += $NMM; + } + "None"{ + } + "ToWork"{ + $Url += $Set1 #Blocking + Common + Review1 + $Url += $Workable; + #$Url += $Workable + } + "ToWork2"{ + $Url += $HaventWorked + $Url += "-"+$Defender + $Url += $Set1 #Blocking + Common + Review1 + $Url += $nVC + } + "ToWork3"{ + $Url += $HaventWorked + $Url += "-"+$Defender + $Url += $Set1 #Blocking + Common + Review1 + $Url += $nVC + $Url += $nMA + $Url += $nNA + } + "VCMA"{ + #$date = Get-Date (Get-Date).AddHours(-1) -Format "yyyy-MM-dd" + #$createdDate = "created:<$($date)+" + $Url += $createdDate; + $Url += $MA + $Url += $VC + $Url += $Set2 #Blocking + Common + Review1 + Review2 + $Url += $Approvable + $Url += $Workable; + $Url += $nMMC; + } + } + + if ($Browser) { + Start-Process $Url + } else { + $Response = Invoke-GitHubRequest $Url + $Response = ($Response.Content | ConvertFrom-Json).items + #$Response = $Response | ? {!(($_.labels.name -match $Labels.MA) -AND ($_.labels.name -match "Needs-Attention"))} + if ($ExcludeTitle) { + $Response = $Response | ? {$_.title -notmatch $ExcludeTitle} + } + if (!($NoLabels)) { + $Response = $Response | where {$_.labels} + } + return $Response + } +} + +Function Get-CannedMessage { + param( + [ValidateSet("AgreementMismatch","AppFail","Approve","AutomationBlock","AutoValEnd","AppsAndFeaturesNew","AppsAndFeaturesMissing","AppsAndFeaturesMatch","DriverInstall","DefenderFail","HashFailRegen","InstallerFail","InstallerMatchesSubmitter","InstallerMissing","InstallerNotSilent","NormalInstall","InstallerUrlBad","ListingDiff","ManValEnd","ManifestVersion","MergeFail","NoCause","NoExe","NoRecentActivity","NotGoodFit","OneManifestPerPR","Only64bit","PackageFail","PackageUrl","Paths","PendingAttendedInstaller","PolicyWrapper","PRNoYamlFiles","RemoveAsk","SequenceNoElements","Unattended","Unavailable","UrlBad","VersionCount","WhatIsIEDS","WordFilter")] + [string]$Response, + $UserInput=(Get-Clipboard), + [switch]$NoClip, + [switch]$NotAutomated + ) + [string]$Username = "@"+$UserInput.replace(" ","")+"," + switch ($Response) { + "AgreementMismatch" { + $out = "Hi $Username`n`nThis package uses Agreements, but this manifest's AgreementsUrl doesn't match the AgreementsUrl on file." + } + "AppsAndFeaturesNew" { + $out = "Hi $Username`n`nThis manifest adds a `DisplayVersion` to the `AppsAndFeaturesEntries` that isn't present in previous manifest versions. This entry should be added to the previous versions, or removed from this version." + } + "AppsAndFeaturesMissing" { + $out = "Hi $Username`n`nThis manifest removes the `DisplayVersion` from the `AppsAndFeaturesEntries`, which is present in previous manifest versions. This entry should be added to this version, to maintain version matching, and prevent the 'upgrade always available' situation with this package." + } + "AppsAndFeaturesMatch" { + $out = "Hi $Username`n`nThis manifest uses the same values for `DisplayVersion` and `PackageVersion`. This is not recommended, and the `DisplayVersion` should be removed." + } + "AppFail" { + $out = "Hi $Username`n`nThe application installed normally, but gave an error instead of launching:`n" + } + "Approve" { + $out = "Hi $Username`n`nDo you approve of these changes?" + } + "AutomationBlock" { + $out = "This might be due to a network block of data centers, to prevent automated downloads." + } + "UserAgentBlock" { + $out = "This might be due to user-agent throttling." + } + "AutoValEnd" { + $UserInput = $UserInput -join "`n" + $UserInput = "Automatic Validation ended with:`n```````n $UserInput`n```````n" + $out = Get-AutomatedErrorAnalysis $UserInput + } + "DriverInstall" { + $out = "Hi $Username`n`nThe installation is unattended, but installs a driver which isn't unattended:`nUnfortunately, installer switches are not usually provided for this situation. Are you aware of an installer switch to have the driver silently install as well?" + } + "DefenderFail" { + $out = "The package didn't pass a Defender or similar security scan. This might be a false positive and we can rescan tomorrow.." + } + "HashFailRegen" { + $out = "Closing to regenerate with correct hash." + } + "InstallerFail" { + $out = "Hi $Username`n`nThe installer did not complete:`n" + } + "InstallerMatchesSubmitter" { + $out = "Submitter username detected in InstallerUrl, but not in PackageIdentifier. Verify not a forked repository." + } + "InstallerMissing" { + $out = "Hi $Username`n`nHas the installer been removed?" + } + "InstallerNotSilent" { + $out = "Hi $Username`n`nThe installation isn't unattended. Is there an installer switch to have the package install silently?" + } + "ListingDiff" { + $out = "This PR omits these files that are present in the current manifest:`n> $UserInput" + } + "ManifestVersion" { + $out = "Hi $Username`n`nWe don't often see the `1.0.0` manifest version anymore. Would it be possible to upgrade this to the [1.5.0]($GitHubBaseUrl/tree/master/doc/manifest/schema/1.5.0) version, possibly through a tool such as [WinGetCreate](https://learn.microsoft.com/en-us/windows/package-manager/package/manifest?tabs=minschema%2Cversion-example), [YAMLCreate]($GitHubBaseUrl/blob/master/Tools/YamlCreate.ps1), or [Komac](https://github.com/russellbanks/Komac)? " + } + "ManValEnd" { + $UserInput = $UserInput -join "`n" + $UserInput = "Manual Validation ended with:`n```````n$UserInput`n```````n" + $out = Get-AutomatedErrorAnalysis $UserInput + } + "MergeFail" { + $out = "Merging failed with:`n> $UserInput" + } + "NoCause" { + $out = "I'm not able to find the cause for this error. It installs and runs normally on a Windows 10 VM." + } + "NoExe" { + $out = "Hi $Username`n`nThe installer doesn't appear to install any executables, only supporting files:`n`nIs this expected?" + } + "NoRecentActivity" { + $out = "No recent activity." + } + "NotGoodFit" { + $out = "Hi $Username`n`nUnfortunately, this package might not be a good fit for inclusion into the WinGet public manifests. Please consider using a local manifest (`WinGet install --manifest C:\path\to\manifest\files\`) for local installations. " + } + "NormalInstall" { + $out = "This package installs and launches normally in a Windows 10 VM." + } + "OneManifestPerPR" { + $out = "Hi $Username`n`nWe have a limit of 1 manifest change, addition, or removal per PR. This PR modifies more than one PR. Can these changes be spread across multiple PRs?" + } + "Only64bit" { + $out = "Hi $Username`n`nValidation failed on the x86 package, and x86 packages are validated on 32-bit OSes. So this might be a 64-bit package." + } + "PackageFail" { + $out = "Hi $Username`n`nThe package installs normally, but fails to run:`n" + } + "PackageUrl" { + $out = "Hi $Username`n`nCould you add a PackageUrl?" + } + "Paths" { + $out = "Please update file name and path to match this change." + } + "PendingAttendedInstaller" { + $out = "Pending:`n* https://github.com/microsoft/winget-cli/issues/910" + } + "PolicyWrapper" { + $out = "" + } + "PRNoYamlFiles" { + $out = "Hi $Username`n`nThis error means that this PR diff Master had no output. In other words, it's like a merge conflict.`n> The pull request doesn't include any manifest files yaml." + } + "RemoveAsk" { + $out = "Hi $Username`n`nThis package installer is still available. Why should it be removed?" + } + "SequenceNoElements" { + $out = "> Sequence contains no elements`n`n - This error means that this PR diff Master had no output. In other words, it's like a merge conflict." + } + "Unavailable" { + $out = "Hi $Username`n`nThe installer isn't available from the publisher's website:" + } + "Unattended" { + $out = "Hi $Username`n`nThe installation isn't unattended:`n`nIs there an installer switch to bypass this and have it install automatically?" + } + "UrlBad" { + $out = "Hi $Username`n`nI'm not able to find this InstallerUrl from the PackageUrl. Is there another page on the developer's site that has a link to the package?" + } + "VersionCount" { + $out = "Hi $Username`n`nThis manifest has the highest version number for this package. Is it available from another location? (This might be in error if the version is switching from semantic to string, or string to semantic.)" + } + "WhatIsIEDS" { + $out = "Hi $Username`n`nThe label `Internal-Error-Dynamic-Scan` is a blanket error for one of a number of internal pipeline errors or issues that occurred during the Dynamic Scan step of our validation process. It only indicates a pipeline issue and does not reflect on your package. Sorry for any confusion caused." + } + "WordFilter" { + $out = "This manifest contains a term that is blocked:`n`n> $UserInput" + } + } + if (!($NotAutomated)) { + $out += "`n`n(Automated response - build $build.)" + } + if ($NoClip) { + $out + } else { + $out |clip + } +} + +Function Get-AutomatedErrorAnalysis { + param( + $UserInput, + $Spacer = " | ", + $LineBreak = "`n" + ) + + #$UserSplit = $UserInput -replace "0x","" -replace "[^\w]"," " -split " " + $UserSplit = $UserInput -replace "0x"," " -replace "\)"," " -split " " + $UserSplit = $UserSplit | Sort-Object -Unique + + if ($UserInput -match "exit code" -OR + $UserInput -match "DeliveryOptimization error" -OR + $UserInput -match "Installer failed security check" -OR + $UserInput -match "Error information") { + $ExitCodeTable = gc $ExitCodeFile | ConvertFrom-Csv + $UserInput += "$LineBreak $LineBreak | Hex | Dec | Inverted Dec | Symbol | Description | $LineBreak | --- | --- | --- | --- | --- | $LineBreak" + foreach ($ExitCode in $ExitCodeTable) { + foreach ($Word in $UserSplit) { + if (($Word -eq $ExitCode.Hex) -OR ($Word -eq $ExitCode.Dec) -OR ($Word -eq $ExitCode.InvDec) ) { + $UserInput += $Spacer + $ExitCode.Hex + $Spacer + $ExitCode.Dec + $Spacer + $ExitCode.InvDec + $Spacer + $ExitCode.Symbol + $Spacer + $ExitCode.Description + $Spacer + $LineBreak + }# end if word + }# end foreach word + }#end foreach exitcode + }#end if userinput + $UserInput = $UserInput | Select-Object -Unique + return $UserInput +}#end function + +Function Get-AutoValLog { + #Needs $GitHubToken to be set up in your -PR $PROFILE or somewhere more secure. Needs permissions: workflow, + param( + $clip = (Get-Clipboard), + $PR = ($clip -split "/" | Select-String $PRRegex ), + $DestinationPath = "$MainFolder\Installers", + $LogPath = "$DestinationPath\InstallationVerificationLogs\", + $ZipPath = "$DestinationPath\InstallationVerificationLogs.zip", + [switch]$CleanoutDirectory, + [switch]$WhatIf, + [switch]$Force, + [switch]$Silent, + $notes = "" + ) + $PRState = Get-PRStateFromComments $PR + if ((!($PRState | where {$_.event -eq "AutoValEnd"})) -OR (($PRState | where {$_.event -eq "PreValidation"})[-1].created_at -gt ($PRState | where {$_.event -eq "AutoValEnd"})[-1].created_at) -OR ($Force)) { #Last Prevalidation was 8 hours ago. + $DownloadSeconds = 8; + $LowerOps = $true; + $WaiverList = Get-ValidationData -Property AutoWaiverLabel + #Get-Process *photosapp* | Stop-Process + $BuildNumber = Get-BuildFromPR -PR $PR + + if ($BuildNumber -gt 0) { + $FileList = $null + [int]$BackoffSeconds = 0 + + while ($FileList -eq $null) { + try { + #This downloads to Windows default location, which has already been set to $DestinationPath + Start-Process "$ADOMSBaseUrl/$ADOMSGUID/_apis/build/builds/$BuildNumber/artifacts?artifactName=InstallationVerificationLogs&api-version=7.1&%24format=zip" + if ($WhatIf) { + write-host "$ADOMSBaseUrl/$ADOMSGUID/_apis/build/builds/$BuildNumber/artifacts?artifactName=InstallationVerificationLogs&api-version=7.1&%24format=zip" + } + Start-Sleep $DownloadSeconds; + [bool]$IsZipPath = (Test-Path $ZipPath) + if (!$IsZipPath) { + #if (!$Force) { + $UserInput = "No logs." + $out = Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + Write-Host $UserInput + Continue; + #} + } + Remove-Item $LogPath -Recurse -ErrorAction Ignore + Expand-Archive $ZipPath -DestinationPath $DestinationPath; + Remove-Item $ZipPath + if ($CleanoutDirectory) { + Get-ChildItem $DestinationPath | Remove-Item -Recurse + } + $FileList = (Get-ChildItem $LogPath).FullName + } catch { + if ($BackoffSeconds -gt 60) { + $UserInput = "Build $BuildNumber not found." + Continue; + } + $AddSeconds = Get-Random -min 1 -max 5 + $BackoffSeconds += $AddSeconds + Write-Host "Can't access $DestinationPath or a subfolder. Backing off another $AddSeconds seconds, for $BackoffSeconds total seconds." + sleep $BackoffSeconds + } + } + + [Array]$UserInput = $null + foreach ($File in $filelist) { + $UserInput += (Get-Content $File) -split "`n" + } + $UserInput = $UserInput | Where-Object { + $_ -match '[[]FAIL[]]' -OR + $_ -match 'error' -OR + $_ -match 'exception' -OR + $_ -match 'exit code' -OR + $_ -match 'fail' -OR + $_ -match 'manual review' -OR + $_ -match 'No suitable' -OR + $_ -match 'not supported' -OR #not supported by this processor type + #$_ -match 'not applicable' -OR + $_ -match 'unwanted' -OR #PUA + $_ -match 'Unable to locate nested installer' -OR + $_ -match 'space' -OR + $_ -match 'cannot install' + } + if ($WhatIf) { + write-host "File $File - UserInput $UserInput Length $($UserInput.Length)" + } + $UserInput = $UserInput -split "`n" | Select-Object -Unique; + $UserInput = $UserInput -replace "Standard error: ",$null + $UserReplace = $UserInput -replace "\\","\\" -replace "\[","\["-replace "\]","\]"-replace "\*","\*"-replace "\+","\+" + + if ($null -notmatch ($UserReplace)) { + if (($UserInput -match "Installer failed security check") -OR ($UserInput -match "Operation did not complete successfully because the file contains a virus or potentially unwanted software")) { + $LowerOps = $false + #$UserInput = Get-AutomatedErrorAnalysis $UserInput + write-host "DefenderFail - UserInput $UserInput" + } + if ($UserInput -match "SQL error or missing database") { + Get-GitHubPreset Retry -PR $PR + if (!($Silent)) { + Write-Output "PR $PR - SQL error or missing database" + } + Open-PRInBrowser -PR $PR + } + + $UserInput = $UserInput -split "`n" + $UserInput = $UserInput -notmatch " success or error status`: 0" + $UserInput = $UserInput -notmatch "``Windows Error Reporting``" + $UserInput = $UserInput -notmatch "--- End of inner exception stack trace ---" + $UserInput = $UserInput -notmatch "AppInstallerRepositoryCore" + $UserInput = $UserInput -notmatch "api-ms-win-core-errorhandling" + $UserInput = $UserInput -notmatch "appropriate application package" + $UserInput = $UserInput -notmatch "2: 3: Error" + $UserInput = $UserInput -notmatch "because the current user does not have that package installed" + $UserInput = $UserInput -notmatch "Cannot create a file when that file already exists" + $UserInput = $UserInput -notmatch "Could not create system restore point" + $UserInput = $UserInput -notmatch "Dest filename" + $UserInput = $UserInput -notmatch "ERROR: Signature Update failed" + $UserInput = $UserInput -notmatch "Exception during executable launch operation System.InvalidOperationException: No process is associated with this object." + $UserInput = $UserInput -notmatch "Exit code`: 0" + $UserInput = $UserInput -notmatch "Failed to open available source: msstore" + $UserInput = $UserInput -notmatch "ISWEBVIEW2INSTALLED" + $UserInput = $UserInput -notmatch "MpCmdRun" + $UserInput = $UserInput -notmatch "ResultException" + $UserInput = $UserInput -notmatch "SchedNetFx" + $UserInput = $UserInput -notmatch "Setting error JSON 1.0 fields" + $UserInput = $UserInput -notmatch "Terminating context" + $UserInput = $UserInput -notmatch "The process cannot access the file because it is being used by another process" + $UserInput = $UserInput -notmatch "The FileSystemWatcher has detected an error System.IO.ErrorEventArgs" + $UserInput = $UserInput -notmatch "ThrowIfExceptional" + $UserInput = $UserInput -notmatch "Windows Installer installed the product" + $UserInput = $UserInput -notmatch "with working directory 'D" + } + $UserReplace = $UserInput -replace "\\","\\" -replace "\[","\["-replace "\]","\]"-replace "\*","\*"-replace "\+","\+" + + if ($null -notmatch ($UserReplace)) { + $UserInput = $UserInput | Select-Object -Unique + + $UserInput = $UserInput -replace "-",$null + if ($WhatIf) { + Write-Host "WhatIf: Reply-ToPR (A) -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd" + } else { + $out = Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + + + if ($LowerOps -eq $true) { + $SplitInput = ($UserInput -split "`n" ) + foreach ($input in $QueueInputs) { + if($SplitInput -match $input) { + if ($WhatIf) { + Write-Host "WhatIf: Add-PRToQueue -PR $PR" + } else { + Add-PRToQueue -PR $PR + } + + } + } + $exitregex = "exit code: [0-9]{0,3}$" + $exitregex2 = "exit code: [0-9]{4,}$" + if(!(($UserInput -split "`n" ) -match $exitregex2)) { #4 digits bad + if(($UserInput -split "`n" ) -match $exitregex) { #1-3 digits good + if ($WhatIf) { + Write-Host "WhatIf: Get-CompletePR -PR $PR" + } else { + Get-CompletePR -PR $PR + } + } + } + }#end If LowerOps + + if (!($Silent)) { + if ($WhatIf) { + Write-Host "WhatIf: Write-Host 'PR: $PR - $out'" + } else { + Write-Host "PR: $PR - $out" + } + } + } else { + if ($IsZipPath) { + $UserInput = "No errors to post." + $Title = ((Invoke-GitHubPRRequest -PR $PR -Type "" -Output content -JSON).title); + if ($WhatIf) { + Write-Host "WhatIf: Reply-ToPR (B) -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd" + Write-Host "WhatIf: Get-CompletePR -PR $PR" + Write-Host "WhatIf: Get-GitHubPreset -PR $PR Waiver" + } else { + $out = Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + Get-CompletePR -PR $PR + foreach ($Waiver in $WaiverList) { + if ($Title -match $Waiver.PackageIdentifier) { + Get-GitHubPreset -PR $PR Waiver + }#end if title + }#end foreach waiver + } + } + } + } else { + if (!($Silent)) { + if ($WhatIf) { + Write-Host "WhatIf: Reply-ToPR (C) -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd" + Write-Host "WhatIf: UserInput Length $($UserInput.Length)" + } else { + $out = Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + if ($WhatIf) { + Write-Host "WhatIf: Reply-ToPR (D) -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd" + } else { + $out = Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + $UserInput = "Build $BuildNumber not found." + Write-Host $UserInput + $out = Reply-ToPR -PR $PR -UserInput $UserInput -CannedMessage AutoValEnd + } + } + return $out + } +} + +Function Get-RandomIEDS { + param( + $VM = (Get-NextFreeVM), + $IEDSPRs =(Get-SearchGitHub -Preset IEDS -nBMM), + #$IEDSPRs =(Get-SearchGitHub -Preset ToWork3), + $PR = ($IEDSPRs.number | where {$_ -notin (Get-Status).pr} | Get-Random), + $PRData = (Invoke-GitHubRequest "$GitHubApiBaseUrl/pulls/$pr" -JSON), + $PRTitle = (($PRData.title -split " ")[2] | where {$_ -match "\."}), + $File = 0, + $ManifestType = "", + $OldManifestType = "", + $OldPackageIdentifier = "" + ) + + if ($VM -eq 0){ + Write-Host "No available $OS VMs"; + Get-PipelineVmGenerate -OS $OS; + Add-PRToQueue -PR $PR; + } else { + Get-CommitFile -PR $PR -VM $VM -MatchName "" + } +} + +Function Get-PRManifest { + param( + $PR, + $File = 0, + $ManifestType = "", + $OldManifestType = "", + $FooterHeader = "`n@@ -0,0 +0,0 @@`n", + $CommitFile = (Get-CommitFile -PR $PR -MatchName ""), + $PackageIdentifier = ((Get-YamlValue -StringName "PackageIdentifier" $CommitFile) -replace '"',''-replace "'",''), + $PackageVersion = ((Get-YamlValue -StringName "PackageVersion" $CommitFile) -replace '"',''-replace "'",''), + $Submitter = ((Invoke-GitHubRequest "$GitHubApiBaseUrl/pulls/$pr" -JSON).user.login) + ) + + $out = "$PackageIdentifier version $PackageVersion #$PR`n" + $out += "$Submitter wants to merge`n" + $out += $FooterHeader + $out += ($CommitFile -join "`n") + $out += $FooterHeader + return $out +} + +#PR tools +#Add user to PR: Invoke-GitHubPRRequest -Method $Method -Type "assignees" -Data $User -Output StatusDescription +#Approve PR (needs work): Invoke-GitHubPRRequest -PR $PR -Method Post -Type reviews +Function Invoke-GitHubPRRequest { + param( + $PR, + [ValidateSet("GET","DELETE","PATCH","POST","PUT")][string]$Method = "GET", + [ValidateSet("assignees","comments","commits","files","labels","merge","reviews","")][string]$Type = "labels", + [string]$Data, + [ValidateSet("issues","pulls")][string]$Path = "issues", + [ValidateSet("Content","Silent","StatusDescription")][string]$Output = "StatusDescription", + [switch]$JSON, + $prData = (Invoke-GitHubRequest "$GitHubApiBaseUrl/pulls/$pr/commits" -JSON), + $commit = (($prData.commit.url -split "/")[-1]) + ) + $Response = @{} + $ResponseType = $Type + $uri = "$GitHubApiBaseUrl/$Path/$pr/$Type" + + if (($Type -eq "") -OR ($Type -eq "files") -OR ($Type -eq "reviews")){ + $Path = "pulls" + $uri = "$GitHubApiBaseUrl/$Path/$pr/$Type" + } elseif ($Type -eq "comments") { + $Response.body += $Data + } elseif ($Type -eq "commits") { + $uri = "$GitHubApiBaseUrl/$Type/$commit" + } elseif ($Type -eq "merge") { + $Path = "pulls" + } elseif ($Type -eq "reviews") { + $Path = "pulls" + $Response.body = ""+$Data + $Response.commit = $commit + $Response.event = "APPROVE" + } elseif ($Type -eq "") { + #$Response.title = "" + #$Response.body = "" + $Response.state = "closed" + $Response.base = "master" + } else { + $Response.$ResponseType = @() + $Response.$ResponseType += $Data + } + + $uri = $uri -replace "/$","" + + if ($Method -eq "GET") { + $out = Invoke-GitHubRequest -Method $Method -Uri $uri + } else { + [string]$Body = $Response | ConvertTo-Json + $out = Invoke-GitHubRequest -Method $Method -Uri $uri -Body $Body + } + + if (($JSON) -OR ($Output -eq "Content")) { + if ($null -ne $out.$Output) { + try { + $out.$Output | ConvertFrom-Json + }catch{ + return ("PR: $PR - Error: $($error[0].ToString()) - Url $uri - Body: $Body") + } + } elseif ($Output -eq "Silent") { + } else { + $out.$Output + } + } else { + return "!"#"PR: $PR - No output. Method: $Method - URI: $uri" + #return ("PR: $PR - Error: $($error[0].ToString()) - Url $uri - Body: $Body") + } +} + +Function Approve-PR { + param( + $PR, + [string]$Body = "", + $prData = (Invoke-GitHubRequest "$GitHubApiBaseUrl/pulls/$pr/commits" -JSON), + $commit = (($prData.commit.url -split "/")[-1]), + $uri = "$GitHubApiBaseUrl/pulls/$pr/reviews" + ) + + $Response = @{} + $Response.body = $Body + $Response.commit = $commit + $Response.event = "APPROVE" + [string]$Body = $Response | ConvertTo-Json + + $out = Invoke-GitHubRequest -Method Post -Uri $uri -Body $Body + $out.StatusDescription + Get-AddPRLabel -PR $PR -LabelName $Labels.MA +} + +Function Get-ApproveBySearch { + Param( + [Parameter(mandatory=$True)][string]$Author, + $Preset = "ToWork", + $MatchText = 'Standardize formatting', + $Results = (Get-SearchGitHub -Author $Author -Preset $Preset -NoLabels) + ) + $Results = $Results | ? {$_.user.login -eq $Author -and $_.title -match $MatchText -and $_.labels.name -notcontains $Labels.MA -and $_.labels.name -notcontains $Labels.CR}; + $Results.number | % { write-host "$_ - " -nonewline;Approve-PR $_ }; +} + +Function Get-PRRange ([int]$firstPR,[int]$lastPR,[string]$Body,[string]$Preset) { + $line = 0;$firstPR..$lastPR | %{ + if ($Preset -eq "closed") { + Get-GitHubPreset -Preset $Preset -PR $_ -UserInput $Body + } else { + Reply-ToPR -PR $_ -Body $Body; + Get-GitHubPreset -Preset $Preset -PR $_ + } + Get-TrackerProgress -PR $_ $MyInvocation.MyCommand $line ($lastPR - $firstPR);$line++ +}} + +Function Get-AllPRsOnClipboard { + param( + $clip = (Get-Clipboard), + $hash = "#", + $br = "`n", + $sp = " " + ) + $out = @() + ($clip -replace $hash,($br+$hash) -split $br -split $sp | select-string $hash) -replace $hash,$null | %{$out += $_} + return $out +} + +Function Get-AllPRsOnClipboardPreset ([string]$Body,[string]$Preset) { + $line = 0; + Get-AllPRsOnClipboard | %{ + if ($Preset) { + if ($Preset -eq "closed") { + Get-GitHubPreset -Preset $Preset -PR $_ -UserInput $Body + } else { + Reply-ToPR -PR $_ -Body $Body; + Get-GitHubPreset -Preset $Preset -PR $_ + } + } + Get-TrackerProgress -PR $_ $MyInvocation.MyCommand $line ($lastPR - $firstPR);$line++ + } +} + +Function Get-AddPRLabel { + param( + [int]$PR, + [string]$LabelName + ) + (Invoke-GitHubPRRequest -PR $PR -Method POST -Type labels -Data $LabelName -Output Content).name +} + +Function Get-RemovePRLabel { + param( + [int]$PR, + [string]$LabelName + ) + (Invoke-GitHubRequest -Uri "$GitHubApiBaseUrl/issues/$PR/labels/$LabelName" -Method DELETE).StatusDescription +} + +function Get-CompletePR ([int]$PR){ + $PRLabels = (invoke-GitHubPRRequest -PR $PR -Type labels -Method GET -Output Content).name | + where {$_ -notmatch $Labels.APP} | + where {$_ -notmatch $Labels.MMC} | + where {$_ -notmatch $Labels.MA} | + where {$_ -notmatch $Labels.NM} | + where {$_ -notmatch $Labels.NP} | + where {$_ -notmatch $Labels.PD} | + where {$_ -notmatch $Labels.RET} | + where {$_ -notmatch $Labels.VC} + + foreach ($label in $PRLabels) { + Get-RemovePRLabel -PR $PR -Label $label + } + if (($PRLabels -join " ") -notmatch $Labels.VDE) { + Get-AddPRLabel -PR $PR -LabelName $Labels.VC + } +} + +Function Get-MergePR { + Param( + $PR, + $ShaNumber = (-1) + ) + $sha = (Invoke-GitHubRequest "$GitHubApiBaseUrl/pulls/$pr/commits" -JSON).sha + if ($null -ne $sha) { + if ($sha.gettype().name -eq "String") { + $sha = $sha + } else { + $sha = $sha[$ShaNumber] + } + } else { + write-host "SHA $sha not found (length $($sha.length)" + } + + $out = "" + $Data = Invoke-GitHubrequest -Uri "https://api.github.com/repos/microsoft/winget-pkgs/pulls/$pr/merge" -Method PUT -Body "{`"merge_method`":`"squash`",`"sha`":`"$sha`"}" + if ($Data.Content) { + $out = $Data.Content + } else { + $out = $Data + #($Data[1..$Data.length] | convertfrom-json).message + } + + $Comments = (Invoke-GitHubPRRequest -PR $PR -Type comments -Output content) + if ($out -match "Error") { + if ($Comments[-1].UserName -ne $GitHubUserName) { + Reply-ToPR -PR $PR -UserInput $out -CannedMessage MergeFail + } + } + $out + + Add-PRToRecord -PR $PR -Action Squash + #invoke-GitHubprRequest -PR $PR -Method PUT -Type merge -Data "{`"merge_method`":`"squash`",`"sha`":`"$sha`"}" +} + +Function Get-RetryPR { + Param( + $PR, + $Command = "@wingetbot run" + ) + Invoke-GitHubPRRequest -PR $PR -Type comments -Output StatusDescription -Method POST -Data $Command +} + +function Get-PushMePRYou { + Param( + $Author = "Trenly", + $MatchString = "Standardize formatting" + ) + foreach ($Preset in ("Approval","ToWork")) { + write-host "$($Preset): $(get-date)"; + $a = @(); + $a = Get-SearchGitHub -Author $Author -Preset $Preset -NoLabels; + $a = $a | ? {$_.user.login -eq $Author -and $_.title -match $MatchString -and $_.labels.name -notcontains $Labels.MA}; + $a.number | % { + write-host "$_ - " -nonewline; + Approve-PR $_ + }; + }; + + $Preset = "Complete" + write-host "$($Preset): $(get-date)"; +} + +Function Add-GitHubReviewComment { + param( + $PR, + [string]$Comment = "", + $Commit = (Invoke-GitHubPRRequest -PR $PR -Type commits -Output content -JSON), + $commitID = $commit.sha, + $Filename = $commit.files.filename, + $Side = "RIGHT", + $StartLine, + $Line + ) + if ($Filename.GetType().BaseType.Name -eq "Array") { + $Filename = $Filename[0] + } + + $Response = @{} + $Response.body = $Comment + $Response.commit_id = $commitID + $Response.path = $Filename + if ($StartLine) { + $Response.start_line = $StartLine + } + $Response.start_side = $Side + $Response.line = $Line + $Response.side = $Side + [string]$Body = $Response | ConvertTo-Json + + $uri = "$GitHubApiBaseUrl/pulls/$pr/comments" + + $out = Invoke-GitHubRequest -Method Post -Uri $uri -Body $Body + $out.StatusDescription +} + +Function Get-BuildFromPR { + param( + $PR, + $content = (Invoke-GitHubPRRequest -PR $PR -Method GET -Type comments -Output Content), + $href = ($content.body | where {$_ -match "Validation Pipeline Run"}) + ) + if ($href.gettype().basetype.name -eq "Array" ) { + $href = $href[-1] + } + $PRbuild = (($href -split "=" -replace "\)")[1]) + return $PRbuild +} + +Function Get-LineFromBuildResult { + param( + $PR, + $PRbuild = (Get-BuildFromPR -PR $PR), + $LogNumber = (36), + $SearchString = "Specified hash doesn't match", + $content = (Invoke-WebRequest "$ADOMSBaseUrl/$ADOMSGUID/_apis/build/builds/$PRbuild/logs/$LogNumber" -ProgressAction SilentlyContinue).content, + $Log = ($content -join "" -split "`n"), + $MatchOffset = (-1), + $MatchLine = (($Log | Select-String -SimpleMatch $SearchString).LineNumber | where {$_ -gt 0}), + $Length = 0, + $output = @() + ) + foreach ($Match in $MatchLine) { + $output += ($Log[($Match + $MatchOffset)..($Match+$Length + $MatchOffset)]) + } + return $output +} + +Function Get-PRApproval { + param( + $Clip = (Get-Clipboard), + [int]$PR = (($Clip -split "#")[1]), + $PackageIdentifier = ((($clip -split ": ")[1] -split " ")[0]), + $auth = (Get-ValidationData -Property PackageIdentifier -Match $PackageIdentifier -Exact).GitHubUserName, + $Approver = (($auth -split "/" | Where-Object {$_ -notmatch "\("}) -join ", @"), + [switch]$DemoMode + ) + Reply-ToPR -PR $PR -UserInput $Approver -CannedMessage Approve -Policy $Labels.NR +} + +Function Reply-ToPR { + param( + $PR, + [string]$CannedMessage, + [string]$UserInput = ((Invoke-GitHubPRRequest -PR $PR -Type "" -Output content -JSON).user.login), + [string]$Body = (Get-CannedMessage $CannedMessage -UserInput $UserInput -NoClip), + [string]$Policy, + [Switch]$Silent + ) + if ($Policy) { + $Body += "`n" + } + # If (($CannedMessage -eq "AutoValEnd") -OR ($CannedMessage -eq "ManValEnd")) { + # $SharedError = Get-AutomatedErrorAnalysis $SharedError + # } + if ($Silent) { + Invoke-GitHubPRRequest -PR $PR -Method Post -Type "comments" -Data $Body -Output Silent + } else { + Invoke-GitHubPRRequest -PR $PR -Method Post -Type "comments" -Data $Body -Output StatusDescription + } +} + +Function Get-NonstandardPRComments { + param( + $PR, + $comments = (Invoke-GitHubPRRequest -PR $PR -Type comments -Output content).body + ) + foreach ($StdComment in $StandardPRComments) { + $comments = $comments | Where-Object {$_ -notmatch $StdComment} + } + return $comments +} + +Function Get-PRStateFromComments { + param( + $PR = (Get-Clipboard), + $PRComments = (Invoke-GitHubPRRequest -PR $PR -Type comments -Output content | select created_at,@{n="UserName";e={$_.user.login -replace "\[bot\]"}},body), + $PRStateData = ((Get-Content $PRStateDataFile) -replace "GitHubUserName",$GitHubUserName | ConvertFrom-Csv), + [switch]$WhatIf + ) + if ($WhatIf) { + write-host "PR $PR - Comments $($PRComments.count)" + } + $Robots = @{} + $Robots.Wingetbot = "wingetbot" + $Robots.AzurePipelines = "azure-pipelines" + $Robots.FabricBot = "microsoft-github-policy-service" + + $Run = @{} + $Run.azp1 = "AzurePipelines run" + $Run.azp2 = "azp run" + $Run.wingetbot = "wingetbot run" + + $States = @{} + $States.PreRun = "PreRun" + $States.PreValidation = "PreValidation" + $States.Running = "Running" + $States.PreApproval = "PreApproval" + $States.DefenderFail = "DefenderFail" + $States.InstallerAvailable = "InstallerAvailable" + $States.InstallerRemoved = "InstallerRemoved" + $States.VersionParamMismatch = "VersionParamMismatch" + $States.LabelAction = "LabelAction" + $States.DomainReview = "DomainReview" + $States.SequenceError = "SequenceError" + $States.HighestVersionRemoval = "HighestVersionRemoval" + $States.SQLMissingError = "SQLMissingError" + $States.ChangesRequested = "ChangesRequested" + $States.HashMismatch = "HashMismatch" + $States.AutoValEnd = "AutoValEnd" + $States.ManValEnd = "ManValEnd" + $States.MergeConflicts = "MergeConflicts" + $States.ValidationCompleted = "ValidationCompleted" + $States.PublishSucceeded = "PublishSucceeded" + + $LabelActionComments = @{} + $LabelActionComments.URLError = "The package manager bot determined there was an issue with one of the installers listed in the url field" + $LabelActionComments.ValidationInstallationError = "The package manager bot determined there was an issue with installing the application correctly" + $LabelActionComments.InternalError = "The pull request encountered an internal error and has been assigned to a developer to investigate" + $LabelActionComments.ValidationUnattendedFailed = "this application failed to install without user input" + $LabelActionComments.ManifestValidationError = "Please verify the manifest file is compliant with the package manager" + + + $out = @() + foreach ($PRComment in $PRComments) { + $State = "" + $PRComment.created_at = [TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($PRComment.created_at, 'Pacific Standard Time') + if ($WhatIf) { + write-host "PR $PR - created_at $($PRComment.created_at)" + } + + if (($PRComment.body -match $Run.azp1) -OR + ($PRComment.body -match $Run.azp2) -OR + ($PRComment.body -match $Run.wingetbot)) { + if ($WhatIf) { + write-host "PR $PR - State $($States.PreValidation)" + } + $State = $States.PreValidation + } elseif (($PRComment.UserName -eq $Robots.FabricBot) -AND ( + ($PRComment.body -match $LabelActionComments.URLError) -OR + ($PRComment.body -match $LabelActionComments.ValidationInstallationError) -OR + ($PRComment.body -match $LabelActionComments.InternalError) -OR + ($PRComment.body -match $LabelActionComments.ValidationUnattendedFailed) -OR + ($PRComment.body -match $LabelActionComments.ManifestValidationError) + )) { + if ($WhatIf) { + write-host "PR $PR - State $($States.LabelAction)" + } + $State = $States.LabelAction + } else { + foreach ($Key in $States.Keys) { + $KeyData = $PRStateData | where {$_.State -eq $Key} + if ($WhatIf) { + write-host "PR $PR - key $key - State $($States.Key) - botcomment $($KeyData.BotComment) - PRComment $($PRComment.body)" + } + if (($PRComment.body -match $KeyData.BotComment) -AND ($PRComment.UserName -eq $KeyData.User)) { + if ($WhatIf) { + write-host "PR $PR - match $($KeyData.BotComment)" + } + $State = $States.$Key + } + } + } + if ($WhatIf) { + write-host "PR $PR - State $State" + } + if ($State -ne "") { + if ($WhatIf) { + write-host "PR $PR - out $out" + } + $out += $PRComment | select @{n="event";e={$State}},created_at + } + } + Return $out +} + +Function Get-AddToAutowaiver { + param( + $PR, + $RemoveLabel, + $AutowaiverData = (Get-Content $AutowaiverFile | ConvertFrom-Csv), + $PRData = (Get-CommitFile -PR $PR), + $PackageIdentifier = (Get-YamlValue -StringName PackageIdentifier -clip $PRData) + ) + $NewLine = "" | select "PackageIdentifier","ManifestValue","ManifestKey","RemoveLabel" + $NewLine.PackageIdentifier = $PackageIdentifier + $NewLine.RemoveLabel = $RemoveLabel + if (($RemoveLabel -eq $Labels.VD) -or ($RemoveLabel -eq $Labels.VUU)) { + $NewLine.ManifestValue = ((Get-YamlValue -StringName InstallerUrl -clip $PRData) -split "/")[2] + $NewLine.ManifestKey = "InstallerUrl" + } else { + $NewLine.ManifestValue = $PackageIdentifier + $NewLine.ManifestKey = "PackageIdentifier" + } + + $AutowaiverData += $NewLine + ($AutowaiverData | sort PackageIdentifier | ConvertTo-Csv) | Out-File $AutowaiverFile +} + +Function Get-Autowaiver { + param( + [int]$PR = (Get-PRNumber (Get-Clipboard) -Hash), + $AutowaiverData = (Get-Content $AutowaiverFile | ConvertFrom-Csv), + $PRData = (Get-CommitFile -PR $PR), + $PackageIdentifier = (Get-YamlValue -StringName PackageIdentifier -clip $PRData), + $WaiverData = ($AutowaiverData | ?{$_.PackageIdentifier -eq $PackageIdentifier}) + ) + if ($WaiverData) { + Add-PRToRecord -PR $PR -Action $Actions.Waiver + foreach ($Waiver in $WaiverData) { + try { + $PackageValue = (Get-YamlValue -StringName $Waiver.ManifestKey -clip $PRData) + } catch {} + if ($PackageValue -match $Waiver.ManifestValue) { + Get-RemovePRLabel -PR $PR -LabelName $Waiver.RemoveLabel + Get-RemovePRLabel -PR $pr -LabelName "Needs-Author-Feedback" + Get-RemovePRLabel -PR $pr -LabelName "Needs-Attention" + Get-AddPRLabel -PR $PR -LabelName Validation-Completed + } + } + } +} + +Function Get-VerifyMMC { + param( + [int]$PR = (Get-PRNumber $clip -Hash) + ) + $Comments = (Invoke-GitHubPRRequest -PR $PR -Type comments -Output content | select created_at,@{n="UserName";e={$_.user.login -replace "\[bot\]"}},body) + [array]$MissingProperties = ($Comments.body | ? {$_ -match "=== manifests"}) -split "`n" | ?{ $_ -notmatch "=== manifests" -AND + $_ -notmatch "Missing Properties" -AND + $_ -notmatch "Icons" -AND + $_ -notmatch "Platform" -AND + $_ -notmatch "MinimumOSVersion" -AND + $_ -notmatch "ReleaseNotes" -AND + $_ -notmatch "ReleaseNotesUrl" -AND + $_ -notmatch "ReleaseDate"} + if (!$MissingProperties) { + Get-RemovePRLabel -PR $PR -LabelName Manifest-Metadata-Consistency + } +} + +Function Get-DuplicateCheck { + param( + [int]$PR + ) + $PRLabels = ((Invoke-GitHubPRRequest -PR $PR -Type "labels" -Output content -JSON).name) + if ($PRLabels -match $Labels.VC) { #If this PR is VC + $Comments = (Invoke-GitHubPRRequest -PR $PR -Type comments -Output content) + $otherPR = $Comments.body | ? {$_ -match "Found duplicate pull request"} + $otherPR = $otherPR -split "`n" + [int]$otherPR = (($otherPR | where {$_ -match $hashPRRegex}) -split "#")[-1] + $otherPRLabels = ((Invoke-GitHubPRRequest -PR $otherPR -Type "labels" -Output content -JSON).name) + [int]$mainPR = 0 + [int]$dupePR = 0 + if ($otherPRLabels -match $Labels.VC) { #If other is VC, close the lower number as other. + if ($otherPRLabels -match $Labels.MA) { #If other is VCMA, close this. + $mainPR = $otherPR + $dupePR = $PR + } else { #If the other is not VC, close it as other. + $mainPR = [math]::Max($PR,$otherPR) + $dupePR = [math]::Min($PR,$otherPR) + }# end if Moderator-Approved + } else { #If the other is not VC, close it as other. + $mainPR = $PR + $dupePR = $otherPR + }# end if Validation-Completed + if ($dupePR -gt 0) { + Get-GitHubPreset -Preset Duplicate -PR $dupePR -UserInput $mainPR + Get-RemovePRLabel -PR $mainPR -Label $Labels.PD + }# end if dupePR + }# end if mainPRLabels +}# end function + +#Network tools +#GET = Read; POST = Append; PUT = Write; DELETE = delete +Function Invoke-GitHubRequest { + param( + [Parameter(mandatory=$True)][string]$Uri, + [string]$Body, + [ValidateSet("DELETE","GET","HEAD","PATCH","POST","PUT")][string]$Method = "GET", + $Headers = @{"Authorization"="Bearer $GitHubToken"; "Accept"="application/vnd.github+json"; "X-GitHub-Api-Version"="2022-11-28"}, + #[ValidateSet("content","StatusDescription")][string]$Output = "content", + [switch]$JSON, + $out = "" + ) + if ($Body) { + try { + $out = (Invoke-WebRequest -Method $Method -Uri $Uri -Headers $Headers -Body $Body -ContentType application/json -ProgressAction SilentlyContinue) + } catch { + Write-Output ("Error: $($error[0].ToString()) - Url $Url - Body: $Body") + } + } else { + try { + $out = (Invoke-WebRequest -Method $Method -Uri $Uri -Headers $Headers -ProgressAction SilentlyContinue) + } catch { + Write-Output ("Error: $($error[0].ToString()) - Url $Url - Body: $Body") + } + } + #GitHub requires the value be the .body property of the variable. This makes more sense with CURL, Where-Object this is the -data parameter. However with Invoke-WebRequest it's the -Body parameter, so we end up with the awkward situation of having a Body parameter that needs to be prepended with a body property. + #if (!($Silent)) { + if (($JSON)){# -OR ($Output -eq "content")) { + $out | ConvertFrom-Json + } else { + $out + } + #} + Start-Sleep $GitHubRateLimitDelay; +} + +Function Check-PRInstallerStatusInnerWrapper { + param( + $Url, + $Code = (Invoke-WebRequest $Url -Method Head -ErrorAction SilentlyContinue -ProgressAction SilentlyContinue).StatusCode + ) + return $Code +} + +#Validation Starts Here +#Validation Starts Here +#Validation Starts Here +Function Get-TrackerVMValidate { + param( + $clipInput = ((Get-Clipboard) -split "`n"), + $clip = ($clipInput[0..(($clipInput | Select-String "Do not share my personal information").LineNumber -1)]), + [ValidateSet("Win10","Win11")][string]$OS = (Get-OSFromVersion -clip $clip), + [int]$vm = ((Get-NextFreeVM -OS $OS) -replace"vm",""), + [switch]$NoFiles, + [ValidateSet("Configure","DevHomeConfig","Pin","Scan")][string]$Operation = "Scan", + [switch]$InspectNew, + [switch]$notElevated, + $ManualDependency, + $PackageIdentifier = ((Get-YamlValue -StringName "PackageIdentifier" $clip) -replace '"',''-replace "'",''), + $PackageVersion = ((Get-YamlValue -StringName "PackageVersion" $clip) -replace '"',''-replace "'",''), + [int]$PR = (Get-PRNumber $clip -Hash), + $RemoteFolder = "//$remoteIP/ManVal/vm/$vm", + $installerLine = "--manifest $RemoteFolder/manifest", + [ValidateSet("x86","x64","arm","arm32","arm64","neutral")][string]$Arch, + [ValidateSet("User","Machine")][string]$Scope, + $InstallerType, + [string]$Locale, + [switch]$Force, + [switch]$Silent, + [switch]$PauseAfterInstall, + $optionsLine = "" + ) + <#Sections: + Construct WinGet args string and populate script variables. + - If Configure - skip all of this and just add the Configure file as the WinGet arg. + Construct the VM script from the script variables and output to commands file. + - If Configure - Construct a similar script and perform the same output. + Construct the manifest from the files in the clipboard. + - If NoFiles, skip. + Perform new package inspection. + - If not InspectNew, skip. + Revert selected VM and launch its window. + #> + + Test-Admin + Get-StaleVMCheck + + #Check if PR is open + $PRState = Invoke-GitHubPRRequest -PR $PR -Type "" -Output Content + + $LabelList = (Invoke-GitHubPRRequest -PR $PR -Type labels -Output Content).name + if ($Force -OR !((($LabelList -join " ") -match $Labels.MA) -AND (($LabelList -join " ") -match $Labels.CR) -AND (($LabelList -join " ") -match "New-Package")) -OR ($PRState.merged -ne $False) -OR ($PRState.state -ne "open")) { + if ($vm -eq 0){ + Write-Host "No available $OS VMs"; + Get-PipelineVmGenerate -OS $OS; + #Break; + } + $PackageMode = "Existing" + + + if ($null -eq (Find-WinGetPackage $PackageIdentifier)) { + $PackageMode = "New" + } + $PostInstallPause = "" + if ($PauseAfterInstall) { + $PostInstallPause = "Read-Host 'Install complete, press ENTER to continue...'" + } + if ($Silent) { + Get-TrackerVMSetStatus "Prevalidation" $VM $PackageIdentifier -PR $PR -Mode $PackageMode -Silent + } else { + Get-TrackerVMSetStatus "Prevalidation" $VM $PackageIdentifier -PR $PR -Mode $PackageMode + } + if ((Get-VM "vm$VM").state -ne "Running") {Start-VM "vm$VM"} + + $logLine = "$OS " + $nonElevatedShell = "" + $logExt = "log" + $VMFolder = "$MainFolder\vm\$vm" + $manifestFolder = "$VMFolder\manifest" + $CmdsFileName = "$VMFolder\cmds.ps1" + + if ($Operation -eq "Configure") { + if (!($Silent)) { + Write-Host "Running Manual Config build $build on vm$VM for ConfigureFile" + } + $wingetArgs = "configure -f $RemoteFolder/manifest/config.yaml --accept-configuration-agreements --disable-interactivity" + $Operation = "Configure" + $InspectNew = $False + } else { + if ($PackageIdentifier -eq "") { + Write-Host "Bad PackageIdentifier: $PackageIdentifier" + #Break; + $PackageIdentifier | clip + } + if (!($Silent)) { + Write-Host "Running Manual Validation build $build on vm$VM for package $PackageIdentifier version $PackageVersion" + } + + if ($PackageVersion) { + $logExt = $PackageVersion+"."+$logExt + $logLine += "version $PackageVersion " + } + if ($Locale) { + $logExt = $Locale+"."+$logExt + $optionsLine += " --locale $Locale " + $logLine += "locale $Locale " + } + if ($Scope) { + $logExt = $Scope+"."+$logExt + $optionsLine += " --scope $Scope " + $logLine += "scope $Scope " + } + if ($InstallerType) { + $logExt = $InstallerType+"."+$logExt + $optionsLine += " --installer-type $InstallerType " + $logLine += "InstallerType $InstallerType " + } + $Archs = ($clip | Select-String -notmatch "arm" | Select-String "Architecture: " )|ForEach-Object{($_ -split ": ")[1]} + $archDetect = "" + $archColor = "yellow" + if ($Archs) { + if ($Archs[0].length -ge 2) { + if ($Arch) { + $archDetect = "Selected" + } else { + $Arch = $Archs[0] + $archDetect = "Detected" + } + $archColor = "red" + } else { + if ($Archs -eq "neutral") { + $archColor = "yellow" + } else { + $Arch = $Archs + $archDetect = "Detected" + $archColor = "green" + } + } + } + if ($Arch) { + $logExt = $Arch+"."+$logExt + if (!($Silent)) { + Write-Host "$archDetect Arch $Arch of available architectures: $Archs" -f $archColor + } + $logLine += "$Arch " + } + $MDLog = "" + if ($ManualDependency) { + $MDLog = $ManualDependency + if (!($Silent)) { + Write-Host " = = = = Installing manual dependency $ManualDependency = = = = " + } + [string]$ManualDependency = "Out-Log 'Installing manual dependency $ManualDependency.';Start-Process 'winget' 'install "+$ManualDependency+" --accept-package-agreements --ignore-local-archive-malware-scan' -wait`n" + } + if ($notElevated -OR ($clip | Select-String "ElevationRequirement: elevationProhibited")) { + if (!($Silent)) { + Write-Host " = = = = Detecting de-elevation requirement = = = = " + } + $nonElevatedShell = "if ([bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match 'S-1-5-32-544')){& explorer.exe 'C:\Program Files\PowerShell\7\pwsh.exe';Stop-Process (Get-Process WindowsTerminal).id}" + #If elevated, run^^ and exit, else run cmds. + } + $packageName = ($PackageIdentifier -split "[.]")[1] + $wingetArgs = "install $optionsLine $installerLine --accept-package-agreements --ignore-local-archive-malware-scan" + } + $cmdsOut = "" + + switch ($Operation) { + "Configure" { + $cmdsOut = "$nonElevatedShell + `$TimeStart = Get-Date; + `$ConfigurelLogFolder = `"$SharedFolder/logs/Configure/$(Get-Date -UFormat %B)/`$(Get-Date -Format dd)`" + Function Out-Log ([string]`$logData,[string]`$logColor='cyan') { + `$TimeStamp = (Get-Date -Format T) + ': '; + `$logEntry = `$TimeStamp + `$logData + Write-Host `$logEntry -f `$logColor; + md `$ConfigurelLogFolder -ErrorAction Ignore + `$logEntry | Out-File `"`$ConfigurelLogFolder/$PackageIdentifier.$logExt`" -Append -Encoding unicode + }; + Function Out-ErrorData (`$errArray,[string]`$serviceName,`$errorName='errors') { + Out-Log `"Detected `$(`$errArray.count) `$serviceName `$(`$errorName): `" + `$errArray | ForEach-Object {Out-Log `$_ 'red'} + }; + Get-TrackerVMSetStatus 'Installing' + Out-Log ' = = = = Starting Manual Validation pipeline build $build on VM $VM Configure file $logLine = = = = ' + + Out-Log 'Pre-testing log cleanup.' + Out-Log 'Clearing PowerShell errors.' + `$Error.Clear() + Out-Log 'Clearing Application Log.' + Clear-EventLog -LogName Application -ErrorAction Ignore + Out-Log 'Clearing WinGet Log folder.' + `$WinGetLogFolder = 'C:\Users\User\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir' + rm `$WinGetLogFolder\* + Out-Log 'Gathering WinGet info.' + `$info = winget --info + Out-ErrorData @(`$info[0],`$info[3],`$info[4],`$info[5]) 'WinGet' 'infos' + + Out-Log `"Main Package Configure with args: $wingetArgs`" + `$mainpackage = (Start-Process 'winget' '$wingetArgs' -wait -PassThru); + + Out-Log `"`$(`$mainpackage.processname) finished with exit code: `$(`$mainpackage.ExitCode)`"; + If (`$mainpackage.ExitCode -ne 0) { + Out-Log 'Install Failed.'; + explorer.exe `$WinGetLogFolder; + Out-ErrorData ((Get-ChildItem `$WinGetLogFolder).fullname | ForEach-Object {Get-Content `$_ |Where-Object {`$_ -match '[[]FAIL[]]' -OR `$_ -match 'failed' -OR `$_ -match 'error' -OR `$_ -match 'does not match'}}) 'WinGet' + Out-ErrorData '$MDLog' 'Manual' 'Dependency' + Out-ErrorData `$Error 'PowerShell' + Out-ErrorData (Get-EventLog Application -EntryType Error -after `$TimeStart -ErrorAction Ignore).Message 'Application Log' + + Out-Log `" = = = = Failing Manual Validation pipeline build $build on VM $VM for Configure file $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'ValidationCompleted' + Break; + } + Read-Host 'Configure complete, press ENTER to continue...' #Uncomment to examine installer before scanning, for when scanning disrupts the install. + + Get-TrackerVMSetStatus 'Scanning' + + `$WinGetLogs = ((Get-ChildItem `$WinGetLogFolder).fullname | ForEach-Object {Get-Content `$_ |Where-Object {`$_ -match '[[]FAIL[]]' -OR `$_ -match 'failed' -OR `$_ -match 'error' -OR `$_ -match 'does not match'}}) + `$DefenderThreat = (Get-MPThreat).ThreatName + + Out-ErrorData `$WinGetLogs 'WinGet' + Out-ErrorData `$Error 'PowerShell' + Out-ErrorData (Get-EventLog Application -EntryType Error -after `$TimeStart -ErrorAction Ignore).Message 'Application Log' + Out-ErrorData `$DefenderThreat `"Defender (with signature version `$((Get-MpComputerStatus).QuickScanSignatureVersion))`" + + Out-Log `" = = = = Completing Manual Validation pipeline build $build on VM $VM for Configure file $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'ValidationCompleted' + + " + }#end Configure + "Scan" { + $cmdsOut = "$nonElevatedShell + `$TimeStart = Get-Date; + `$explorerPid = (Get-Process Explorer).id; + `$ManValLogFolder = `"$SharedFolder/logs/$(Get-Date -UFormat %B)/`$(Get-Date -Format dd)`" + Function Out-Log ([string]`$logData,[string]`$logColor='cyan') { + `$TimeStamp = (Get-Date -Format T) + ': '; + `$logEntry = `$TimeStamp + `$logData + Write-Host `$logEntry -f `$logColor; + md `$ManValLogFolder -ErrorAction Ignore + `$logEntry | Out-File `"`$ManValLogFolder/$PackageIdentifier.$logExt`" -Append -Encoding unicode + }; + Function Out-ErrorData (`$errArray,[string]`$serviceName,`$errorName='errors') { + Out-Log `"Detected `$(`$errArray.count) `$serviceName `$(`$errorName): `" + `$errArray | ForEach-Object {Out-Log `$_ 'red'} + }; + Function Get-TrackerProgress { + param( + `$File, + `$Activity, + `$Incrementor, + `$Length, + `$Percent = [math]::round(`$Incrementor / `$length*100,2) + ) + }; + Get-TrackerVMSetStatus 'Installing' + Out-Log ' = = = = Starting Manual Validation pipeline build $build on VM $VM $PackageIdentifier $logLine = = = = ' + + Out-Log 'Pre-testing log cleanup.' + Out-Log 'Upgrading installed applications.' + Out-Log (WinGet upgrade --all --include-pinned --disable-interactivity) + Out-Log 'Clearing PowerShell errors.' + `$Error.Clear() + Out-Log 'Clearing Application Log.' + Clear-EventLog -LogName Application -ErrorAction Ignore + Out-Log 'Clearing WinGet Log folder.' + `$WinGetLogFolder = 'C:\Users\User\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir' + rm `$WinGetLogFolder\* + Out-Log 'Updating Defender signature.' + Update-MpSignature + Out-Log 'Gathering WinGet info.' + `$info = winget --info + Out-ErrorData @(`$info[0],`$info[3],`$info[4],`$info[5]) 'WinGet' 'infos' + + `$InstallStart = Get-Date; + $ManualDependency + Out-Log `"Main Package Install with args: $wingetArgs`" + `$mainpackage = (Start-Process 'winget' '$wingetArgs' -wait -PassThru); + Out-Log `"`$(`$mainpackage.processname) finished with exit code: `$(`$mainpackage.ExitCode)`"; + `$SleepSeconds = 15 #Sleep a few seconds for processes to complete. + if ((`$InstallStart).AddSeconds(`$SleepSeconds) -gt (Get-Date)) { + sleep ((`$InstallStart).AddSeconds(`$SleepSeconds)-(Get-Date)).totalseconds + } + `$InstallEnd = Get-Date; + + If (`$mainpackage.ExitCode -ne 0) { + Out-Log 'Install Failed.'; + explorer.exe `$WinGetLogFolder; + + `$WinGetLogs = ((Get-ChildItem `$WinGetLogFolder).fullname | ForEach-Object { + Get-Content `$_ | Where-Object { + `$_ -match '[[]FAIL[]]' -OR + `$_ -match 'failed' -OR + `$_ -match 'error' -OR + `$_ -match 'does not match' + } + }) + `$DefenderThreat = (Get-MPThreat).ThreatName + + Out-ErrorData `$WinGetLogs 'WinGet' + Out-ErrorData '$MDLog' 'Manual' 'Dependency' + Out-ErrorData `$Error 'PowerShell' + Out-ErrorData (Get-EventLog Application -EntryType Error -after `$TimeStart -ErrorAction Ignore).Message 'Application Log' + Out-ErrorData `$DefenderThreat `"Defender (with signature version `$((Get-MpComputerStatus).QuickScanSignatureVersion))`" + + Out-Log `" = = = = Failing Manual Validation pipeline build $build on VM $VM for $PackageIdentifier $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + + if ((`$WinGetLogs -match '\[FAIL\] Installer failed security check.') -OR + (`$WinGetLogs -match '80190194 Not found') -OR + (`$WinGetLogs -match 'Package hash verification failed') -OR + (`$WinGetLogs -match 'Operation did not complete successfully because the file contains a virus or potentially unwanted software')){ + Send-SharedError -clip `$WinGetLogs + } elseif (`$DefenderThreat) { + Send-SharedError -clip `$DefenderThreat + } else { + Get-TrackerVMSetStatus 'ValidationCompleted' + } + + Break; + } + $PostInstallPause + + + + Get-TrackerVMSetStatus 'Scanning' + + Out-Log 'Install complete, starting file change scan.' + `$files = '' + if (Test-Path $RemoteFolder\files.txt) {#If we have a list of files to run - a relic from before automatic file gathering. + `$files = Get-Content $RemoteFolder\files.txt + } else { + `$files1 = ( + Get-ChildItem c:\ -File -Recurse -ErrorAction Ignore -Force | + Where-Object {`$_.CreationTime -gt `$InstallStart} | + Where-Object {`$_.CreationTime -lt `$InstallEnd} | + %{`$line++;Get-TrackerProgress `$_ `"lnk`" `$line `$line;return `$_} + ).FullName + `$files2 = ( + Get-ChildItem c:\ -File -Recurse -ErrorAction Ignore -Force | + Where-Object {`$_.LastAccessTIme -gt `$InstallStart} | + Where-Object {`$_.CreationTime -lt `$InstallEnd} | + %{`$line++;Get-TrackerProgress `$_ `"lnk`" `$line `$line;return `$_} + ).FullName + `$files3 = ( + Get-ChildItem c:\ -File -Recurse -ErrorAction Ignore -Force | + Where-Object {`$_.LastWriteTIme -gt `$InstallStart} | + Where-Object {`$_.CreationTime -lt `$InstallEnd} | + %{`$line++;Get-TrackerProgress `$_ `"lnk`" `$line `$line;return `$_} + ).FullName + `$files = `$files1 + `$files2 + `$files3 | Select-Object -Unique + } + + Out-Log `"Reading `$(`$files.count) file changes in the last `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. Starting bulk file execution:`" + `$files = `$files | + Where-Object {`$_ -notmatch 'AppRepository'} | + Where-Object {`$_ -notmatch 'assembly'} | + Where-Object {`$_ -notmatch 'CbsTemp'} | + Where-Object {`$_ -notmatch 'CryptnetUrlCache'} | + Where-Object {`$_ -notmatch 'DesktopAppInstaller'} | + Where-Object {`$_ -notmatch 'dotnet'} | + Where-Object {`$_ -notmatch 'dump64a'} | + Where-Object {`$_ -notmatch 'EdgeCore'} | + Where-Object {`$_ -notmatch 'EdgeUpdate'} | + Where-Object {`$_ -notmatch 'EdgeWebView'} | + Where-Object {`$_ -notmatch 'ErrorDialog = ErrorDlg'} | + Where-Object {`$_ -notmatch 'Microsoft.Windows.Search'} | + Where-Object {`$_ -notmatch 'Microsoft\\Edge\\Application'} | + Where-Object {`$_ -notmatch 'msedge'} | + Where-Object {`$_ -notmatch 'NativeImages'} | + Where-Object {`$_ -notmatch 'Prefetch'} | + Where-Object {`$_ -notmatch 'Provisioning'} | + Where-Object {`$_ -notmatch 'redis'} | + Where-Object {`$_ -notmatch 'servicing'} | + Where-Object {`$_ -notmatch 'System32'} | + Where-Object {`$_ -notmatch 'SysWOW64'} | + Where-Object {`$_ -notmatch 'unins'} | + Where-Object {`$_ -notmatch 'waasmedic'} | + Where-Object {`$_ -notmatch 'Windows Defender'} | + Where-Object {`$_ -notmatch 'Windows Error Reporting'} | + Where-Object {`$_ -notmatch 'WindowsUpdate'} | + Where-Object {`$_ -notmatch 'WinSxS'} + + `$files | Out-File 'C:\Users\user\Desktop\ChangedFiles.txt' + `$files | Select-String '[.]exe`$' | ForEach-Object {if (`$_ -match '$packageName') {Out-Log `$_ 'green'} else{Out-Log `$_ 'cyan'}; try{Start-Process `$_}catch{}}; + `$files | Select-String '[.]msi`$' | ForEach-Object {if (`$_ -match '$packageName') {Out-Log `$_ 'green'} else{Out-Log `$_ 'cyan'}; try{Start-Process `$_}catch{}}; + `$files | Select-String '[.]lnk`$' | ForEach-Object {if (`$_ -match '$packageName') {Out-Log `$_ 'green'} else{Out-Log `$_ 'cyan'}; try{Start-Process `$_}catch{}}; + + Out-Log `" = = = = End file list. Starting Defender scan.`" + Start-MpScan; + + Out-Log `"Defender scan complete, closing windows...`" + Get-Process msedge | Stop-Process -Force + Get-Process mip | Stop-Process + Get-Process powershell | where {`$_.id -ne `$PID} | Stop-Process + Get-Process explorer | where {`$_.id -ne `$explorerPid} | Stop-Process + + Get-process | Where-Object { `$_.mainwindowtitle -ne '' -and `$_.processname -notmatch '$packageName' -and `$_.processname -ne 'powershell' -and `$_.processname -ne 'WindowsTerminal' -and `$_.processname -ne 'csrss' -and `$_.processname -ne 'dwm'} | Stop-Process + #Get-Process | Where-Object {`$_.id -notmatch `$PID -and `$_.id -notmatch `$explorerPid -and `$_.processname -notmatch `$packageName -and `$_.processname -ne 'csrss' -and `$_.processname -ne 'dwm'} | Stop-Process + + `$WinGetLogs = ((Get-ChildItem `$WinGetLogFolder).fullname | ForEach-Object {Get-Content `$_ |Where-Object {`$_ -match '[[]FAIL[]]' -OR `$_ -match 'failed' -OR `$_ -match 'error' -OR `$_ -match 'does not match'}}) + `$DefenderThreat = (Get-MPThreat).ThreatName + + Out-ErrorData `$WinGetLogs 'WinGet' + Out-ErrorData '$MDLog' 'Manual' 'Dependency' + Out-ErrorData `$Error 'PowerShell' + Out-ErrorData (Get-EventLog Application -EntryType Error -after `$TimeStart -ErrorAction Ignore).Message 'Application Log' + Out-ErrorData `$DefenderThreat `"Defender (with signature version `$((Get-MpComputerStatus).QuickScanSignatureVersion))`" + + if ((`$WinGetLogs -match '\[FAIL\] Installer failed security check.') -OR + (`$WinGetLogs -match 'Package hash verification failed') -OR + (`$WinGetLogs -match 'Operation did not complete successfully because the file contains a virus or potentially unwanted software')){ + Send-SharedError -clip `$WinGetLogs + Out-Log `" = = = = Failing Manual Validation pipeline build $build on VM $VM for $PackageIdentifier $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'SendStatus' + } elseif (`$DefenderThreat) { + Send-SharedError -clip `$DefenderThreat + Out-Log `" = = = = Failing Manual Validation pipeline build $build on VM $VM for $PackageIdentifier $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'SendStatus' + } elseif ((Get-Content $RemoteTrackerModeFile) -eq 'IEDS') { + Out-Log `" = = = = Auto-Completing Manual Validation pipeline build $build on VM $VM for $PackageIdentifier $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'Approved' + } elseif ((Get-TrackerVMStatus | where {`$_.vm -match `$vm}).Mode -eq 'Existing') { + Out-Log `" = = = = Auto-Completing Manual Validation pipeline build $build on VM $VM for $PackageIdentifier $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'Approved' + } else { + Start-Process PowerShell + Out-Log `" = = = = Completing Manual Validation pipeline build $build on VM $VM for $PackageIdentifier $logLine in `$(((Get-Date) -`$TimeStart).TotalSeconds) seconds. = = = = `" + Get-TrackerVMSetStatus 'ValidationCompleted' + } + + " + }#end Scan + Default { + Write-Host "Error: Bad Function" + Break; + } + } + + $cmdsOut | Out-File $CmdsFileName + + if ($NoFiles -eq $False) { + #Extract multi-part manifest from clipboard and write to disk + if (!($Silent)) { + Write-Host "Removing previous manifest and adding current..." + } + Get-RemoveFileIfExist "$manifestFolder" -remake -Silent + if ($Operation -eq "Configure") { + $FilePath = "$manifestFolder\config.yaml" + Out-File -FilePath $FilePath -InputObject $clipInput + } else { + $Files = @() + $Files += "Package.installer.yaml" + $FileNames = ($clip | Select-String "[.]yaml") |ForEach-Object{($_ -split "/")[-1]} + $replace = $FileNames[-1] -replace ".yaml" + $FileNames | ForEach-Object { + $Files += $_ -replace $replace,"Package" + } + $clip = $clip -join "`n" -split "@@" + for ($i=0;$i -lt $Files.length;$i++) { + $File = $Files[$i] + $inputObj = $clip[$i*2] -split "`n" + $inputObj = $inputObj[1..(($inputObj | Select-String "ManifestVersion" -SimpleMatch).LineNumber -1)] | Where-Object {$_ -notmatch "marked this conversation as resolved."} + $FilePath = "$manifestFolder\$File" + if (!($Silent)) { + Write-Host "Writing $($inputObj.length) lines to $FilePath" + } + Out-File -FilePath $FilePath -InputObject $inputObj + #Bugfix to catch package identifier appended to last line of last file. + $fileContents = (Get-Content $FilePath) + if ($fileContents[-1] -match $PackageIdentifier) { + $fileContents[-1]=($fileContents[-1] -split $PackageIdentifier)[0] + } + $fileContents -replace "0New version: ","0" -replace "0New package: ","0" -replace "0Add version: ","0" -replace "0Add package: ","0" -replace "0Add ","0" -replace "0New ","0" -replace "0package: ","0" | Out-File $FilePath + } + $filecount = (Get-ChildItem $manifestFolder).count + $filedir = "ok" + $filecolor = "green" + if ($filecount -lt 3) { $filedir = "too low"; $filecolor = "red"} + if ($filecount -gt 3) { $filedir = "high"; $filecolor = "yellow"} + if ($filecount -gt 10) { $filedir = "too high"; $filecolor = "red"} + if (!($Silent)) { + Write-Host -f $filecolor "File count $filecount is $filedir" + } + if ($filecount -lt 3) { break} + $fileContents = Get-Content "$runPath\$vm\manifest\Package.yaml" + if ($fileContents[-1] -ne "0") { + $fileContents[-1] = ($fileContents[-1] -split ".0")[0]+".0" + $fileContents | Out-File $filePath + $fileContents = Get-Content "$runPath\$vm\manifest\Package.yaml" + $fileContents -replace "1..0","1.10.0" + $fileContents | Out-File $filePath + }#end if fileContents + }#end if Operation + }#end if NoFiles + + if ($InspectNew) { + $PackageResult = Find-WinGetPackage $PackageIdentifier + if (!($Silent)) { + Write-Host "Searching Winget for $PackageIdentifier" + } + Write-Host $PackageResult + if ($PackageResult -eq "No package found matching input criteria.") { + Open-AllURL + Start-Process "https://www.bing.com/search?q=$PackageIdentifier" + $a,$b = $PackageIdentifier -split "[.]" + if ($a -ne "") { + if (!($Silent)) { + Write-Host "Searching Winget for $a" + } + Find-WinGetPackage $a + } + if ($b -ne "") { + if (!($Silent)) { + Write-Host "Searching Winget for $b" + } + Find-WinGetPackage $b + } + } + } + if (!($Silent)) { + Write-Host "File operations complete, starting VM operations." + } + Get-TrackerVMRevert $VM -Silent + Get-TrackerVMLaunchWindow $VM + } +} + +Function Get-TrackerVMValidateByID { + param( + $PackageIdentifier = (Get-Clipboard) + ) + Get-TrackerVMValidate -installerLine "--id $PackageIdentifier" -PackageIdentifier $PackageIdentifier -NoFiles #-notElevated +} + +Function Get-TrackerVMValidateByConfig { + param( + $PackageIdentifier = "Microsoft.Devhome", + $ManualDependency = "Git.Git" + ) + + Get-TrackerVMValidate -installerLine "--id $PackageIdentifier" -PackageIdentifier $PackageIdentifier -NoFiles -ManualDependency $ManualDependency -Operation "DevHomeConfig" + Start-Sleep 2 + Get-TrackerVMValidate -installerLine "--id $ManualDependency" -PackageIdentifier $ManualDependency -NoFiles -Operation "Config" +} + +Function Get-TrackerVMValidateByArch { + param( + ) + Get-TrackerVMValidate -Arch x64; + Start-Sleep 2; + Get-TrackerVMValidate -Arch x86; +} + +Function Get-TrackerVMValidateByScope { + param( + ) + Get-TrackerVMValidate -Scope Machine; + Start-Sleep 2; + Get-TrackerVMValidate -Scope User; +} + +Function Get-TrackerVMValidateBothArchAndScope { + param( + ) + Get-TrackerVMValidate -Arch x64 -Scope Machine; + Start-Sleep 2; + Get-TrackerVMValidate -Arch x86 -Scope Machine; + Start-Sleep 2; + Get-TrackerVMValidate -Arch x64 -Scope User; + Start-Sleep 2; + Get-TrackerVMValidate -Arch x86 -Scope User; +} + +#Manifests Etc +Function Get-SingleFileAutomation { + param( + $PR, + $clip = (Get-Clipboard), + $PackageIdentifier = (Get-YamlValue PackageIdentifier -clip $clip), + $version = ((Get-YamlValue PackageVersion -clip $clip) -replace "'","" -replace '"',""), + $listing = (Get-ManifestListing $PackageIdentifier), + $VM = (Get-ManifestFile -clip $clip)[-1] + ) + + for ($File = 0; $File -lt $listing.length;$File++) { + Get-ManifestFile $VM -clip (Get-FileFromGitHub -PackageIdentifier $PackageIdentifier -Version $version -FileName $listing[$File]) -PR $PR + } +} + +Function Get-InstallerFileAutomation { + Param( + $PR = (Get-Clipboard), + $InstallerFile = (Get-CommitFile -PR $PR -MatchName "") + ) + Get-SingleFileAutomation -PR $pr -clip $InstallerFile +} + +Function Get-ManifestAutomation { + param( + $VM = (Get-NextFreeVM), + $PR =0, + $Arch, + $OS, + $Scope + ) + + #Read-Host "Copy Installer file to clipboard, then press Enter to continue." + (Get-Clipboard) -join "" | clip; + $null = Get-ManifestFile $VM + + Read-Host "Copy defaultLocale file to clipboard, then press Enter to continue." + (Get-Clipboard) -join "" | clip; + $null = Get-ManifestFile $VM + + Read-Host "Copy version file to clipboard, then press Enter to continue." + (Get-Clipboard) -join "" | clip; + if ($Arch) { + $null = Get-ManifestFile $VM -Arch $Arch + } elseif ($OS) { + $null = Get-ManifestFile $VM -OS $OS + } elseif ($Scope) { + $null = Get-ManifestFile $VM -Scope $Scope + } else { + $null = Get-ManifestFile $VM -PR $PR + } +} + +Function Get-ManifestOtherAutomation { + param( + $Clip = (Get-Clipboard), + $Title = ($Clip -split " version "), + $Version = ($Title[1] -split " #"), + $PR = ($Version[1]), + [switch]$Installer + ) + $Title = $Title[0] + $Version = $Version[0] + if ($Installer) { + $File = (Get-FileFromGitHub $Title $Version) + } +} + +Function Get-Generate { +$out = " +# Created by Validation Pipeline build $build +# If a human is reading this, then something has gone wrong. + +PackageIdentifier: $PackageIdentifier +PackageVersion: $PackageVersion +DefaultLocale: $Locale +ManifestType: version +ManifestVersion: $ManifestVersion" + +} + +Function Get-ManifestFile { + param( + [int]$vm = ((Get-NextFreeVM) -replace "vm",""), + $clip = (Get-SecondMatch), + $FileName = "Package", + $PackageIdentifier = ((Get-YamlValue -StringName "PackageIdentifier" -clip $clip) -replace '"','' -replace "'",'' -replace ",",''), + $PR = 0, + $Arch, + $OS, + $Scope + ); + #Write-Output "PackageIdentifier: $PackageIdentifier" + $manifestFolder = "$MainFolder\vm\$vm\manifest" + $clip = $clip | Where-Object {$_ -notmatch "marked this conversation as resolved."} + + $YamlValue = (Get-YamlValue ManifestType $clip) + switch ($YamlValue) { + "defaultLocale" { + $Locale = (Get-YamlValue PackageLocale $clip) + $FileName = "$FileName.locale.$Locale" + } + "Locale" { + $Locale = (Get-YamlValue PackageLocale $clip) + $FileName = "$FileName.locale.$Locale" + } + "installer" { + Get-RemoveFileIfExist "$manifestFolder" -remake + $FileName = "$FileName.installer" + } + "version" { + if ($Arch) { + Get-TrackerVMValidate -vm $VM -NoFiles -Arch $Arch -PR $PR -PackageIdentifier $PackageIdentifier + } elseif ($OS) { + Get-TrackerVMValidate -vm $VM -NoFiles -OS $OS -PR $PR -PackageIdentifier $PackageIdentifier + } elseif ($Scope) { + Get-TrackerVMValidate -vm $VM -NoFiles -Scope $Scope -PR $PR -PackageIdentifier $PackageIdentifier + } else { + Get-TrackerVMValidate -vm $VM -NoFiles -PR $PR -PackageIdentifier $PackageIdentifier + } + } + Default { + Write-Output "Error: Bad ManifestType" + Write-Output $clip + } + } + $FilePath = "$manifestFolder\$FileName.yaml" + Write-Output "Writing $($clip.length) lines to $FilePath" + $clip -replace "0New version: ","0" -replace "0Add version: ","0" -replace "0Add ","0" -replace "0New ","0" | Out-File $FilePath -Encoding unicode + return $VM +} + +Function Get-ManifestListing { + param( + $PackageIdentifier, + $Version = (Find-WinGetPackage $PackageIdentifier -MatchOption Equals).version, + $Path = ($PackageIdentifier -replace "[.]","/"), + $FirstLetter = ($PackageIdentifier[0].tostring().tolower()), + $Uri = "$GitHubApiBaseUrl/contents/manifests/$FirstLetter/$Path/$Version/", + [Switch]$Versions + ) + If ($Versions) { + $Uri = "$GitHubApiBaseUrl/contents/manifests/$FirstLetter/$Path/" + } + try{ + $out = (Invoke-GitHubRequest -Uri $Uri -JSON).name + }catch{ + $out = "Error" + } + return $out -replace "$($PackageIdentifier)[.]","" +} + +Function Get-ListingDiff { + param( + $Clip = (Get-Clipboard), + $PackageIdentifier = (Get-YamlValue PackageIdentifier $Clip -replace '"',""), + $PRManifest = ($clip -split "`n" | Where-Object {$_ -match ".yaml"} | Where-Object {$_ -match $PackageIdentifier} |%{($_ -split "/")[-1] -replace "$($PackageIdentifier)[.]",""}), + $Returnables = "" + ) + if ($PRManifest.count -gt 2){ + $CurrentManifest = (Get-ManifestListing $PackageIdentifier) + if ($CurrentManifest -eq "Error") { + $Returnables = diff $CurrentManifest $PRManifest + } else { + $Returnables = $CurrentManifest + } + } + Return $Returnables +} + +Function Get-OSFromVersion ($clip) { + try{ + if ([system.version](Get-YamlValue -StringName MinimumOSVersion -clip $clip) -ge [system.version]"10.0.22000.0"){"Win11"} else{"Win10"} + } catch { + "Win10" + } +} + +#VM Image Management +Function Get-PipelineVmGenerate { + param( + [int]$vm = (Get-Content $vmCounter), + [ValidateSet("Win10","Win11")][string]$OS = "Win10", + [int]$version = (Get-TrackerVMVersion -OS $OS), + $destinationPath = "$imagesFolder\$vm\", + $VMFolder = "$MainFolder\vm\$vm", + $newVmName = "vm$VM", + $startTime = (Get-Date) + ) + Test-Admin + Write-Host "Creating VM $newVmName version $version OS $OS" + [int]$vm+1|Out-File $vmCounter + "`"$vm`",`"Generating`",`"$version`",`"$OS`",`"`",`"1`",`"Creation`",`"0`""|Out-File $StatusFile -Append -Encoding unicode + Get-RemoveFileIfExist $destinationPath -remake + Get-RemoveFileIfExist $VMFolder -remake + $vmImageFolder = (ls "$imagesFolder\$OS-image\Virtual Machines\" *.vmcx).fullname + + Write-Host "Takes about 120 seconds..." + Import-VM -Path $vmImageFolder -Copy -GenerateNewId -VhdDestinationPath $destinationPath -VirtualMachinePath $destinationPath; + Rename-VM (Get-VM | Where-Object {($_.CheckpointFileLocation)+"\" -eq $destinationPath}) -NewName $newVmName + Start-VM $newVmName + Remove-VMCheckpoint -VMName $newVmName -Name "Backup" + Get-TrackerVMRevert $VM + Get-TrackerVMLaunchWindow $VM + Write-Host "Took $(((Get-Date)-$startTime).TotalSeconds) seconds..." +} + +Function Get-PipelineVmDisgenerate { + param( + [Parameter(mandatory=$True)][int]$vm, + $destinationPath = "$imagesFolder\$vm\", + $VMFolder = "$MainFolder\vm\$vm", + $vmName = "vm$VM" + ) + Test-Admin + Get-TrackerVMSetStatus 'Disgenerate' $VM + Get-ConnectedVM | Where-Object {$_.vm -match $VMName} | ForEach-Object {Stop-Process -id $_.id} + Stop-TrackerVM $VM + Remove-VM -Name $vmName -Force + + $out = Get-Status + $out = $out | Where-Object {$_.vm -notmatch $VM} + Write-Status $out + + $delay = 15 + 0..$delay | ForEach-Object { + $pct = $_ / $delay * 100 + Write-Progress -Activity "Remove VM" -Status "$_ of $delay" -PercentComplete $pct + Start-Sleep $GitHubRateLimitDelay + } + Get-RemoveFileIfExist $destinationPath + Get-RemoveFileIfExist $VMFolder + Write-Progress -Activity "Remove VM" -Completed +} + +Function Get-ImageVMStart { + param( + [ValidateSet("Win10","Win11")][string]$OS = "Win10" + ) + Test-Admin + $VM = 0 + Start-VM $OS; + Get-TrackerVMRevert $VM $OS; + Get-TrackerVMLaunchWindow $VM $OS +} + +Function Get-ImageVMStop { + param( + [ValidateSet("Win10","Win11")][string]$OS = "Win10" + ) + Test-Admin + $VM = 0 + $OriginalLoc = "" + switch ($OS) { + "Win10" { + $OriginalLoc = $Win10Folder + } + "Win11" { + $OriginalLoc = $Win11Folder + } + } + $ImageLoc = "$imagesFolder\$OS-image\" + [int]$version = [int](Get-TrackerVMVersion -OS $OS) + 1 + Write-Host "Writing $OS version $version" + Get-TrackerVMSetVersion -Version $Version -OS $OS + Stop-Process -id ((Get-ConnectedVM)|Where-Object {$_.VM -match "$OS"}).id -ErrorAction Ignore + Redo-Checkpoint $VM $OS; + Stop-TrackerVM $VM $OS; + Write-Host "Letting VM cool..." + Start-Sleep 30; + Robocopy.exe $OriginalLoc $ImageLoc -mir +} + +Function Get-ImageVMMove { + param( + [ValidateSet("Win10","Win11")][string]$OS = "Win10", + $CurrentVMName = "", + $newLoc = "$imagesFolder\$OS-Created$(get-date -f MMddyy)-Original" + ) + Test-Admin + switch ($OS) { + "Win10" { + $CurrentVMName = "Windows 10 MSIX packaging environment" + } + "Win11" { + $CurrentVMName = "Windows 11 dev environment" + } + } + $VM = Get-VM | where {$_.Name -match $CurrentVMName} + Move-VMStorage -VM $VM -DestinationStoragePath $newLoc + Rename-VM -VM $VM -NewName $OS +} + +#VM Pipeline Management +Function Get-TrackerVMLaunchWindow { + param( + [Parameter(mandatory=$True)][int]$vm, + $VMName = "vm$VM" + ) + Test-Admin + Get-ConnectedVM | Where-Object {$_.vm -match $VMName} | ForEach-Object {Stop-Process -id $_.id} + C:\Windows\System32\vmconnect.exe localhost $VMName +} + +Function Get-TrackerVMRevert { + param( + [Parameter(mandatory=$True)][int]$vm, + $VMName = "vm$VM", + [Switch]$Silent + ) + Test-Admin + if ($Silent) { + Get-TrackerVMSetStatus "Restoring" $VM -Silent + } else { + Get-TrackerVMSetStatus "Restoring" $VM + } + Restore-VMCheckpoint -Name $CheckpointName -VMName $VMName -Confirm:$False +} + +Function Complete-TrackerVM { + param( + [Parameter(mandatory=$True)][int]$vm, + $VMFolder = "$MainFolder\vm\$vm", + $filesFileName = "$VMFolder\files.txt" + ) + Test-Admin + Get-TrackerVMSetStatus "Completing" $VM + Stop-Process -id ((Get-ConnectedVM)|Where-Object {$_.VM -match "vm$VM"}).id -ErrorAction Ignore + Stop-TrackerVM $VM + Get-RemoveFileIfExist $filesFileName + Get-TrackerVMSetStatus "Ready" $VM " " 1 "Ready" +} + +Function Stop-TrackerVM { + param( + [Parameter(mandatory=$True)][int]$vm, + $VMName = "vm$VM" + ) + Test-Admin + Stop-VM $VMName -TurnOff +} + +#VM Status +Function Get-TrackerVMSetStatus { + param( + [ValidateSet("AddVCRedist","Approved","CheckpointComplete","Checkpointing","CheckpointReady","Completing","Complete","Disgenerate","Generating","Installing","Prescan","Prevalidation","Ready","Rebooting","Regenerate","Restoring","Revert","Scanning","SendStatus","SendStatus-Approved","SendStatus-Complete","Setup","SetupComplete","Starting","Updating","ValidationCompleted")] + $Status = "Complete", + [Parameter(mandatory=$True)]$VM, + [string]$Package, + [int]$PR, + [ValidateSet("New","Creating","Existing","Ready","Unknown")] + [string]$Mode, + [Switch]$Silent + ) + $out = Get-Status + if ($Status) { + ($out | Where-Object {$_.vm -match $VM}).Status = $Status + } + if ($Package) { + ($out | Where-Object {$_.vm -match $VM}).Package = $Package + } + if ($PR) { + ($out | Where-Object {$_.vm -match $VM}).PR = $PR + } + if ($Mode) { + ($out | Where-Object {$_.vm -match $VM}).Mode = $Mode + } + if ($Silent) { + Write-Status $out -Silent + } else { + Write-Status $out + Write-Host "Setting $VM $Package $PR state $Status" + } +} + +Function Write-Status { + Param( + $out, + [Switch]$Silent + ) + if (!($Silent)) { + Write-Host "Writing $($out.length) lines to $StatusFile." + } + $out | ConvertTo-Csv | Out-File $StatusFile -Encoding unicode +} + +Function Get-Status { + param( + [int]$vm, + [ValidateSet("AddVCRedist","Approved","CheckpointComplete","Checkpointing","CheckpointReady","Completing","Complete","Disgenerate","Generating","Installing","Prescan","Prevalidation","Ready","Rebooting","Regenerate","Restoring","Revert","Scanning","SendStatus","SendStatus-Approved","SendStatus-Complete","Setup","SetupComplete","Starting","Updating","ValidationCompleted")] + $Status, + [ValidateSet("Win10","Win11")][string]$OS, + $out = (Get-Content $StatusFile | ConvertFrom-Csv) + ) + $out +} + +Function Get-TrackerVMResetStatus { + $VMs = (Get-Status | Where-Object {$_.Status -ne "Ready"} | Where-Object {$_.RAM -eq 0}).VM + $VMs += (Get-Status | Where-Object {$_.Status -ne "Ready"} | Where-Object {$_.Package -eq ""}).VM + Foreach ($VM in $VMs) { + Get-TrackerVMSetStatus Complete $VM + } + if (!(Get-ConnectedVM)){ + Get-Process *vmwp* | Stop-Process + } +} + +Function Get-TrackerVMRebuildStatus { + $Status = Get-VM | + Where-Object {$_.name -notmatch "vm0"} | + Where-Object {$_.name -notmatch "Win10"} | + Where-Object {$_.name -notmatch "Win11"} | + Select-Object @{n="vm";e={$_.name -replace "vm",$null}}, + @{n="status";e={"Ready"}}, + @{n="version";e={(Get-TrackerVMVersion -OS "Win10")}}, + @{n="OS";e={"Win10"}}, + @{n="Package";e={""}}, + @{n="PR";e={"1"}}, + @{n="Mode";e={"Unknown"}}, + @{n="RAM";e={"0"}} + Write-Status $Status +} + +#VM Versioning +Function Get-TrackerVMVersion { + param( + [ValidateSet("Win10","Win11")][string]$OS = "Win10", + [int]$VM = ((Get-Content $VMversion | ConvertFrom-Csv | Where-Object {$_.OS -eq $OS}).version) + ) + Return $VM +} + +Function Get-TrackerVMSetVersion { + param( + [int]$Version, + [ValidateSet("Win10","Win11")][string]$OS = "Win10", + $Versions = (Get-Content $VMversion | ConvertFrom-Csv) + ) + ($Versions | Where-Object {$_.OS -eq $OS}).Version = $Version + $Versions | ConvertTo-Csv|Out-File $VMversion +} + +Function Get-TrackerVMRotate { + param( + $status = (Get-Status), + $OS = "Win10", + $VMs = ($status | Where-Object {$_.version -lt (Get-TrackerVMVersion -OS $OS)} | Where-Object {$_.OS -eq $OS}) + ) + if ($VMs){ + if (!(($status | Where-Object {$_.status -ne "Ready"}).count)) { + Get-TrackerVMSetStatus Regenerate ($VMs.VM | Get-Random) + } + } +} + +#VM Orchestration +Function Get-TrackerVMCycle { + param( + $VMs = (Get-Status) + ) + Foreach ($VM in $VMs) { + Switch ($VM.status) { + "AddVCRedist" { + Add-ToValidationFile $VM.vm + } + "Approved" { + #Add-Waiver $VM.PR + $PRLabels = ((Invoke-GitHubPRRequest -PR $VM.PR -Type "labels" -Output content -JSON).name) -join " " + if ($PRLabels -match $Labels.VC) { + Approve-PR -PR $VM.PR + } else { + Get-CompletePR -PR $VM.PR + } + Get-TrackerVMSetStatus "Complete" $VM.vm + } + "CheckpointReady" { + Redo-Checkpoint $VM.vm + } + "Complete" { + if (($VMs | Where-Object {$_.vm -eq $VM.vm} ).version -lt (Get-TrackerVMVersion -OS $VM.os)) { + Get-TrackerVMSetStatus "Regenerate" $VM.vm + } else { + Complete-TrackerVM $VM.vm + } + } + "Disgenerate" { + Get-PipelineVmDisgenerate $VM.vm + } + "Revert" { + Get-TrackerVMRevert $VM.vm + } + "Regenerate" { + Get-PipelineVmDisgenerate $VM.vm + Get-PipelineVmGenerate -OS $VM.os + } + "SendStatus-Complete" { + Get-SendStatus -Status "Complete" + } + "SendStatus-Approved" { + Get-SendStatus -Status "Approved" + } + "SendStatus" { + Get-SendStatus -Status "Complete" + } + "ValidationCompleted" { + # if ($VM.Mode -eq "Existing") { + # Get-CompletePR -PR $VM.PR + # Get-TrackerVMSetStatus "Complete" $VM.vm + # } + } + default { + #Write-Host "Complete" + } + }; #end switch + } +} + +Function Get-TrackerMode { + param( + $mode = (Get-Content $TrackerModeFile) + ) + $mode +} + +Function Get-TrackerVMSetMode { + param( + [ValidateSet("Approving","Idle","IEDS","Validating")] + $Status = "Validating" + ) + $Status | Out-File $TrackerModeFile -NoNewLine +} + +Function Get-ConnectedVM { + Test-Admin + (Get-Process *vmconnect*) | Select-Object id, @{n="VM";e={ForEach-Object{$_.mainwindowtitle[0..5] -join ""}}} +} + +Function Get-NextFreeVM { + param( + [ValidateSet("Win10","Win11")][string] $OS = "Win10", + $Status = "Ready" + ) + Test-Admin + try { + $out_status = Get-Status + $out_status = $out_status | Where-Object {$_.OS -eq $OS} + $out_status = ($out_status | Where-Object {$_.version -eq (Get-TrackerVMVersion -OS $OS)} | Where-Object {$_.status -eq $Status}).vm + $out_status = $out_status |Get-Random -ErrorAction SilentlyContinue + return $out_status; + } catch { + Write-Host "No available $OS VMs" + return 0 + } +} + +Function Redo-Checkpoint { + param( + [Parameter(mandatory=$True)][int]$vm, + $VMName = "vm$VM" + ) + Test-Admin + Get-TrackerVMSetStatus "Checkpointing" $VM + Remove-VMCheckpoint -Name $CheckpointName -VMName $VMName + Checkpoint-VM -SnapshotName $CheckpointName -VMName $VMName + Get-TrackerVMSetStatus "Complete" $VM +} + +#File Management +Function Get-SecondMatch { + param( + $clip = (Get-Clipboard), + $depth = 1 + ) + #If $current and $prev don't match, return the $prev element, which is $depth lines below the $current line. Start at $clip[$depth] and go until the end - this starts $current at $clip[$depth], and $prev gets moved backwards to $clip[0] and moves through until $current is at the end of the array, $clip[$clip.length], and $prev is $depth previous, at $clip[$clip.length - $depth]. + for ($depthUnit = $depth;$depthUnit -lt $clip.length; $depthUnit++){ + $current = ($clip[$depthUnit] -split ": ")[0] + $prevUnit = $clip[$depthUnit - $depth] + $Prev = ($prevUnit -split ": ")[0] + if ($current -ne $Prev) { + $prevUnit + } + } + #Then complete the last $depth items of the array by starting at $clip[-$depth] and work backwards through the last items in reverse order to $clip[-1]. + for ($depthUnit = $depth ;$depthUnit -gt 0; $depthUnit--){ + $clip[-$depthUnit] + } +} + +Function Get-SendStatus { + Param( + $PR, + [ValidateSet("AddVCRedist","Approved","CheckpointComplete","Checkpointing","CheckpointReady","Completing","Complete","Disgenerate","Generating","Installing","Prescan","Prevalidation","Ready","Rebooting","Regenerate","Restoring","Revert","Scanning","SendStatus","SendStatus-Approved","SendStatus-Complete","Setup","SetupComplete","Starting","Updating","ValidationCompleted")] + $Status = "Complete", + $SharedError = ((Get-Content $SharedErrorFile) -split "`n") + ) + $SharedError = $SharedError -replace "`r","" + $SharedError = $SharedError -replace " (caller: 00007FFA008A5769)","" + $SharedError = $SharedError -replace " (caller: 00007FFA008AA79F)","" + $SharedError = $SharedError -replace "Exception(1)","" + $SharedError = $SharedError -replace "Exception(2)","" + $SharedError = $SharedError -replace "Exception(4)","" + $SharedError = $SharedError -replace "tid(f1c)","" + $SharedError = $SharedError -replace "C:\\__w\\1\\s\\external\\pkg\\src\\AppInstallerCommonCore\\Downloader.cpp(185)\\WindowsPackageManager.dll!00007FFA008A37C9:","" + $SharedError = $SharedError -join "`n" + #$SharedError = Get-AutomatedErrorAnalysis $SharedError + if ((($SharedError -join " ") -match "Installer failed security check") -OR (($SharedError -join " ") -match "Detected 1 Defender")) { + Get-AddPRLabel -PR $PR -LabelName $Labels.VDE + } + Reply-ToPR -PR $VM.PR -UserInput $SharedError -CannedMessage ManValEnd + Get-TrackerVMSetStatus $Status $VM.vm +} + +Function Get-TrackerVMRotateLog { + $logYesterDate = (Get-Date -f dd) - 1 + Move-Item "$writeFolder\logs\$logYesterDate" "$logsFolder\$logYesterDate" +} + +Function Get-RemoveFileIfExist { + param( + $FilePath, + [switch]$remake, + [switch]$Silent + ) + if (Test-Path $FilePath) {Remove-Item $FilePath -Recurse} + if ($Silent) { + if ($remake) {$null = New-Item -ItemType Directory -Path $FilePath} + } else { + if ($remake) {New-Item -ItemType Directory -Path $FilePath} + } + +} + +Function Get-LoadFileIfExists { + param( + $FileName, + $FileContents, + [Switch]$Silent + ) + if (Test-Path $FileName) { + $FileContents = Get-Content $FileName | ConvertFrom-Csv + if (!($Silent)) { + Write-Host "Loaded $($FileContents.count) entries from $FileName." -f green + Return $FileContents + } + } else { + if (!($Silent)) { + Write-Host "File $FileName not found!" -f red + } + } +} + +Function Get-FileFromGitHub { + param( + $PackageIdentifier, + $Version, + $FileName = "installer.yaml", + $Path = ($PackageIdentifier -replace "[.]","/"), + $FirstLetter = ($PackageIdentifier[0].tostring().tolower()) + ) + try{ + $content = (Invoke-GitHubRequest -Uri "$GitHubContentBaseUrl/master/manifests/$FirstLetter/$Path/$Version/$PackageIdentifier.$FileName").content + }catch{ + $content = "Error" + } + return ($content -split "`n") +} + +Function Get-ManifestEntryCheck { + param( + $PackageIdentifier, + $Version, + $Entry = "DisplayVersion" + ) + $content = Get-FileFromGitHub $PackageIdentifier $Version + $out = ($content | Where-Object {$_ -match $Entry}) + if ($out) {$True} else {$False} +} + +Function Get-DecodeGitHubFile { + param( + [string]$Base64String, + $Bits = ([Convert]::FromBase64String($Base64String)), + $String = ([System.Text.Encoding]::UTF8.GetString($Bits)) + ) + return $String -split "`n" +} + +Function Get-CommitFile { + param( + $PR = (Get-Clipboard), + $Commit = (Invoke-GitHubPRRequest -PR $PR -Type commits -Output content -JSON), + $MatchName = "installer", + $PRData = (Invoke-GitHubRequest "$GitHubApiBaseUrl/pulls/$pr" -JSON), + $PRTitle = (($PRData.title -split " ") | where {$_ -match "[A-Za-z0-9]\.[A-Za-z0-9]"} | where {$_ -notmatch "[0-9].[0-9]"}), + #$PRTitle = (($PRData.title -split " ")[2] | where {$_ -match "\."}), + $FileList = ($Commit.files.contents_url | where {$_ -match $MatchName} | where {$_ -match $PRTitle}), + [int]$VM = 0 + ) + $FileList | %{ + "File: $_" + try { + $EncodedFile = (invoke-GithubRequest -Uri $_ -JSON) + } catch { + write-host $error[0].Message + } + $DecodedFile = Get-DecodeGitHubFile $EncodedFile.content + if ($VM -gt 0) { + Get-ManifestFile -vm $VM -PR $PR -clip $DecodedFile + } else { + $DecodedFile -join "`n" + } + } +} + +#Inject dependencies +Function Add-ToValidationFile { + param( + [Parameter(mandatory=$True)][int]$vm, + [ValidateSet("Microsoft.VCRedist.2015+.x64","Microsoft.DotNet.DesktopRuntime.8","Oracle.JavaRuntimeEnvironment")]$Common = "Microsoft.VCRedist.2015+.x64", + $Dependency = $Common, + $VMFolder = "$MainFolder\vm\$vm", + $manifestFolder = "$VMFolder\manifest", + $FilePath = "$manifestFolder\Package.installer.yaml", + $fileContents = (Get-Content $FilePath), + $Selector = "Installers:", + $offset = 1, + $lineNo = (($fileContents | Select-String $Selector -List).LineNumber -$offset), + $fileInsert = "Dependencies:`n PackageDependencies:`n - PackageIdentifier: $Dependency", + $fileOutput = ($fileContents[0..($lineNo -1)]+$fileInsert+$fileContents[$lineNo..($fileContents.length)]) + ) + Write-Host "Writing $($fileContents.length) lines to $FilePath" + Out-File -FilePath $FilePath -InputObject $fileOutput + Get-TrackerVMSetStatus "Revert" $VM; +} + +Function Add-InstallerSwitch { + param( + [Parameter(mandatory=$True)][int]$vm, + $Data = '/qn', + $Selector = "ManifestType:", + [ValidateSet("EXE","MSI","MSIX","Inno","Nullsoft","InstallShield")] + [string]$InstallerType + + ) + switch ($InstallerType) { + "MSIX"{ + $Data = '/quiet' + } + "Inno"{ + $Data = '/SILENT' + } + "Nullsoft"{ + $Data = '/S' + } + "InstallShield"{ + $Data = '/s' #or -s + } + } + $fileInsert = " InstallerSwitches:`n Silent: $Data" + Add-ToValidationFile $VM -Selector $Selector -fileInsert $fileInsert #-Force +} + +Function Get-UpdateHashInPR { + param( + $PR, + $ManifestHash, + $PackageHash, + $LineNumbers = ((Get-CommitFile -PR $PR | Select-String $ManifestHash).LineNumber), + $ReplaceString = (" InstallerSha256: $($PackageHash.toUpper())"), + $comment = "``````suggestion`n$ReplaceString`n```````n`n(Automated response - build $build.)" + ) + foreach ($Line in $LineNumbers) { + Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Action $Labels.NAF + } +} + +Function Get-UpdateHashInPR2 { + param( + $PR, + $Clip = (Get-Clipboard), + $SearchTerm = "Expected hash", + $ManifestHash = (Get-YamlValue $SearchTerm -Clip $Clip), + $LineNumbers = ((Get-CommitFile -PR $PR | Select-String $ManifestHash).LineNumber), + $ReplaceTerm = "Actual hash", + $ReplaceString = (" InstallerSha256: "+(Get-YamlValue $ReplaceTerm -Clip $Clip).toUpper()), + $comment = "``````suggestion`n$ReplaceString`n```````n`n(Automated response - build $build.)" + ) + foreach ($Line in $LineNumbers) { + Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Action $Labels.NAF + } +} + +Function Get-UpdateArchInPR { + param( + $PR, + $SearchTerm = " Architecture: x86", + $LineNumbers = ((Get-CommitFile -PR $PR | Select-String $SearchTerm).LineNumber), + [string]$ReplaceTerm = (($SearchTerm -split ": ")[1]), + [ValidateSet("x86","x64","arm","arm32","arm64","neutral")] + [string]$ReplaceArch = (("x86","x64") | where {$_ -notmatch $ReplaceTerm}), + $ReplaceString = ($SearchTerm -replace $ReplaceTerm,$ReplaceArch), + $comment = "``````suggestion`n$ReplaceString`n```````n`n(Automated response - build $build.)" + ) + foreach ($Line in $LineNumbers) { + Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Action $Labels.NAF + } +} + +Function Add-DependencyToPR { + param( + $PR, + $Dependency = "Microsoft.VCRedist.2015+.x64", + $SearchString = "Installers:", + $LineNumbers = ((Get-CommitFile -PR $PR | Select-String $SearchString).LineNumber), + $ReplaceString = "Dependencies:`n PackageDependencies:`n - PackageIdentifier: $Dependency`nInstallers:", + $comment = "``````suggestion`n$ReplaceString`n```````n`n(Automated response - build $build.)" + ) + $out = "" + foreach ($Line in $LineNumbers) { + $out += Add-GitHubReviewComment -PR $PR -Comment $comment -Line $Line -Action $Labels.NAF + } +} + +#PR Queue +Function Add-PRToQueue { + param( + $PR, + $PRExclude = ((gc $PRExcludeFile) -split "`n") + ) + if ($PRExclude -notcontains $Pr) { + $PR | Out-File $PRQueueFile -Append + + } +} + +Function Get-PopPRQueue { + [array]$PRQueue = gc $PRQueueFile + $PRQueue = $PRQueue -split "`n" + $PRQueue = (diff $PRQueue (Get-Status).pr | where {$_.SideIndicator -eq "<="}).inputobject + $out = $PRQueue[0] + $PRQueue = $PRQueue[1..$PRQueue.length] | Select-Object -unique + $PRQueue | Out-File $PRQueueFile + return $out +} + +Function Get-PRQueueCount { + $count = ((Get-Content $PRQueueFile) -split "`n").count + return $count +} + +#Reporting +Function Add-PRToRecord { + param( + $PR, + [ValidateSet("Approved","Blocking","Feedback","Retry","Manual","Closed","Project","Squash","Waiver")] + $Action, + $Title + ) + $Title = ($Title -split "#")[0] + "$PR,$Action,$Title" | Out-File $LogFile -Append +} + +Function Get-PRPopulateRecord { + param( + $Logs = (Get-Content $LogFile | ConvertFrom-Csv -Header ("PR","Action","Title")) + ) + Foreach ($Log in $Logs) { + #Populate the Title column where blank, so all lines with the same PR number also have the same title, preventing the API calls for the lookup. + $Log.title = ($Logs | Where-Object {$_.title} | Where-Object {$_.PR -match $Log.PR}).title | Sort-Object -Unique + } + $Logs | ConvertTo-Csv|Out-File $LogFile +} + +Function Get-PRFromRecord { + param( + [ValidateSet("Approved","Blocking","Feedback","Retry","Manual","Closed","Project","Squash","Waiver")] + $Action + ) + Get-PRPopulateRecord + (Get-Content $LogFile) | ConvertFrom-Csv -Header ("PR","Action","Title") | Where-Object {$_.Action -match $Action} +} + +Function Get-PRReportFromRecord { + param( + [ValidateSet("Approved","Blocking","Feedback","Retry","Manual","Closed","Project","Squash","Waiver")] + $Action, + $out = "", + $line = 0, + $Record = ((Get-PRFromRecord $Action) | Sort-Object PR -Unique), + [switch]$NoClip + ) + + $LogContents = (Get-Content $LogFile | ConvertFrom-Csv | Where-Object {$_.Action -notmatch $Action} | ConvertTo-Csv) + Out-File -FilePath $LogFile -InputObject $LogContents + #Get everything that doesn't match the action and put it back in the CSV. + + Foreach ($PR in $Record) { + $line++ + $Title = $PR.Title + $PR = $PR.PR + if (!($Title)) { + $Title = (Invoke-GitHubPRRequest -PR $PR -Type "" -Output content -JSON).title + } + Get-TrackerProgress -PR $PR ("$($MyInvocation.MyCommand) $Action") $line $Record.length + $out += "$Title #$PR`n"; + } + if ($NoClip) { + return $out + } else { + $out | clip + } + Write-Progress -Completed +} + +Function Get-PRFullReport { + param( + $Month = (Get-Culture).DateTimeFormat.GetMonthName((Get-Date).Month), + $Today = (get-date -f MMddyy), + $ReportName = "$logsFolder\$Month\$Today-Report.txt", + $HeaderList = ($Actions.Feedback,"Blocking","Waiver","Retry","Manual","Closed","Project","Squash","Approved") + ) + Write-Host "Generating report for $Today" + $null | Out-File $ReportName + $HeaderList | %{ + $_ | Out-File $ReportName -Append; + Get-PRReportFromRecord $_ -NoClip | Out-File $ReportName -Append + } + Write-Host "Report for $Today complete" +} + +#Clipboard +Function Get-PRNumber { + param( + $out = (Get-Clipboard), + [switch]$NoClip, + [switch]$Hash + ) + if ($Hash) { + $out = ($out -split " " | Select-String $hashPRRegex) -replace '#','' | Sort-Object -unique + $NoClip = $True + } else { + $out = $out | Select-String $hashPRRegexEnd | Sort-Object -descending + } + + if ($NoClip) { + $out + } else { + $out | clip + } +} + +Function Get-SortedClipboard { + param( + $out = ((Get-Clipboard) -split "`n") + ) + $out | Sort-Object -Unique | clip +} + +Function Open-AllURL { + param( + $out = (Get-Clipboard) + ) + $out = $out -split " " + $out = $out | Select-String "`^http" + $out = $out | Select-String -NotMatch "[.]exe$" + $out = $out | Select-String -NotMatch "[.]msi$" + $out = $out | Select-String -NotMatch "[.]zip$" + $out = $out | Sort-Object -unique + $out = $out | ForEach-Object {start-process $_} +} + +Function Open-PRInBrowser { + param( + $PR, + [Switch]$Files + ) + $URL = "$GitHubBaseUrl/pull/$PR#issue-comment-box" + if ($Files) { + $URL = "$GitHubBaseUrl/pull/$PR/files" + } + Start-Process $URL + Start-Sleep $GitHubRateLimitDelay +}#end Function + +Function Get-YamlValue { + param( + [string]$StringName, + $clip = (Get-Clipboard) + ) + $clip = ($clip -split "`n" | where {$_ -match $StringName}) + $clip = ($clip -split ": ")[1] + $clip = ($clip -split "#")[0] + $clip = ((($clip.ToCharArray()) | where {$_ -match "\S"}) -join "") + Return $clip +} + +#Etc +Function Test-Admin { + if (![bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544")){Write-Host "Try elevating your session.";break} +} + +Function Get-LazySearchWinGet { +#I am out of names and scraping the bottom of the barrel. + param( + [String]$SearchTerm, + [String]$Name, + [String]$ID, + $Version, + $Results = (Find-WinGetPackage $SearchTerm) + ) + foreach ($Item in ("Name","ID","Version")) { + If ($Item) { + $itemContents = (Invoke-Command -ScriptBlock ([Scriptblock]::Create("$"+$item))) + $Results = $Results | where {$_.$Item -match $itemContents} + } + } + Return $Results +} + +Function Get-TrackerProgress { + param( + $PR, + $Activity, + $Incrementor, + $Length, + $Percent = [math]::round($Incrementor / $length*100,2) + ) + Write-Progress -Activity $Activity -Status "$PR - $Incrementor / $Length = $Percent %" -PercentComplete $Percent +} + +Function Get-ArraySum { + param( + $in = 0, + $out = 0 + ) + $in |ForEach-Object{$out += $_*1} + [math]::Round($out,2) +} + +Function Get-GitHubRateLimit { + param( + $Url = "https://api.github.com/rate_limit" + ) + (Get-Date) + #Time, as a number, constantly increases. + $Response = Invoke-WebRequest -Uri $Url -ProgressAction SilentlyContinue + $Content = $Response.content | ConvertFrom-Json; + #Write-Output "Headers:" + #$Response.Headers + $Content.rate | select @{n="source";e={"Unlogged"}}, limit, used, remaining, @{n="reset";e={([System.DateTimeOffset]::FromUnixTimeSeconds($_.reset)).DateTime.AddHours(-8)}} + $Response = invoke-GitHubRequest -Uri $Url -JSON; + $Response.rate | select @{n="source";e={"Logged"}}, limit, used, remaining, @{n="reset";e={([System.DateTimeOffset]::FromUnixTimeSeconds($_.reset)).DateTime.AddHours(-8)}} +} + +Function Get-ValidationData { + param( + $Property = "", + $Match = "", + $data = (Get-Content $DataFileName | ConvertFrom-Csv | Where-Object {$_.$Property} | Where-Object {$_.$Property -match $Match}), + [switch]$Exact + ) + if ($Exact -eq $True) { + $data = $data | Where-Object {$_.$Property -eq $Match} + } + Return $data +} + +Function Add-ValidationData { + param( + [Parameter(mandatory=$True)][string]$PackageIdentifier, + [string]$GitHubUserName, + [ValidateSet("should","must")][string]$authStrictness, + [ValidateSet("auto","manual")][string]$authUpdateType, + [string]$AutoWaiverLabel, + [string]$versionParamOverrideUserName, + [int]$versionParamOverridePR, + [string]$code200OverrideUserName, + [int]$code200OverridePR, + [int]$AgreementOverridePR, + [string]$AgreementURL, + [string]$reviewText, + $data = (Get-Content $DataFileName | ConvertFrom-Csv) + ) + $out = ($data | where {$_.PackageIdentifier -eq $PackageIdentifier} | Select-Object "PackageIdentifier","GitHubUserName","authStrictness","authUpdateType","AutoWaiverLabel","versionParamOverrideUserName","versionParamOverridePR","code200OverrideUserName","code200OverridePR","AgreementOverridePR","AgreementURL","reviewText") + if ($null -eq $out) { + $out = ( "" | Select-Object "PackageIdentifier","GitHubUserName","authStrictness","authUpdateType","AutoWaiverLabel","versionParamOverrideUserName","versionParamOverridePR","code200OverrideUserName","code200OverridePR","AgreementOverridePR","AgreementURL","reviewText") + $out.PackageIdentifier = $PackageIdentifier + } + + $out.GitHubUserName = $GitHubUserName + $out.authStrictness = $authStrictness + $out.authUpdateType = $authUpdateType + $out.AutoWaiverLabel = $AutoWaiverLabel + $out.versionParamOverrideUserName = $versionParamOverrideUserName + $out.versionParamOverridePR = $versionParamOverridePR + $out.code200OverrideUserName = $code200OverrideUserName + $out.code200OverridePR = $code200OverridePR + $out.AgreementURL = $AgreementURL + $out.AgreementOverridePR = $AgreementOverridePR + $out.reviewText = $reviewText + $data += $out + $data | sort PackageIdentifier | ConvertTo-Csv | Out-File $DataFileName +} + +#PR Watcher Utility functions +Function Get-Sandbox { +#Terminates any current sandbox and makes a new one. + param( + [string]$PRNumber = (Get-Clipboard) + ) + $FirstLetter = $PRNumber[0] + if ($FirstLetter -eq "#") { + [string]$PRNumber = $PRNumber[1..$PRNumber.length] -join "" + } + Get-Process *sandbox* | ForEach-Object {Stop-Process $_} + Get-Process *wingetautomator* | ForEach-Object {Stop-Process $_} + $version = "1.6.1573-preview" + $process ="wingetautomator://install?pull_request_number=$PRNumber&winget_cli_version=v$version&watch=yes" + Start-Process -PR $PRocess +} + +Function Get-PadRight { + param( + [string]$PackageIdentifier, + [int]$PadChars = 45 + ) + $out = $PackageIdentifier + if ($PackageIdentifier.Length -lt $PadChars) { + $out = $PackageIdentifier +(" "*($PadChars - $PackageIdentifier.Length -1)) + } elseif ($PackageIdentifier.Length -lt $PadChars) { + $out = $PackageIdentifier[0..($PadChars -1)] + } + + if ($out.GetType().name -eq "Array") { + + } + $out = $out -join "" + + $out +} + +$WordFilterList = "accept_gdpr ", "accept-licenses", "accept-license","eula","downloadarchive.documentfoundation.org","paypal" + +$CountrySet = "Default","Warm","Cool","Random","Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antigua And Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia And Herzegovina","Botswana","Bouvet Island","Brazil","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cabo Verde","Cambodia","Cameroon","Canada","Central African Republic","Chad","Chile","China","Colombia","Comoros","Cook Islands","Costa Rica","Croatia","Cuba","Curacao","Cyprus","Czechia","Cöte D'Ivoire","Democratic Republic Of The Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Fiji","Finland","France","French Polynesia","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Grenada","Guatemala","Guinea","Guinea-Bissau","Guyana","Haiti","Holy See (Vatican City State)","Honduras","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Qatar","Republic Of The Congo","Romania","Russian Federation","Rwanda","Saint Kitts And Nevis","Saint Lucia","Saint Vincent And The Grenadines","Samoa","San Marino","Sao Tome And Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Sweden","Switzerland","Syrian Arab Republic","Tajikistan","Tanzania"," United Republic Of","Thailand","Togo","Tonga","Trinidad And Tobago","Tunisia","Turkey","Turkmenistan","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Yemen","Zambia","Zimbabwe","Ã…land Islands" + +#Misc Data +$StandardPRComments = ("Validation Pipeline Badge",#Pipeline status +"wingetbot run",#Run pipelines +"azp run",#Run pipelines +"AzurePipelines run",#Run pipelines +"Azure Pipelines successfully started running 1 pipeline",#Run confirmation +"The check-in policies require a moderator to approve PRs from the community",#Validation complete +"microsoft-github-policy-service agree",#CLA acceptance +"wingetbot waivers Add",#Any waivers +"The pull request encountered an internal error and has been assigned to a developer to investigate",#IEDS or other error +"Manifest Schema Version: 1.4.0 less than 1.5.0 for ID:",#Manifest depreciation for 1.4.0 +"This account is bot account and belongs to CoolPlayLin",#CoolPlayLin's automation +"This account is automated by Github Actions and the source code was created by CoolPlayLin",#Exorcism0666's automation +"Poke 👉", #gama-bot's automation +"Response status code does not indicate success",#My automation - removal PR where URL failed status check. +"Automatic Validation ended with",#My automation - Validation output might be immaterial if unactioned. +"Manual Validation ended with",#My automation - Validation output might be immaterial if unactioned. +"No errors to post",#My automation - AutoValLog with no logs. +"The package didn't pass a Defender or similar security scan",#My automation - DefenderFail. +"Installer failed security check",#My automation - AutoValLog DefenderFail. +"Sequence contains no elements",#New Sequence error. +"Missing Properties value based on version",#New property detection. +"Azure Pipelines could not run because the pipeline triggers exclude this branch/path"#Pipeline error. +) + +#VM Window Management +Function Get-TrackerVMWindowLoc { + param( + $VM, + $Rectangle = (New-Object RECT), + $VMProcesses = (Get-Process vmconnect), + $MWHandle = ($VMProcesses | where {$_.MainWindowTitle -match "vm$VM"}).MainWindowHandle + ) + [window]::GetWindowRect($MWHandle,[ref]$Rectangle) + Return $Rectangle +} + +Function Get-TrackerVMWindowSet { + param( + $VM, + $Left, + $Top, + $Right, + $Bottom, + $VMProcesses = (Get-Process vmconnect), + $MWHandle = ($VMProcesses | where {$_.MainWindowTitle -match "vm$VM"}).MainWindowHandle + ) + $null = [window]::MoveWindow($MWHandle,$Left,$Top,$Right,$Bottom,$True) +} + +Function Get-TrackerVMWindowArrange { + param( + $VMs = (Get-Status |where {$_.status -ne "Ready"}|where {$_.status -ne "ImagePark"}).vm + ) + If ($VMs) { + Get-TrackerVMWindowSet $VMs[0] 900 0 1029 860 + $Base = Get-TrackerVMWindowLoc $VMs[0] + + For ($n = 1;$n -lt $VMs.count;$n++) { + $VM = $VMs[$n] + + $Left = ($Base.left - (100 * $n)) + $Top = ($Base.top + (66 * $n)) + Get-TrackerVMWindowSet $VM $Left $Top 1029 860 + } + } +} + + +Add-Type @" +using System; +using System.Runtime.InteropServices; + +public class Window { + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); + [DllImport("user32.dll")] + public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); + +} +public struct RECT { + public int Left; // x position of upper-left corner + public int Top; // y position of upper-left corner + public int Right; // x position of lower-right corner + public int Bottom; // y position of lower-right corner +} + +"@ + + + +#Index of each column name is where prev column ends and this one starts. \ No newline at end of file diff --git a/Tools/ManualValidationProfile.ps1 b/Tools/ManualValidationProfile.ps1 new file mode 100644 index 0000000000000..b62138bef67d1 --- /dev/null +++ b/Tools/ManualValidationProfile.ps1 @@ -0,0 +1,159 @@ +$VM = 0 +$build = 137 +$ipconfig = (ipconfig) +$remoteIP = ([ipaddress](($ipconfig | select-string "Default Gateway") -split ": ")[1]).IPAddressToString +#$remoteIP = ([ipaddress](($ipconfig[($ipconfig | select-string "vEthernet").LineNumber..$ipconfig.length] | select-string "IPv4 Address") -split ": ")[1]).IPAddressToString +Write-Host "VM$VM with remoteIP $remoteIP version $build" + +$MainFolder = "\\$remoteIP\ManVal" +$homePath = "C:\Users\User\Desktop" +Set-Location $homePath + +$runPath = "$MainFolder\vm\$VM" +$writeFolder = "\\$remoteIP\write" +$statusFile = "$writeFolder\status.csv" +$SharedFolder = $writeFolder + +if ($VM -eq 0) { + $VM = (gc "$MainFolder\vmcounter.txt")-1 +} +"`$VM = $VM" | Out-File $profile +(Get-Content "\\$remoteIP\ManVal\vm\0\profile.ps1")[1..999] | Out-File $profile -append + +Function Send-SharedError { + param( + [switch]$Approved, + $Clip = (Get-Clipboard) + ) + Write-Host "Writing $($Clip.length) lines." + $Clip -join "`n" | Out-File "$writeFolder\err.txt" + if ($Approved) { + Get-TrackerVMSetStatus "SendStatus-Approved" + } + Get-TrackerVMSetStatus "SendStatus-Complete" +} + +function Get-ARPTable { + Param( + $DisplayName + ) + #SandboxTest.ps1 copypasta - https://github.com/microsoft/winget-pkgs/blob/01d110895592f8775f7a3e9c1e4b50a8bd3dc698/Tools/SandboxTest.ps1#L703 + $registry_paths = @('HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*') + $out = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | + Where-Object { $_.DisplayName -and (-not $_.SystemComponent -or $_.SystemComponent -ne 1 ) } | + Select-Object DisplayName, DisplayVersion, Publisher, @{N='ProductCode'; E={$_.PSChildName}}, @{N='Scope'; E={if($_.PSDrive.Name -eq 'HKCU') {'User'} else {'Machine'}}} + if ($DisplayName) { + $out = $out | where {$_.DisplayName -match $DisplayName} + } + return $out +} + +Function Get-TrackerVMSetStatus { + param( + [ValidateSet("AddVCRedist","Approved","CheckpointComplete","Checkpointing","CheckpointReady","Completing","Complete","Disgenerate","Generating","Installing","Prescan","Prevalidation","Ready","Rebooting","Regenerate","Restoring","Revert","Scanning","SendStatus","SendStatus-Approved","SendStatus-Complete","Setup","SetupComplete","Starting","Updating","ValidationCompleted")] + $Status = "Complete", + [string]$Package, + [int]$PR + ) + $out = Get-TrackerVMStatus + if ($Status) { + ($out | where {$_.vm -match $VM}).Status = $Status + } + if ($Package) { + ($out | where {$_.vm -match $VM}).Package = $Package + } + if ($PR) { + ($out | where {$_.vm -match $VM}).PR = $PR + } + $out | ConvertTo-Csv -NoTypeInformation | Out-File $StatusFile + Write-Host "Setting $vm $Package $PR state $Status" +} + +Function Get-TrackerVMRunValidation { + param( + $fileName = "cmds.ps1" + ) + Copy-Item $runPath\$fileName $homePath\$fileName + & $homePath\$fileName +} + +Function Get-TrackerVMStatus{ + param( + [int]$vmNum, + [ValidateSet("AddVCRedist","Approved","CheckpointComplete","Checkpointing","CheckpointReady","Completing","Complete","Disgenerate","Generating","Installing","Prescan","Prevalidation","Ready","Rebooting","Regenerate","Restoring","Revert","Scanning","SendStatus","Setup","SetupComplete","Starting","Updating","ValidationCompleted")] + $Status, + $Option = "status", + $out = (Get-Content $StatusFile | ConvertFrom-Csv | where {$_.status -notmatch "ImagePark"}) + ) + if ($vmNum) { + $out = ($out | where {$_.vm -eq $vmNum}).$Option + } + if ($Status) { + $out = ($out | where {$_.status -eq $Status}).vm + } + $out +} + +<# +Registry: +$a = gci HKLM:SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | select DisplayName,DisplayVersion +$a += gci HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | select DisplayName,DisplayVersion +$a | where {$_.displayname} | sort displayname -Unique + +#Clear event logs. + +# Commands +$n = 15;$t = $n;while ($n -gt 0) {$n--;$r = $t - $n;Write-Progress -Activity "Build latch" -Status "Seconds remaining: $r/$t" -PercentComplete ((1-$n/$t)*100);sleep 1}; +Get-NetAdapter|Disable-NetAdapter;Get-NetAdapter|Enable-NetAdapter;sleep 30;Import-Module $Profile -Force;Import-Module $Profile -Force;cls;Write-Host "VM$VM with remoteIP $remoteIP version $build"; +Get-TrackerVMSetStatus CheckpointReady; +$n = 15;$t = $n;while ($n -gt 0) {$n--;$r = $t - $n;Write-Progress -Activity "Run latch" -Status "Seconds remaining: $r/$t" -PercentComplete ((1-$n/$t)*100);sleep 1}; +Get-TrackerVMRunValidation +#Get-NetAdapter|Disable-NetAdapter;Get-NetAdapter|Enable-NetAdapter;sleep 30;Import-Module $Profile -Force;Import-Module $Profile -Force;cls;Write-Host "VM$VM with remoteIP $remoteIP version $build";Get-TrackerVMSetStatus CheckpointReady;$n = 15;$t = $n;while ($n -gt 0) {$n--;$r = $t - $n;Write-Progress -Activity "Process latch" -Status "Seconds remaining: $r/$t" -PercentComplete ((1-$n/$t)*100);sleep 1};Write-Host "Waiting for Network...";Get-TrackerVMRunValidation + + +# Reset display window +$vm = 0;notepad $profile;cls;Write-Host "VM$VM with remoteIP $remoteIP version $build" + +# Close Notepad +Get-Process Notepad|Stop-Process; + +# Reboot +shutdown -r -t 05 + +# Setup: ExecutionPolicy, Uninstall, Enable WinGet settings. +Set-ExecutionPolicy Unrestricted +winget uninstall Microsoft.Teams +winget uninstall Microsoft.OneDrive +winget uninstall Microsoft.MSIXPackagingTool_8wekyb3d8bbwe +winget settings --enable LocalManifestFiles;winget settings --enable LocalArchiveMalwareScanOverride; + +# Files +Logs file: C:\Users\user\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir +Programs: C:\Users\user\AppData\Local\Programs\ +Download: C:\Users\user\AppData\Local\Temp\WinGet\ +Portable: C:\Users\user\AppData\Local\Microsoft\WinGet\Packages\ +Symlinks: C:\Users\user\AppData\Local\Microsoft\WinGet\Links\ + +New VM: +- Open Quick Create, create VM +- Connect, power on, use example@example.com to skip login. +- User username, easy to type password, security questions. +- Keyboard layout and locale, maybe a few other questions, then skip everything else. +- Do something else during initial setup. +- Install all store, winget, windows, and defender updates. Reboot as necessary. +ImageVMMove here at any point. +- Open PowerShell and run IPConfig, get switch IP. +- Connect to \\ip\ManVal\, open \vm\0\profile.ps1 +- Run few setup and uninstall commands +- Copy to local profile. +- Set up PowerShell window sizes +- Enter commands in windows +ImageVMStop +- Wait for image to cool +PipelineVMGenerate +- VM is in system. + +gci HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall +gci HKLM:SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall + +#> \ No newline at end of file diff --git a/Tools/PRRules.csv b/Tools/PRRules.csv new file mode 100644 index 0000000000000..9383e77c10c59 --- /dev/null +++ b/Tools/PRRules.csv @@ -0,0 +1,4 @@ +If this value is in this field, take this action with this other value. +"PackageIdentifier","CheckField","CheckValue","Preset","UserInput" +"3d-io.Exr-IO","PackageIdentifier","3d-io.Exr-IO","RemoveLabel","Validation-No-Executables" +"Google.PlayGames.Beta","PackageVersion","120.0.0000.0+",CloseWithReason","Installs a version above 120.0.0000.0 which is actually Chrome." \ No newline at end of file diff --git a/Tools/PRStateFromComments.csv b/Tools/PRStateFromComments.csv new file mode 100644 index 0000000000000..d1664d3038b00 --- /dev/null +++ b/Tools/PRStateFromComments.csv @@ -0,0 +1,21 @@ +"State","BotComment","User" +"AutoValEnd","Automatic Validation ended with",GitHubUserName +"ChangesRequested","The package manager bot determined changes have been requested to your PR","FabricBot" +"DefenderFail","The package didn't pass a Defender or similar security scan",GitHubUserName +"DomainReview","One or more of the installer URLs doesn't appear valid","FabricBot" +"HashMismatch","I am sorry to report that the Sha256 Hash does not match the installer","FabricBot" +"HighestVersionRemoval","This manifest has the highest version number for this package",GitHubUserName +"InstallerAvailable","Status Code: 200",GitHubUserName +"InstallerRemoved","Response status code does not indicate success",GitHubUserName +"LabelAction","0null0","0null0" +"ManValEnd","Manual Validation ended with",GitHubUserName +"MergeConflicts","Pull request contains merge conflicts","AzurePipelines" +"PreApproval","The check-in policies require a moderator to approve PRs from the community","FabricBot" +"PreRun","Service Badge","wingetbot" +"PreValidation","Validation Pipeline Run","wingetbot" +"PublishSucceeded","Publish pipeline succeeded for this Pull Request","wingetbot" +"Running","Azure Pipelines successfully started running 1 pipeline","AzurePipelines" +"SequenceError","Sequence contains no elements",GitHubUserName +"SQLMissingError","SQL error or missing database",GitHubUserName +"ValidationCompleted","Validation has completed","FabricBot" +"VersionParamMismatch","which is greater than the current manifest's version",GitHubUserName diff --git a/Tools/Review.csv b/Tools/Review.csv new file mode 100644 index 0000000000000..b5ce3410a235f --- /dev/null +++ b/Tools/Review.csv @@ -0,0 +1,4 @@ +PackageIdentifier,Reason,PR +Google.PlayGames.Beta,Installs a version above 120.0.0000.0 which is actually Chrome.,154622 +TechPowerUp.GPU-Z,404 unless the correct user-agent is specified..,221603 +Aries-Sciences-LLC.AI-Chess,Version 0.0.1 sits in the version 1.0 folder.,230382 \ No newline at end of file diff --git a/manifests/3/360/360File/1.0.0.1170/360.360File.installer.yaml b/manifests/3/360/360File/1.0.0.1170/360.360File.installer.yaml new file mode 100644 index 0000000000000..522222cf6bc25 --- /dev/null +++ b/manifests/3/360/360File/1.0.0.1170/360.360File.installer.yaml @@ -0,0 +1,25 @@ +# Automatically updated by the winget bot at 2025/Jul/17 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: 360.360File +PackageVersion: 1.0.0.1170 +InstallerType: exe +Scope: user +InstallModes: +- interactive +- silent +InstallerSwitches: + Silent: /S + SilentWithProgress: /S +UpgradeBehavior: install +Installers: +- Architecture: x86 + InstallerUrl: https://down.360safe.com/pcnewapp/360FileSetup.exe + InstallerSha256: 2E6A262FE483F01CD3AB6EF7B67B5D24F2F0B1EDE38671435478A9B0740957F7 + ProductCode: 360FileBrowser +- Architecture: x64 + InstallerUrl: https://down.360safe.com/pcnewapp/360FileSetup.exe + InstallerSha256: 2E6A262FE483F01CD3AB6EF7B67B5D24F2F0B1EDE38671435478A9B0740957F7 + ProductCode: 360FileBrowser +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/3/360/360File/1.0.0.1170/360.360File.locale.en-US.yaml b/manifests/3/360/360File/1.0.0.1170/360.360File.locale.en-US.yaml new file mode 100644 index 0000000000000..f5171cd315d11 --- /dev/null +++ b/manifests/3/360/360File/1.0.0.1170/360.360File.locale.en-US.yaml @@ -0,0 +1,29 @@ +# Automatically updated by the winget bot at 2025/Jul/17 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: 360.360File +PackageVersion: 1.0.0.1170 +PackageLocale: en-US +Publisher: 360.cn +PublisherUrl: https://www.360.cn/ +PublisherSupportUrl: https://bbs.360.cn/thread-16040300-1-1.html +Author: Beijing Qihoo Technology Co., Ltd. +PackageName: 360文件夹 +PackageUrl: https://bbs.360.cn/thread-16040300-1-1.html +License: Freeware +Copyright: (C) 360.cn All Rights Reserved. +CopyrightUrl: https://www.360.cn/about/banquanshengming.html +ShortDescription: Multi-tab File Explorer +Description: 360 File is a single-window, multi-tab file explorer that improves the efficiency of using various types of folders. +Tags: +- directory +- explorer +- file +- file-explorer +- folder +- manage +- management +- system +ReleaseNotesUrl: https://bbs.360.cn/thread-16040300-1-1.html +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/3/360/360File/1.0.0.1170/360.360File.locale.zh-CN.yaml b/manifests/3/360/360File/1.0.0.1170/360.360File.locale.zh-CN.yaml new file mode 100644 index 0000000000000..6bdf9f1ed9f25 --- /dev/null +++ b/manifests/3/360/360File/1.0.0.1170/360.360File.locale.zh-CN.yaml @@ -0,0 +1,27 @@ +# Automatically updated by the winget bot at 2025/Jul/17 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: 360.360File +PackageVersion: 1.0.0.1170 +PackageLocale: zh-CN +Publisher: 360.cn +PublisherUrl: https://www.360.cn/ +PublisherSupportUrl: https://bbs.360.cn/thread-16040300-1-1.html +Author: 北京奇虎科技有限公司 +PackageName: 360文件夹 +PackageUrl: https://bbs.360.cn/thread-16040300-1-1.html +License: 免费软件 +Copyright: (C) 360.cn All Rights Reserved. +CopyrightUrl: https://www.360.cn/about/banquanshengming.html +ShortDescription: 多标签文件管理器 +Description: 360 文件是一款单窗口多标签的资源管理器,提高了使用各类文件夹操作效率。 +Tags: +- 文件 +- 文件夹 +- 文件资源管理器 +- 目录 +- 管理 +- 系统 +ReleaseNotesUrl: https://bbs.360.cn/thread-16040300-1-1.html +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/3/360/360File/1.0.0.1170/360.360File.yaml b/manifests/3/360/360File/1.0.0.1170/360.360File.yaml new file mode 100644 index 0000000000000..6371f33e966aa --- /dev/null +++ b/manifests/3/360/360File/1.0.0.1170/360.360File.yaml @@ -0,0 +1,8 @@ +# Automatically updated by the winget bot at 2025/Jul/17 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: 360.360File +PackageVersion: 1.0.0.1170 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.installer.yaml b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.installer.yaml similarity index 92% rename from manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.installer.yaml rename to manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.installer.yaml index 044f74809c850..da01290f92cd0 100644 --- a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.installer.yaml +++ b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.installer.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: Adobe.Acrobat.Pro -PackageVersion: 25.001.20531 +PackageVersion: 25.001.20577 InstallerType: zip NestedInstallerType: exe NestedInstallerFiles: @@ -91,6 +91,6 @@ InstallationMetadata: Installers: - Architecture: x64 InstallerUrl: https://trials.adobe.com/AdobeProducts/APRO/Acrobat_HelpX/win32/Acrobat_DC_Web_x64_WWMUI.zip - InstallerSha256: 49B5762AB474CA74C5C21C37C3ACEF004C71D886B08A5573DC293A6A21542ED7 + InstallerSha256: 3850E372E0230F211EB6043304A78D794DE2EA4AD8E9A75BC29BCB85F911C013 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.locale.en-US.yaml b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.locale.en-US.yaml similarity index 94% rename from manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.locale.en-US.yaml rename to manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.locale.en-US.yaml index 5408fedbab1d8..4f228c9dd5818 100644 --- a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.locale.en-US.yaml +++ b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: Adobe.Acrobat.Pro -PackageVersion: 25.001.20531 +PackageVersion: 25.001.20577 PackageLocale: en-US Publisher: Adobe Author: Adobe Inc. diff --git a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.locale.zh-CN.yaml b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.locale.zh-CN.yaml similarity index 93% rename from manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.locale.zh-CN.yaml rename to manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.locale.zh-CN.yaml index f434c3a1f3625..3362bd2e693ee 100644 --- a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.locale.zh-CN.yaml +++ b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.locale.zh-CN.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Adobe.Acrobat.Pro -PackageVersion: 25.001.20531 +PackageVersion: 25.001.20577 PackageLocale: zh-CN License: 专有软件 ShortDescription: 随时随地与客户协作,或与团队一起实时查看文档。在所有设备上编辑、签署、共享、保护和搜索 PDF。 diff --git a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.yaml b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.yaml similarity index 86% rename from manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.yaml rename to manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.yaml index 7a198f1d83c9f..82fb731201ad6 100644 --- a/manifests/a/Adobe/Acrobat/Pro/25.001.20531/Adobe.Acrobat.Pro.yaml +++ b/manifests/a/Adobe/Acrobat/Pro/25.001.20577/Adobe.Acrobat.Pro.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: Adobe.Acrobat.Pro -PackageVersion: 25.001.20531 +PackageVersion: 25.001.20577 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.installer.yaml b/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.installer.yaml deleted file mode 100644 index 0683ad3a8e564..0000000000000 --- a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.installer.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-1.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json - -PackageIdentifier: Akiflow.Akiflow -PackageVersion: 2.49.14 -InstallerType: nullsoft # electron-builder -Scope: user -InstallerSwitches: - Upgrade: --updated -ProductCode: fcfd5b65-85a1-59d9-8eb7-a98bf4457cb3 -ReleaseDate: 2025-05-14 -Installers: -- Architecture: x64 - InstallerUrl: https://download.akiflow.com/builds/Akiflow-2.49.14-cf0247de-x64.exe - InstallerSha256: 22A9BFB0DF187DE9A9D792FC77F97159AFE69A2E004B2302DB96C05AC80A8CEC -ManifestType: installer -ManifestVersion: 1.10.0 diff --git a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.locale.en-US.yaml b/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.locale.en-US.yaml deleted file mode 100644 index 07bd57b45358a..0000000000000 --- a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.locale.en-US.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-1.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json - -PackageIdentifier: Akiflow.Akiflow -PackageVersion: 2.49.14 -PackageLocale: en-US -Publisher: Akiflow Inc. -PublisherUrl: https://akiflow.com/ -# PublisherSupportUrl: -PrivacyUrl: https://akiflow.com/privacy-policy -Author: Akiflow Inc. -PackageName: Akiflow -PackageUrl: https://akiflow.com/download/ -License: Proprietary -LicenseUrl: https://akiflow.com/terms-of-service -Copyright: Akiflow © 2025 -CopyrightUrl: https://akiflow.com/terms-of-service -ShortDescription: One App for Tasks & Calendars -# Description: -# Moniker: -Tags: -- agenda -- calendar -- checklist -- collaborate -- collaboration -- gtd -- list -- schedule -- task -- to-do -- todo -# ReleaseNotes: -ReleaseNotesUrl: https://product.akiflow.com/changelog -PurchaseUrl: https://akiflow.com/pricing/ -# InstallationNotes: -Documentations: -- DocumentLabel: How to use - DocumentUrl: https://how-to-use-guide.akiflow.com/ -ManifestType: defaultLocale -ManifestVersion: 1.10.0 diff --git a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.locale.zh-CN.yaml b/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.locale.zh-CN.yaml deleted file mode 100644 index 26d50535d8972..0000000000000 --- a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.locale.zh-CN.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-1.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json - -PackageIdentifier: Akiflow.Akiflow -PackageVersion: 2.49.14 -PackageLocale: zh-CN -# Publisher: -# PublisherUrl: -# PublisherSupportUrl: -# PrivacyUrl: -# Author: -# PackageName: -# PackageUrl: -License: 专有软件 -# LicenseUrl: -# Copyright: -# CopyrightUrl: -ShortDescription: 任务与日历二合一应用 -# Description: -# Moniker: -Tags: -- 任务 -- 列表 -- 待办 -- 待办事项 -- 提醒事项 -- 日历 -- 日程 -- 日程管理 -- 时间管理 -- 清单 -- 议程 -# ReleaseNotes: -# ReleaseNotesUrl: -# PurchaseUrl: -# InstallationNotes: -Documentations: -- DocumentLabel: 如何使用 - DocumentUrl: https://how-to-use-guide.akiflow.com/ -ManifestType: locale -ManifestVersion: 1.10.0 diff --git a/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.installer.yaml b/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.installer.yaml index 2ef141b908691..33de320cfb3d5 100644 --- a/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.installer.yaml +++ b/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.installer.yaml @@ -8,14 +8,13 @@ Scope: machine InstallerSwitches: InstallLocation: INSTALLDIR="" UpgradeBehavior: install -ProductCode: '{FDDE6699-DF5E-4F6E-81A2-2AB426A1BF58}' -ReleaseDate: 2025-06-16 +ProductCode: '{D4064FCD-B298-4AEC-8D78-027F0458E788}' AppsAndFeaturesEntries: -- ProductCode: '{FDDE6699-DF5E-4F6E-81A2-2AB426A1BF58}' +- ProductCode: '{D4064FCD-B298-4AEC-8D78-027F0458E788}' UpgradeCode: '{C537C936-91B3-4270-94D7-E128ACFC3E86}' Installers: - Architecture: x64 - InstallerUrl: https://amazoncloudwatch-agent.s3.amazonaws.com/windows/amd64/1.300057.0b1161/amazon-cloudwatch-agent.msi - InstallerSha256: 7FA12BDD6D4659969650B403B3C7784BF58D516C3DEF4545435D5AAFC03DC12C + InstallerUrl: https://amazoncloudwatch-agent.s3.amazonaws.com/windows/amd64/1.300057.1b1167/amazon-cloudwatch-agent.msi + InstallerSha256: D4D4A90528873ECA41BADE8FCF7093E26516FE25BCD7B8F710C748D80E33E4D4 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.locale.en-US.yaml b/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.locale.en-US.yaml index b59937e2b2dfe..b47b753664a8f 100644 --- a/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.locale.en-US.yaml +++ b/manifests/a/Amazon/CloudWatchAgent/1.4.37913/Amazon.CloudWatchAgent.locale.en-US.yaml @@ -28,22 +28,6 @@ Description: |- Amazon CloudWatch Agent uses open-source projects telegraf and opentelemetry-collector as its dependencies. It operates by starting an opentelemetry collector and is capable of operating pipelines consisting of both telegraf and opentemetry components in addition to customized components. Tags: - aws -ReleaseNotes: |- - Features: - * [Related Telemetry] Allow service and environment configuration for OTLP in EC2 - - Enhancements: - * [Prometheus] mTLS support for Target Allocator - * [OpenTelemetry] Update fallback for OTel config flag - * [Logs] Improved log state management - * [ApplicationSignals] Add support for deployment.environment.name - * [OpenTelemetry] Bump OTel dependencies to v0.124.1 - - Bug Fixes: - * [ApplicationSignals] Concurrency bug fix - * [ContainerInsights] Fix grouping for container insights metrics for mixed metric types - * [ContainerInsights] Add perCore neuron empty metric as datapoints instead of individual metric object - * [Logs] Fix concurrent map write crash ReleaseNotesUrl: https://amazoncloudwatch-agent.s3.amazonaws.com/info/latest/RELEASE_NOTES ManifestType: defaultLocale ManifestVersion: 1.10.0 diff --git a/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.installer.yaml b/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.installer.yaml new file mode 100644 index 0000000000000..d49cda9359447 --- /dev/null +++ b/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.installer.yaml @@ -0,0 +1,27 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: AppFlowy.AppFlowy +PackageVersion: 0.9.5 +InstallerLocale: en-US +InstallerType: inno +Scope: machine +InstallerSwitches: + Silent: /sp- /verysilent /norestart + SilentWithProgress: /sp- /silent /norestart +Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +ProductCode: AppFlowy_is1 +ReleaseDate: 2025-07-17 +AppsAndFeaturesEntries: +- ProductCode: AppFlowy_is1 +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\AppFlowy\' +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/AppFlowy-IO/AppFlowy/releases/download/0.9.5/AppFlowy-0.9.5-windows-x86_64.exe + InstallerSha256: E91C784C20C447227B6FD3098318447739087F61EC574FB244DE23E431C97A85 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.locale.en-US.yaml b/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.locale.en-US.yaml new file mode 100644 index 0000000000000..925cf90ff5e9a --- /dev/null +++ b/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.locale.en-US.yaml @@ -0,0 +1,50 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: AppFlowy.AppFlowy +PackageVersion: 0.9.5 +PackageLocale: en-US +Publisher: AppFlowy-IO +PublisherUrl: https://github.com/AppFlowy-IO +PublisherSupportUrl: https://github.com/AppFlowy-IO/AppFlowy/issues +PackageName: AppFlowy +PackageUrl: https://github.com/AppFlowy-IO/AppFlowy +License: AGPL-3.0 +LicenseUrl: https://github.com/AppFlowy-IO/AppFlowy/blob/HEAD/LICENSE +Copyright: Copyright (C) 2007 Free Software Foundation, Inc. +CopyrightUrl: https://github.com/AppFlowy-IO/AppFlowy/blob/main/LICENSE +ShortDescription: The Open Source Alternative To Notion. +Description: |- + AppFlowy is an open source alternative to Notion. + You are in charge of your data and customizations. +Tags: +- content-management +- content-services +- editor +- flutter +- flutter-app +- flutter-apps +- flutter-examples +- flutter-ui +- low-code +- no-code +- notion +- notion-alternative +- rust +- rust-lang +- rust-language +- wiki +ReleaseNotes: |- + Version 0.9.5 – 17/07/2025 + Desktop + New Features + - Vault Workspace: A new workspace type, private and offline. AI runs locally with no data transfer + - Revamped color pickers in documents: Expanded palette with support for custom colors + Mobile + New Features + - iOS In‑App Sign‑In: Sign in directly within the iOS app + - New colors: Improved text and background color options +ReleaseNotesUrl: https://github.com/AppFlowy-IO/AppFlowy/releases/tag/0.9.5 +PurchaseUrl: https://ko-fi.com/appflowy +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.yaml b/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.yaml similarity index 58% rename from manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.yaml rename to manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.yaml index 1cbce0978a873..1cff3efe60093 100644 --- a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.yaml +++ b/manifests/a/AppFlowy/AppFlowy/0.9.5/AppFlowy.AppFlowy.yaml @@ -1,8 +1,8 @@ -# Created using wingetcreate 1.9.14.0 +# Created with komac v2.12.1 # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json -PackageIdentifier: Easeware.DriverEasy -PackageVersion: 7.0.1.19430 +PackageIdentifier: AppFlowy.AppFlowy +PackageVersion: 0.9.5 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.installer.yaml b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.installer.yaml new file mode 100644 index 0000000000000..141325bc7a50e --- /dev/null +++ b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.installer.yaml @@ -0,0 +1,40 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: astral-sh.uv +PackageVersion: 0.7.22 +InstallerType: zip +NestedInstallerType: portable +NestedInstallerFiles: +- RelativeFilePath: uvx.exe + PortableCommandAlias: uvx +- RelativeFilePath: uv.exe + PortableCommandAlias: uv +- RelativeFilePath: uvw.exe + PortableCommandAlias: uvw +Commands: +- uv +- uvw +- uvx +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x86 + InstallerUrl: https://github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip + InstallerSha256: ACA18C571D8BD6D370E0440A16544AFDE421EA01585721A46D3847C11404FB41 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x86 +- Architecture: x64 + InstallerUrl: https://github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip + InstallerSha256: CE5C13291643E8306E8D2DBCAF340D36EA985A761A53F2CA0A45E1A8E8936C85 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +- Architecture: arm64 + InstallerUrl: https://github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip + InstallerSha256: BCBEE39A55ECA43EA286CBAA467B083888C7811AB8F47458063BC53331224F4D + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.arm64 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.locale.en-US.yaml b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.locale.en-US.yaml new file mode 100644 index 0000000000000..594b1ce4f42c1 --- /dev/null +++ b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.locale.en-US.yaml @@ -0,0 +1,48 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: astral-sh.uv +PackageVersion: 0.7.22 +PackageLocale: en-US +Publisher: Astral Software Inc. +PublisherUrl: https://astral.sh/ +PublisherSupportUrl: https://github.com/astral-sh/uv/issues +Author: Astral Software Inc. +PackageName: uv +PackageUrl: https://github.com/astral-sh/uv +License: Apache-2.0 or MIT +LicenseUrl: https://github.com/astral-sh/uv/blob/HEAD/README.md#license +Copyright: Copyright (c) 2024 Astral Software Inc. +ShortDescription: An extremely fast Python package and project manager, written in Rust. +Description: An extremely fast Python package and project manager, written in Rust. Designed as a single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv workflows, and more. +Moniker: uv +Tags: +- python +ReleaseNotes: |- + Python + - Upgrade GraalPy to 24.2.2 + See the GraalPy release notes for more details. + Configuration + - Add UV_COMPILE_BYTECODE_TIMEOUT environment variable (#14369) + - Allow users to override index cache-control headers (#14620) + - Add UV_LIBC to override libc selection in multi-libc environment (#14646) + Bug fixes + - Fix --all-arches when paired with --only-downloads (#14629) + - Skip Windows Python interpreters that return a broken MSIX package code (#14636) + - Warn on invalid uv.toml when provided via direct path (#14653) + - Improve async signal safety in Windows exception handler (#14619) + Documentation + - Mention the revision in the lockfile versioning doc (#14634) + - Move "Conflicting dependencies" to the "Resolution" page (#14633) + - Rename "Dependency specifiers" section to exclude PEP 508 reference (#14631) + - Suggest uv cache clean prior to --reinstall (#14659) + Preview features + - Make preview Python registration on Windows non-fatal (#14614) + - Update preview installation of Python executables to be non-fatal (#14612) + - Add uv python update-shell (#14627) +ReleaseNotesUrl: https://github.com/astral-sh/uv/releases/tag/0.7.22 +Documentations: +- DocumentLabel: Docs + DocumentUrl: https://docs.astral.sh/uv/ +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.locale.zh-CN.yaml b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.locale.zh-CN.yaml new file mode 100644 index 0000000000000..33f31b13f038e --- /dev/null +++ b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.locale.zh-CN.yaml @@ -0,0 +1,15 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: astral-sh.uv +PackageVersion: 0.7.22 +PackageLocale: zh-CN +License: Apache-2.0 或 MIT +ShortDescription: 用 Rust 编写的极速 Python 软件包和项目管理器 +Description: 用 Rust 编写的极速 Python 软件包和项目管理器。可作为单一工具替代 pip、pip-tools、pipx、poles、pyenv、twine、virtualenv 工作流等。 +ReleaseNotesUrl: https://github.com/astral-sh/uv/releases/tag/0.7.22 +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://docs.astral.sh/uv/ +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.yaml b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.yaml similarity index 72% rename from manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.yaml rename to manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.yaml index 6ce497c265492..20c4393854131 100644 --- a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.yaml +++ b/manifests/a/astral-sh/uv/0.7.22/astral-sh.uv.yaml @@ -1,8 +1,8 @@ # Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json -PackageIdentifier: Google.Chrome.Canary -PackageVersion: 140.0.7274.0 +PackageIdentifier: astral-sh.uv +PackageVersion: 0.7.22 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.installer.yaml b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.installer.yaml similarity index 76% rename from manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.installer.yaml rename to manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.installer.yaml index 8dfa334b0ca6d..bd8a111694e45 100644 --- a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.installer.yaml +++ b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.installer.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: Belarc.Advisor -PackageVersion: 13.0.0.0 +PackageVersion: 13.1.0.0 InstallerType: exe InstallModes: - interactive @@ -16,7 +16,7 @@ FileExtensions: ProductCode: Belarc Advisor Installers: - Architecture: x86 - InstallerUrl: https://downloads.belarc.com/advisor/advisorinstaller.exe?t=20250410 - InstallerSha256: 32977F94B9BB569BFA2FD11D8E0303BCC8010AEB4E3B08AFC4BAFE0EC235CF14 + InstallerUrl: https://downloads.belarc.com/advisor/advisorinstaller.exe + InstallerSha256: 3C22DD09127E6DF6E08F9AD701FA5D651B799CA91A3CB57F2ABB2F7382B11076 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.locale.en-US.yaml b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.locale.en-US.yaml similarity index 94% rename from manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.locale.en-US.yaml rename to manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.locale.en-US.yaml index b3ac4272a8925..c624a936ab3dc 100644 --- a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.locale.en-US.yaml +++ b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: Belarc.Advisor -PackageVersion: 13.0.0.0 +PackageVersion: 13.1.0.0 PackageLocale: en-US Publisher: Belarc, Inc. PublisherUrl: https://www.belarc.com/ diff --git a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.locale.zh-CN.yaml b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.locale.zh-CN.yaml similarity index 94% rename from manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.locale.zh-CN.yaml rename to manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.locale.zh-CN.yaml index d5a0ea4695fd8..4a510a4afce3a 100644 --- a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.locale.zh-CN.yaml +++ b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.locale.zh-CN.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Belarc.Advisor -PackageVersion: 13.0.0.0 +PackageVersion: 13.1.0.0 PackageLocale: zh-CN Publisher: Belarc, Inc. PublisherUrl: https://www.belarc.com/ diff --git a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.yaml b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.yaml similarity index 87% rename from manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.yaml rename to manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.yaml index 39a000c4ed74e..6a4f9175cace1 100644 --- a/manifests/b/Belarc/Advisor/13.0.0.0/Belarc.Advisor.yaml +++ b/manifests/b/Belarc/Advisor/13.1.0.0/Belarc.Advisor.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: Belarc.Advisor -PackageVersion: 13.0.0.0 +PackageVersion: 13.1.0.0 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.installer.yaml b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.installer.yaml new file mode 100644 index 0000000000000..b1db775564436 --- /dev/null +++ b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.installer.yaml @@ -0,0 +1,20 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: BenthicSoftware.GoldSqall.2 +PackageVersion: 2.1.0.216 +InstallerType: inno +Scope: machine +UpgradeBehavior: install +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x86 + InstallerUrl: https://www.benthicsoftware.com/apps/goldsqall2setup216_32bit.exe + InstallerSha256: 9D0F24664EE06035C118CAF30BA0D2AD5C05A6FE777828B37E240FC00590B29C + ProductCode: Golden232_is1 +- Architecture: x64 + InstallerUrl: https://www.benthicsoftware.com/apps/goldsqall2setup216_64bit.exe + InstallerSha256: 55DDD65E3D7C253AE2F1DDC36A58EEBD2D7583833AC97D9A6A75AE6CD67EFBF7 + ProductCode: Golden264_is1 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.locale.en-US.yaml b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.locale.en-US.yaml new file mode 100644 index 0000000000000..95d3ca4c2888e --- /dev/null +++ b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.locale.en-US.yaml @@ -0,0 +1,39 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: BenthicSoftware.GoldSqall.2 +PackageVersion: 2.1.0.216 +PackageLocale: en-US +Publisher: Benthic Software +PublisherUrl: https://www.benthicsoftware.com/ +PublisherSupportUrl: https://www.benthicsoftware.com/support.html +PrivacyUrl: https://www.benthicsoftware.com/privacy.html +Author: Benthic Software, LLC +PackageName: 'Benthic Software: GoldSqall 2.x' +PackageUrl: https://www.benthicsoftware.com/goldsqall.html +License: Proprietary +LicenseUrl: https://www.benthicsoftware.com/license.html +Copyright: Copyright © 1996-2025 Benthic Software, LLC +CopyrightUrl: https://www.benthicsoftware.com/license.html +ShortDescription: Multi-Database Query Tool +Description: GoldSqall is an SQL query, scripting, editing, and exporting tool. GoldSqall can natively connect to Oracle, PostgreSQL, MySQL/MariaDB, Firebird, SQLite, and SQL Server. GoldSqall also allows connecting to any database with OLEDB or ODBC drivers. GoldSqall has an advanced syntax highlighting SQL Editor and formatter, a lightning fast datagrid with sorting, filtering, data formatting and a transposed view mode. +Tags: +- database +- db +- mssql +- mysql +- oracle +- postgres +- postgresql +- query +- sql +- sqlite +ReleaseNotes: |- + - New substitution variable constants (pseudo-vars) for tab name, tab filenames, workspace filenames and some standard datetime values. See "Substitution Constants" in the help for the list. + - Improved support for Oracle 21+ value lobs including JSON. + - Improved text search on wide scripts. + - Fixed a possible startup error on Terminal Server systems. +ReleaseNotesUrl: https://www.benthicsoftware.com/goldsqall.html +PurchaseUrl: https://www.benthicsoftware.com/goldsqall.html +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.locale.zh-CN.yaml b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.locale.zh-CN.yaml new file mode 100644 index 0000000000000..da13f4838538c --- /dev/null +++ b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.locale.zh-CN.yaml @@ -0,0 +1,20 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: BenthicSoftware.GoldSqall.2 +PackageVersion: 2.1.0.216 +PackageLocale: zh-CN +License: 专有软件 +ShortDescription: 多数据库查询工具 +Description: GoldSqall 是一款 SQL 查询、脚本编写、编辑和导出工具。GoldSqall 可连接 Oracle、PostgreSQL、MySQL/MariaDB、Firebird、SQLite 和 SQL Server。GoldSqall 还可以连接任何带有 OLEDB 或 ODBC 驱动程序的数据库。GoldSqall 拥有先进的语法高亮显示 SQL 编辑器和格式化器、快速数据网格(具有排序、过滤、数据格式化功能)以及转置视图模式。 +Tags: +- mssql +- mysql +- postgres +- postgresql +- sql +- sqlite +- 数据库 +- 查询 +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.yaml b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.yaml new file mode 100644 index 0000000000000..22a5a5885397d --- /dev/null +++ b/manifests/b/BenthicSoftware/GoldSqall/2/2.1.0.216/BenthicSoftware.GoldSqall.2.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: BenthicSoftware.GoldSqall.2 +PackageVersion: 2.1.0.216 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/b/Bosyun/PixsoLocalFont/2.0.1/Bosyun.PixsoLocalFont.installer.yaml b/manifests/b/Bosyun/PixsoLocalFont/2.0.1/Bosyun.PixsoLocalFont.installer.yaml index ff4e7948faa12..9f6f462468f89 100644 --- a/manifests/b/Bosyun/PixsoLocalFont/2.0.1/Bosyun.PixsoLocalFont.installer.yaml +++ b/manifests/b/Bosyun/PixsoLocalFont/2.0.1/Bosyun.PixsoLocalFont.installer.yaml @@ -9,7 +9,7 @@ UpgradeBehavior: install ProductCode: '{2AD2B268-DF5E-4A2F-979F-45EBB69F3E76}_is1' Installers: - Architecture: x64 - InstallerUrl: https://pixso-pub-prod.obs.cn-east-3.myhuaweicloud.com/cms/download/package/PixsoLocalFontSetup_win_2.0.1.exe - InstallerSha256: 3CE52D790B4C1E3691FEB3B5A9771FCC95A49BFE72FC113C660149DF4D8FFBF2 + InstallerUrl: https://pixso-cms-prod.obs.cn-east-3.myhuaweicloud.com/packages/download/font/PixsoLocalFontSetup_2.0.1.exe + InstallerSha256: 8D64E58D68562F6E286224B4A5168280DB99C36814AF67A4102F076AB5AFC143 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.installer.yaml b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.installer.yaml new file mode 100644 index 0000000000000..724a226ed84af --- /dev/null +++ b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.installer.yaml @@ -0,0 +1,86 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Brave.Brave.Nightly +PackageVersion: 139.1.82.92 +InstallerType: exe +ExpectedReturnCodes: +- InstallerReturnCode: -2147219440 + ReturnResponse: cancelledByUser +- InstallerReturnCode: -2147219416 + ReturnResponse: alreadyInstalled +- InstallerReturnCode: -2147218431 + ReturnResponse: invalidParameter +- InstallerReturnCode: -2147024809 + ReturnResponse: invalidParameter +UpgradeBehavior: install +Protocols: +- ftp +- http +- https +- mailto +- tel +FileExtensions: +- htm +- html +- pdf +- shtml +- svg +- webp +- xht +- xhtml +ProductCode: BraveSoftware Brave-Browser-Nightly +Installers: +- Architecture: x86 + Scope: user + InstallerUrl: https://github.com/brave/brave-browser/releases/download/v1.82.92/BraveBrowserStandaloneSilentNightlySetup32.exe + InstallerSha256: 79CC3E494EBAF2111366D8B2FF1E33711785B088212A45F2F2C9FCBDE5D7F6C0 + InstallModes: + - silent +- Architecture: x86 + Scope: machine + InstallerUrl: https://github.com/brave/brave-browser/releases/download/v1.82.92/BraveBrowserStandaloneNightlySetup32.exe + InstallerSha256: CA00236B06394D90D0C56843D82080E9E82893B0D402EE38E49EAFC6247BFFD6 + InstallModes: + - interactive + - silent + InstallerSwitches: + Silent: /silent /install + SilentWithProgress: /silent /install + ElevationRequirement: elevationRequired +- Architecture: x64 + Scope: user + InstallerUrl: https://github.com/brave/brave-browser/releases/download/v1.82.92/BraveBrowserStandaloneSilentNightlySetup.exe + InstallerSha256: 0089EBA896AC7CB0EFFF7BD94DF28288BC2AF2FC37972AFE86E42B2A3496B346 + InstallModes: + - silent +- Architecture: x64 + Scope: machine + InstallerUrl: https://github.com/brave/brave-browser/releases/download/v1.82.92/BraveBrowserStandaloneNightlySetup.exe + InstallerSha256: BAEFDAA67551EDC0AE76D0B1E36092C08380A0AC98041F8C180683B1FE78DFE8 + InstallModes: + - interactive + - silent + InstallerSwitches: + Silent: /silent /install + SilentWithProgress: /silent /install + ElevationRequirement: elevationRequired +- Architecture: arm64 + Scope: user + InstallerUrl: https://github.com/brave/brave-browser/releases/download/v1.82.92/BraveBrowserStandaloneSilentNightlySetupArm64.exe + InstallerSha256: 195144C79F2BF4D09FDEC03ECEDF88CD7F8563F1B6C00D9F32A15D9CE80AA778 + InstallModes: + - silent +- Architecture: arm64 + Scope: machine + InstallerUrl: https://github.com/brave/brave-browser/releases/download/v1.82.92/BraveBrowserStandaloneNightlySetupArm64.exe + InstallerSha256: 6CF21DDA78D960824D24598D68EE5025112DB675DCA5A9D58A9FB2723832657D + InstallModes: + - interactive + - silent + InstallerSwitches: + Silent: /silent /install + SilentWithProgress: /silent /install + ElevationRequirement: elevationRequired +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.locale.en-US.yaml b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.locale.en-US.yaml new file mode 100644 index 0000000000000..d18b0b90afe25 --- /dev/null +++ b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.locale.en-US.yaml @@ -0,0 +1,33 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Brave.Brave.Nightly +PackageVersion: 139.1.82.92 +PackageLocale: en-US +Publisher: Brave Software Inc +PublisherUrl: https://brave.com +PrivacyUrl: https://brave.com/privacy/browser +Author: Brave Software, Inc. +PackageName: Brave Nightly +PackageUrl: https://brave.com/download-nightly +License: MPL-2.0 +LicenseUrl: https://github.com/brave/brave-browser/blob/master/LICENSE +Copyright: Copyright © 2024 The Brave Authors. All rights reserved. +CopyrightUrl: https://brave.com/terms-of-use +ShortDescription: Brave Nightly is our testing and development version of Brave. Releases are updated every night. +Description: |- + Nightly is our testing and development version of Brave. + The releases are updated every night and may contain bugs that can result in data loss. + Nightly automatically sends us crash reports when things go wrong. +Tags: +- browser +- chromium +- internet +- privacy +- web +- webpage +Documentations: +- DocumentLabel: FAQ + DocumentUrl: https://brave.com/faq +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.locale.zh-CN.yaml b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.locale.zh-CN.yaml new file mode 100644 index 0000000000000..785f6801cb4da --- /dev/null +++ b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.locale.zh-CN.yaml @@ -0,0 +1,29 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Brave.Brave.Nightly +PackageVersion: 139.1.82.92 +PackageLocale: zh-CN +Publisher: Brave Software Inc +PublisherUrl: https://brave.com/zh +PrivacyUrl: https://brave.com/privacy/browser +Author: Brave Software, Inc. +PackageName: Brave Nightly +PackageUrl: https://brave.com/download-nightly +License: MPL-2.0 +LicenseUrl: https://github.com/brave/brave-browser/blob/master/LICENSE +Copyright: 版权所有2024 Brave Software Inc。保留所有权利。 +CopyrightUrl: https://brave.com/terms-of-use +ShortDescription: Brave Nightly 是 Brave 的测试和开发版本,每天晚上更新。 +Description: Nightly 是 Brave 的测试和开发版本,每天晚上更新,可能包含导致数据丢失的错误。当出现问题时,Nightly 会自动向我们发送崩溃报告。 +Tags: +- chromium +- 互联网 +- 浏览器 +- 网页 +- 隐私 +Documentations: +- DocumentLabel: 常见问题 + DocumentUrl: https://brave.com/zh/faq +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.yaml b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.yaml new file mode 100644 index 0000000000000..b6a186a569dcb --- /dev/null +++ b/manifests/b/Brave/Brave/Nightly/139.1.82.92/Brave.Brave.Nightly.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Brave.Brave.Nightly +PackageVersion: 139.1.82.92 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.installer.yaml b/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.installer.yaml deleted file mode 100644 index 7b43028a751e6..0000000000000 --- a/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.installer.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Created using wingetcreate 1.9.4.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.9.0.schema.json - -PackageIdentifier: CDESoftware.BLS-2025 -PackageVersion: 37.05.0005 -InstallerType: exe -InstallerSwitches: - Silent: /exenoui /qn /norestart -Installers: -- Architecture: x86 - InstallerUrl: https://static.cdesoftware.com/bls2025/BLS2025INSTALLER.EXE - InstallerSha256: acf89de5e7a0af072115ec6635351e89bda6a754cd5f7e84edd0e01f36fb43ba -ManifestType: installer -ManifestVersion: 1.9.0 \ No newline at end of file diff --git a/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.locale.en-US.yaml b/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.locale.en-US.yaml deleted file mode 100644 index 9b8ec2bf6ee91..0000000000000 --- a/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.locale.en-US.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Created using wingetcreate 1.9.4.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.9.0.schema.json - -PackageIdentifier: CDESoftware.BLS-2025 -PackageVersion: 37.05.0005 -PackageLocale: en-US -Publisher: CDE Software -PublisherUrl: https://cdesoftware.com - -PublisherSupportUrl: https://support.cdesoftware.com -PrivacyUrl: https://www.cdesoftware.com/privacy-policy/ -PackageName: BLS-2025 -License: Proprietary -Copyright: Copyright (c) 2025 CDE Software -ShortDescription: BLS-2025 is a companion piece to CDE Software BLS-2025 -PurchaseUrl: https://shop.cdesoftware.com -ManifestType: defaultLocale -ManifestVersion: 1.9.0 \ No newline at end of file diff --git a/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.installer.yaml b/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.installer.yaml new file mode 100644 index 0000000000000..783ccd779d639 --- /dev/null +++ b/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.installer.yaml @@ -0,0 +1,15 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Dapr.CLI.Preview +PackageVersion: 1.16.0-rc.1 +InstallerLocale: en-US +InstallerType: wix +ProductCode: '{62C0ACE5-FC54-47B4-A182-DA704EC06736}' +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/dapr/cli/releases/download/v1.16.0-rc.1/dapr.msi + InstallerSha256: 148045F5B4FED117A4D96F5437DD94C204EF56FF89FF4BDD750DADD7DAFD62F2 +ManifestType: installer +ManifestVersion: 1.10.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.locale.en-US.yaml b/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.locale.en-US.yaml new file mode 100644 index 0000000000000..a5436602b0666 --- /dev/null +++ b/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.locale.en-US.yaml @@ -0,0 +1,17 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Dapr.CLI.Preview +PackageVersion: 1.16.0-rc.1 +PackageLocale: en-US +Publisher: Dapr +PublisherUrl: https://dapr.io +PublisherSupportUrl: https://github.com/dapr/cli/issues +PackageName: CLI +PackageUrl: https://github.com/dapr/cli +License: Apache 2.0 +LicenseUrl: https://github.com/dapr/cli/blob/master/LICENSE +ShortDescription: Dapr's official command-line tool +ReleaseNotesUrl: https://github.com/dapr/cli/releases/tag/v1.16.0-rc.1 +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.yaml b/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.yaml new file mode 100644 index 0000000000000..3216d7adc6237 --- /dev/null +++ b/manifests/d/Dapr/CLI/Preview/1.16.0-rc.1/Dapr.CLI.Preview.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Dapr.CLI.Preview +PackageVersion: 1.16.0-rc.1 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.installer.yaml b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.installer.yaml new file mode 100644 index 0000000000000..808ea9b35f48f --- /dev/null +++ b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.installer.yaml @@ -0,0 +1,20 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Devolutions.Gateway +PackageVersion: 25.2.3 +InstallerType: wix +Scope: machine +InstallerSwitches: + InstallLocation: INSTALLDIR="" +UpgradeBehavior: install +ProductCode: '{10778066-5165-4755-9BE8-581A81A269E0}' +ReleaseDate: 2025-07-17 +AppsAndFeaturesEntries: +- UpgradeCode: '{DB3903D6-C451-4393-BD80-EB9F45B90214}' +Installers: +- Architecture: x64 + InstallerUrl: https://cdn.devolutions.net/download/DevolutionsGateway-x86_64-2025.2.3.0.msi + InstallerSha256: D1DC61E23C1D529966E21292857EB0999AA15B83D97F799AFD5A33F9FACAAE5A +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.locale.en-US.yaml b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.locale.en-US.yaml new file mode 100644 index 0000000000000..166e45bcefbb0 --- /dev/null +++ b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.locale.en-US.yaml @@ -0,0 +1,32 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Devolutions.Gateway +PackageVersion: 25.2.3 +PackageLocale: en-US +Publisher: Devolutions +PublisherUrl: https://devolutions.net/ +PublisherSupportUrl: https://github.com/Devolutions/devolutions-gateway/issues +PrivacyUrl: https://devolutions.net/legal/privacy +Author: Devolutions inc. +PackageName: Devolutions Gateway +PackageUrl: https://devolutions.net/gateway/ +License: Apache-2.0, MIT +Copyright: Copyright (c) 2006-2025 Devolutions Inc. +CopyrightUrl: https://devolutions.net/legal/software-license-agreements +ShortDescription: Secure remote access management — No VPN required +Description: Devolutions Gateway offers a lightweight alternative to Apache Guacamole and traditional VPNs for organizations requiring secure access to remote network segments. Meant for small deployments, the standalone version is free to install and use (commercial and personal), and offers you a simple web interface as an external launcher to connect to internally hosted services via RDP, SSH, Telnet, VNC, or ARD! +ReleaseNotes: |- + - Service - Introduce TlsVerifyStrict option for enhanced TLS certificate validation, now enabled by default in new installs + - Service - Write startup errors to a boot.stacktrace file to simplify troubleshooting during initialization + - Service - Automatically detect proxy settings from environment variables for HTTP requests + - Service - Default TlsVerifyStrict to false when the key is missing, preserving compatibility with legacy certificates + - Service - Display the full path to the configuration file during initialization for easier debugging + - Standalone - Avoid errors when writing to the clipboard without window focus + - Standalone - Fix display scaling after server-initiated resize in VNC client + - Standalone - Fix fullscreen handling issues in the ARD client during and after session start + - Standalone - Prevent clipboard sync loop when receiving updates from the remote server + - Standalone - Reduce excessive scroll speed during remote sessions in VNC client +ReleaseNotesUrl: https://devolutions.net/gateway/release-notes/#v2025.2.3.0 +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.locale.zh-CN.yaml b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.locale.zh-CN.yaml new file mode 100644 index 0000000000000..89e6c98c1c709 --- /dev/null +++ b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.locale.zh-CN.yaml @@ -0,0 +1,11 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Devolutions.Gateway +PackageVersion: 25.2.3 +PackageLocale: zh-CN +ShortDescription: 安全远程访问管理 - 无需 VPN +Description: Devolutions Gateway 为需要安全访问远程网络段的组织提供了 Apache Guacamole 和传统 VPN 的轻量级替代方案。该独立版本专为小型部署设计,可免费安装使用(商业及个人用途均适用),并通过简洁的网页界面作为外部启动器,支持通过 RDP、SSH、Telnet、VNC 或 ARD 协议连接内部托管服务! +ReleaseNotesUrl: https://devolutions.net/gateway/release-notes/#v2025.2.3.0 +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.yaml b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.yaml new file mode 100644 index 0000000000000..45d6c484c5373 --- /dev/null +++ b/manifests/d/Devolutions/Gateway/25.2.3/Devolutions.Gateway.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Devolutions.Gateway +PackageVersion: 25.2.3 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.installer.yaml b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.installer.yaml new file mode 100644 index 0000000000000..e84ae70eb53f2 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.installer.yaml @@ -0,0 +1,63 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubLabelsManager +PackageVersion: "1.12" +InstallerType: inno +InstallModes: + - interactive + - silent + - silentWithProgress +UpgradeBehavior: install +Commands: + - glm +Protocols: + - http + - https +FileExtensions: + - json +ReleaseDate: 2025-07-17 +Installers: + - InstallerLocale: zh-CN + Architecture: x64 + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12.exe + InstallerSha256: 6825bf4fb58e153b3a825c35e13c8da0cdf3a0a101159bab2e4f4a6ff9afcdad + - InstallerLocale: zh-CN + Architecture: x86 + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12.exe + InstallerSha256: 6825bf4fb58e153b3a825c35e13c8da0cdf3a0a101159bab2e4f4a6ff9afcdad + - InstallerLocale: zh-CN + Architecture: arm + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12.exe + InstallerSha256: 6825bf4fb58e153b3a825c35e13c8da0cdf3a0a101159bab2e4f4a6ff9afcdad + - InstallerLocale: zh-CN + Architecture: arm64 + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12.exe + InstallerSha256: 6825bf4fb58e153b3a825c35e13c8da0cdf3a0a101159bab2e4f4a6ff9afcdad + - InstallerLocale: zh-CN + Architecture: neutral + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12.exe + InstallerSha256: 6825bf4fb58e153b3a825c35e13c8da0cdf3a0a101159bab2e4f4a6ff9afcdad + + - InstallerLocale: en-US + Architecture: x64 + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12-EN.exe + InstallerSha256: e27daaf4726ecf376faa82e533cae7856c693842c54a70aedbc849a0234ae757 + - InstallerLocale: en-US + Architecture: x86 + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12-EN.exe + InstallerSha256: e27daaf4726ecf376faa82e533cae7856c693842c54a70aedbc849a0234ae757 + - InstallerLocale: en-US + Architecture: arm + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12-EN.exe + InstallerSha256: e27daaf4726ecf376faa82e533cae7856c693842c54a70aedbc849a0234ae757 + - InstallerLocale: en-US + Architecture: arm64 + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12-EN.exe + InstallerSha256: e27daaf4726ecf376faa82e533cae7856c693842c54a70aedbc849a0234ae757 + - InstallerLocale: en-US + Architecture: neutral + InstallerUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/download/v1.12/GitHub_Labels_Manager_Setup_v1.12-EN.exe + InstallerSha256: e27daaf4726ecf376faa82e533cae7856c693842c54a70aedbc849a0234ae757 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.locale.en-US.yaml b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.locale.en-US.yaml new file mode 100644 index 0000000000000..1528168494039 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.locale.en-US.yaml @@ -0,0 +1,35 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubLabelsManager +PackageVersion: "1.12" +PackageLocale: en-US +Publisher: DuckStudio +PublisherUrl: https://duckduckstudio.github.io/yazicbs.github.io/ +PublisherSupportUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/issues +Author: 鸭鸭「カモ」 +PackageName: GitHub Labels Manager +PackageUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager +License: GNU General Public License v3.0 +LicenseUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/blob/main/LICENSE +Copyright: Copyright (c) DuckStudio 鸭鸭「カモ」 +CopyrightUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/blob/main/LICENSE +ShortDescription: A GitHub Labels Manager +Description: GitHub Labels Manager - Automatically help you copy repo labels, get repo labels, and empty existing labels. +Tags: + - devtools + - github + - github-labels + - labels +ReleaseNotes: |- + ## Fixes + - fix(iss): Use 64-bit installation mode on x64-compatible devices by @DuckDuckStudio + + This version was built by [workflow](https://github.com/DuckDuckStudio/GitHub-Labels-Manager/actions/runs/16334181748/job/46142944960). + Full change log: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/compare/v1.11...v1.12 +ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/tag/v1.12 +Documentations: + - DocumentLabel: README + DocumentUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/blob/main/other-languages/en-US/README.md +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.locale.zh-CN.yaml b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.locale.zh-CN.yaml new file mode 100644 index 0000000000000..112d469c50678 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.locale.zh-CN.yaml @@ -0,0 +1,37 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubLabelsManager +PackageVersion: "1.12" +PackageLocale: zh-CN +Publisher: DuckStudio +PublisherUrl: https://duckduckstudio.github.io/yazicbs.github.io/ +PublisherSupportUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/issues +Author: 鸭鸭「カモ」 +PackageName: GitHub 标签管理器 +PackageUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager +License: GNU General Public License v3.0 +LicenseUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/blob/main/LICENSE +Copyright: Copyright (c) DuckStudio 鸭鸭「カモ」 +CopyrightUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/blob/main/LICENSE +ShortDescription: GitHub 仓库标签管理工具 +Description: GitHub 标签管理器 - 自动帮你复制仓库标签、获取仓库标签、清空已有标签 +Moniker: glm +Tags: + - github + - github标签 + - 开发工具 + - 标签 + - 管理器 +ReleaseNotes: |- + ## 修复 + - fix(iss): 在兼容 x64 的设备上使用 64Bit 安装模式 by @DuckDuckStudio + + 本版本由[工作流](https://github.com/DuckDuckStudio/GitHub-Labels-Manager/actions/runs/16334181748/job/46142944960)构建。 + 完整修改记录: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/compare/v1.11...v1.12 +ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/releases/tag/v1.12 +Documentations: + - DocumentLabel: README + DocumentUrl: https://github.com/DuckDuckStudio/GitHub-Labels-Manager/blob/main/README.md +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.yaml b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.yaml new file mode 100644 index 0000000000000..827d8e0c47a1c --- /dev/null +++ b/manifests/d/DuckStudio/GitHubLabelsManager/1.12/DuckStudio.GitHubLabelsManager.yaml @@ -0,0 +1,8 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubLabelsManager +PackageVersion: "1.12" +DefaultLocale: zh-CN +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.installer.yaml b/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.installer.yaml index 49e35e558d3be..53bc56257f8ae 100644 --- a/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.installer.yaml +++ b/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.installer.yaml @@ -1,4 +1,4 @@ -# Created with Sundry. +# Modified with Sundry. # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: DuckStudio.GitHubView diff --git a/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.locale.zh-CN.yaml b/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.locale.zh-CN.yaml index 4fc1647a42dd5..66d09674d09e7 100644 --- a/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.locale.zh-CN.yaml +++ b/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.locale.zh-CN.yaml @@ -1,4 +1,4 @@ -# Created with Sundry. +# Modified with Sundry. # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: DuckStudio.GitHubView @@ -37,7 +37,7 @@ ReleaseNotes: |- - chore(deps): bump Spectre.Console from 0.49.1 to 0.50.0 in /ghv 完整修改记录: https://github.com/DuckDuckStudio/GitHubView/compare/1.0.3...1.0.4 -ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHubView/releases/tag/1.0.3 +ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHubView/releases/tag/1.0.4 Documentations: - DocumentLabel: README DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/README.md diff --git a/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.yaml b/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.yaml index 2dcc5aef716b0..125a1fe3b6503 100644 --- a/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.yaml +++ b/manifests/d/DuckStudio/GitHubView/1.0.4/DuckStudio.GitHubView.yaml @@ -1,4 +1,4 @@ -# Created with Sundry. +# Modified with Sundry. # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: DuckStudio.GitHubView diff --git a/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.installer.yaml b/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.installer.yaml new file mode 100644 index 0000000000000..495cc231b4f8b --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.installer.yaml @@ -0,0 +1,124 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView +PackageVersion: 1.0.5 +InstallModes: + - interactive + - silent + - silentWithProgress +UpgradeBehavior: install +Commands: + - ghv +Protocols: + - https +ReleaseDate: 2025-07-17 +Installers: + # Inno Setup installer (.NET Runtime bundled) + - Architecture: x64 + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-Setup-SingleFile.exe + InstallerSha256: 98eef581f9a4ab01eba87ddafd20ffd27134722a1fe01c8e66d8e9d221dbcdbe + - Architecture: x86 + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-Setup-SingleFile.exe + InstallerSha256: 98eef581f9a4ab01eba87ddafd20ffd27134722a1fe01c8e66d8e9d221dbcdbe + - Architecture: arm + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-Setup-SingleFile.exe + InstallerSha256: 98eef581f9a4ab01eba87ddafd20ffd27134722a1fe01c8e66d8e9d221dbcdbe + - Architecture: arm64 + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-Setup-SingleFile.exe + InstallerSha256: 98eef581f9a4ab01eba87ddafd20ffd27134722a1fe01c8e66d8e9d221dbcdbe + - Architecture: neutral + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-Setup-SingleFile.exe + InstallerSha256: 98eef581f9a4ab01eba87ddafd20ffd27134722a1fe01c8e66d8e9d221dbcdbe + + # Direct portable executable (.NET Runtime bundled) + - Architecture: x64 + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-SingleFile.exe + InstallerSha256: 6032577012f43a330cbb8d42db22ca91fa8851cba7dc77894150651d054c2d25 + - Architecture: x86 + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-SingleFile.exe + InstallerSha256: 6032577012f43a330cbb8d42db22ca91fa8851cba7dc77894150651d054c2d25 + - Architecture: arm + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-SingleFile.exe + InstallerSha256: 6032577012f43a330cbb8d42db22ca91fa8851cba7dc77894150651d054c2d25 + - Architecture: arm64 + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-SingleFile.exe + InstallerSha256: 6032577012f43a330cbb8d42db22ca91fa8851cba7dc77894150651d054c2d25 + - Architecture: neutral + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest-SingleFile.exe + InstallerSha256: 6032577012f43a330cbb8d42db22ca91fa8851cba7dc77894150651d054c2d25 + + # Portable executable nested in ZIP archives + # .NET Runtime required + - Architecture: x64 + InstallerType: zip + ArchiveBinariesDependOnPath: true + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest.zip + InstallerSha256: 0ee2e8d01f6f452ff432c38010db27af11ac2f34f29fa98fa77627a9253421af + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: x86 + InstallerType: zip + ArchiveBinariesDependOnPath: true + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest.zip + InstallerSha256: 0ee2e8d01f6f452ff432c38010db27af11ac2f34f29fa98fa77627a9253421af + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: arm + InstallerType: zip + ArchiveBinariesDependOnPath: true + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest.zip + InstallerSha256: 0ee2e8d01f6f452ff432c38010db27af11ac2f34f29fa98fa77627a9253421af + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: arm64 + InstallerType: zip + ArchiveBinariesDependOnPath: true + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest.zip + InstallerSha256: 0ee2e8d01f6f452ff432c38010db27af11ac2f34f29fa98fa77627a9253421af + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: neutral + InstallerType: zip + ArchiveBinariesDependOnPath: true + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/1.0.5/GitHubView-1.0.5-windows-latest.zip + InstallerSha256: 0ee2e8d01f6f452ff432c38010db27af11ac2f34f29fa98fa77627a9253421af + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.locale.zh-CN.yaml b/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.locale.zh-CN.yaml new file mode 100644 index 0000000000000..38183037a79e2 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.locale.zh-CN.yaml @@ -0,0 +1,43 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView +PackageVersion: 1.0.5 +PackageLocale: zh-CN +Publisher: 鸭鸭「カモ」 +PublisherUrl: https://duckduckstudio.github.io/yazicbs.github.io/ +PublisherSupportUrl: https://github.com/DuckDuckStudio/GitHubView/issues +Author: 鸭鸭「カモ」 +PackageName: GitHubView +PackageUrl: https://duckduckstudio.github.io/yazicbs.github.io/Tools/GitHubView/ +License: GNU General Public License v3.0 +LicenseUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/LICENSE.txt +Copyright: 版权所有 (c) 鸭鸭「カモ」 +CopyrightUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/LICENSE.txt +ShortDescription: 💻在控制台中查看GitHub上的内容 +Description: GitHubView 是一个用于查看 GitHub 上的信息的命令行工具。 +Tags: + - github + - 信息查看 + - 命令 + - 命令工具 + - 命令行工具 + - 控制台 + - 终端 + - 终端工具 +ReleaseNotes: |- + ## 新功能 + - feat(user): 显示用户关注者数和正在关注数 by @DuckDuckStudio in https://github.com/DuckDuckStudio/GitHubView/pull/27 + + ## 修复 + - fix(iss): 在兼容 x64 的设备上使用 64Bit 安装模式 by @DuckDuckStudio + + 完整修改记录: https://github.com/DuckDuckStudio/GitHubView/compare/1.0.4...1.0.5 +ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHubView/releases/tag/1.0.5 +Documentations: + - DocumentLabel: README + DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/README.md + - DocumentLabel: 贡献指南 + DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/CONTRIBUTING.md +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.yaml b/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.yaml new file mode 100644 index 0000000000000..d24f1153c4678 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/1.0.5/DuckStudio.GitHubView.yaml @@ -0,0 +1,8 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView +PackageVersion: 1.0.5 +DefaultLocale: zh-CN +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.installer.yaml b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.installer.yaml new file mode 100644 index 0000000000000..6fe829f4cad66 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.installer.yaml @@ -0,0 +1,127 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView.Nightly +PackageVersion: 2025.07.17.16336851664 +UpgradeBehavior: install +Commands: + - ghv +Protocols: + - https +ReleaseDate: 2025-07-17 +Installers: + # inno + - Architecture: x64 + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-Setup-SingleFile.exe + InstallerSha256: 9adf31843941d8f160e8727bc8fa37964dd5537795d2e17d84b44cdd9b4e3611 + InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\GitHubView' + - Architecture: x86 + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-Setup-SingleFile.exe + InstallerSha256: 9adf31843941d8f160e8727bc8fa37964dd5537795d2e17d84b44cdd9b4e3611 + InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\GitHubView' + - Architecture: arm + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-Setup-SingleFile.exe + InstallerSha256: 9adf31843941d8f160e8727bc8fa37964dd5537795d2e17d84b44cdd9b4e3611 + InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\GitHubView' + - Architecture: arm64 + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-Setup-SingleFile.exe + InstallerSha256: 9adf31843941d8f160e8727bc8fa37964dd5537795d2e17d84b44cdd9b4e3611 + InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\GitHubView' + - Architecture: neutral + InstallerType: inno + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-Setup-SingleFile.exe + InstallerSha256: 9adf31843941d8f160e8727bc8fa37964dd5537795d2e17d84b44cdd9b4e3611 + InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\GitHubView' + # zip + .NET Runtime 8 + - Architecture: x64 + InstallerType: zip + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest.zip + InstallerSha256: 630ad01e897d4f427f39aa65f3101fc15c5d6d8d33cc3dc218c4df181e34edc5 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: x86 + InstallerType: zip + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest.zip + InstallerSha256: 630ad01e897d4f427f39aa65f3101fc15c5d6d8d33cc3dc218c4df181e34edc5 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: arm + InstallerType: zip + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest.zip + InstallerSha256: 630ad01e897d4f427f39aa65f3101fc15c5d6d8d33cc3dc218c4df181e34edc5 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: arm64 + InstallerType: zip + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest.zip + InstallerSha256: 630ad01e897d4f427f39aa65f3101fc15c5d6d8d33cc3dc218c4df181e34edc5 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + - Architecture: neutral + InstallerType: zip + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: output/ghv.exe + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest.zip + InstallerSha256: 630ad01e897d4f427f39aa65f3101fc15c5d6d8d33cc3dc218c4df181e34edc5 + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.Runtime.9 + # portable + - Architecture: x64 + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-SingleFile.exe + InstallerSha256: 21df53fd1180e13b1c9672d46d4e570c205cc7c1a213007d5696980ec062a1c2 + - Architecture: x86 + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-SingleFile.exe + InstallerSha256: 21df53fd1180e13b1c9672d46d4e570c205cc7c1a213007d5696980ec062a1c2 + - Architecture: arm + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-SingleFile.exe + InstallerSha256: 21df53fd1180e13b1c9672d46d4e570c205cc7c1a213007d5696980ec062a1c2 + - Architecture: arm64 + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-SingleFile.exe + InstallerSha256: 21df53fd1180e13b1c9672d46d4e570c205cc7c1a213007d5696980ec062a1c2 + - Architecture: neutral + InstallerType: portable + ArchiveBinariesDependOnPath: true + InstallerUrl: https://github.com/DuckDuckStudio/GitHubView/releases/download/2025.07.17.16336851664/GitHubView-2025.07.17.16336851664-windows-latest-SingleFile.exe + InstallerSha256: 21df53fd1180e13b1c9672d46d4e570c205cc7c1a213007d5696980ec062a1c2 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.locale.en-US.yaml b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.locale.en-US.yaml new file mode 100644 index 0000000000000..917c4b1680e41 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.locale.en-US.yaml @@ -0,0 +1,46 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView.Nightly +PackageVersion: 2025.07.17.16336851664 +PackageLocale: en-US +Publisher: 鸭鸭「カモ」 +PublisherUrl: https://duckduckstudio.github.io/yazicbs.github.io/ +PublisherSupportUrl: https://github.com/DuckDuckStudio/GitHubView/issues +Author: 鸭鸭「カモ」 +PackageName: GitHubView (Nightly) +PackageUrl: https://duckduckstudio.github.io/yazicbs.github.io/Tools/GitHubView/ +License: GNU General Public License v3.0 +LicenseUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/LICENSE.txt +Copyright: Copyright (c) 鸭鸭「カモ」 +CopyrightUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/LICENSE.txt +ShortDescription: 💻 View what's on GitHub in the console +Description: GitHubView is a command line tool for viewing content on GitHub. +Tags: + - CLI + - Command + - Command-line + - Command-line-tool + - CommandLineTool + - Console + - Console-tool + - ConsoleTool + - GitHub + - Information-view + - Nightly + - Terminal-tool + - Tool +ReleaseNotes: |- + ## What's Changed + - feat(ci): Test workflow by @DuckDuckStudio in https://github.com/DuckDuckStudio/GitHubView/pull/28 + - feat(user): Display number of followers and following by @DuckDuckStudio in https://github.com/DuckDuckStudio/GitHubView/pull/27 + + Full Changelog: https://github.com/DuckDuckStudio/GitHubView/compare/2025.07.16.16318740224...2025.07.17.16336851664 +ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHubView/releases/tag/2025.07.17.16336851664 +Documentations: + - DocumentLabel: Contribution Guide + DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/CONTRIBUTING.md + - DocumentLabel: README + DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/README.md +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.locale.zh-CN.yaml b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.locale.zh-CN.yaml new file mode 100644 index 0000000000000..869fbac1cedb9 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.locale.zh-CN.yaml @@ -0,0 +1,43 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView.Nightly +PackageVersion: 2025.07.17.16336851664 +PackageLocale: zh-CN +Publisher: 鸭鸭「カモ」 +PublisherUrl: https://duckduckstudio.github.io/yazicbs.github.io/ +PublisherSupportUrl: https://github.com/DuckDuckStudio/GitHubView/issues +Author: 鸭鸭「カモ」 +PackageName: GitHubView (Nightly) +PackageUrl: https://duckduckstudio.github.io/yazicbs.github.io/Tools/GitHubView/ +License: GNU General Public License v3.0 +LicenseUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/LICENSE.txt +Copyright: 版权所有 (c) 鸭鸭「カモ」 +CopyrightUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/LICENSE.txt +ShortDescription: 💻在控制台中查看GitHub上的内容 +Description: GitHubView 是一个用于查看 GitHub 上的信息的命令行工具。 +Tags: + - cli + - github + - nightly + - 信息查看 + - 命令 + - 命令工具 + - 命令行工具 + - 控制台 + - 终端 + - 终端工具 +ReleaseNotes: |- + ## 新功能 + - feat(ci): 测试工作流 by @DuckDuckStudio in https://github.com/DuckDuckStudio/GitHubView/pull/28 + - feat(user): 显示用户关注者数和正在关注数 by @DuckDuckStudio in https://github.com/DuckDuckStudio/GitHubView/pull/27 + + 完整修改记录: https://github.com/DuckDuckStudio/GitHubView/compare/2025.07.16.16318740224...2025.07.17.16336851664 +ReleaseNotesUrl: https://github.com/DuckDuckStudio/GitHubView/releases/tag/2025.07.17.16336851664 +Documentations: + - DocumentLabel: README + DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/README.md + - DocumentLabel: 贡献指南 + DocumentUrl: https://github.com/DuckDuckStudio/GitHubView/blob/master/CONTRIBUTING.md +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.yaml b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.yaml new file mode 100644 index 0000000000000..1bb8727dcd480 --- /dev/null +++ b/manifests/d/DuckStudio/GitHubView/Nightly/2025.07.17.16336851664/DuckStudio.GitHubView.Nightly.yaml @@ -0,0 +1,8 @@ +# Created with Sundry. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: DuckStudio.GitHubView.Nightly +PackageVersion: 2025.07.17.16336851664 +DefaultLocale: zh-CN +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.installer.yaml b/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.installer.yaml deleted file mode 100644 index 8f1b74b39335d..0000000000000 --- a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.installer.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Created using wingetcreate 1.9.14.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json - -PackageIdentifier: Easeware.DriverEasy -PackageVersion: 7.0.1.19430 -InstallerLocale: en-US -MinimumOSVersion: 10.0.0.0 -InstallerType: inno -Scope: machine -InstallModes: -- interactive -- silent -- silentWithProgress -UpgradeBehavior: install -Installers: -- Architecture: x86 - InstallerUrl: https://download.drivereasy.com/DriverEasy_Setup.exe - InstallerSha256: C0012FABCD8B4EE1C9B67157FDC251649EB3195DDF28FFC91202C5C4A962C1B7 -ManifestType: installer -ManifestVersion: 1.10.0 diff --git a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.de-DE.yaml b/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.de-DE.yaml deleted file mode 100644 index c2c8ffdfb7b64..0000000000000 --- a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.de-DE.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Created using wingetcreate 1.9.14.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json - -PackageIdentifier: Easeware.DriverEasy -PackageVersion: 7.0.1.19430 -PackageLocale: de-DE -Publisher: Easeware -PublisherUrl: https://de.drivereasy.com/ -PublisherSupportUrl: https://de.drivereasy.com/tech-support/ -PrivacyUrl: https://de.drivereasy.com/privacy-policy/ -Author: Easeware -PackageName: Driver Easy -PackageUrl: https://www.drivereasy.com/goto/de.php -License: Proprietär -LicenseUrl: https://de.drivereasy.com/eula/ -Copyright: Copyright (c) 2009-2025 Easeware. -ShortDescription: Laden Sie einfach die neuesten/fehlenden Treiber für Ihren Computer herunter! -Tags: -- geräte-treiber -- treiber -- treiber-updater -ManifestType: locale -ManifestVersion: 1.10.0 diff --git a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.en-US.yaml b/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.en-US.yaml deleted file mode 100644 index 96d6038074f28..0000000000000 --- a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.en-US.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Created using wingetcreate 1.9.14.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json - -PackageIdentifier: Easeware.DriverEasy -PackageVersion: 7.0.1.19430 -PackageLocale: en-US -Publisher: Easeware -PublisherUrl: https://www.drivereasy.com/ -PublisherSupportUrl: https://www.drivereasy.com/tech-support/ -PrivacyUrl: https://www.drivereasy.com/privacy-policy/ -Author: Easeware -PackageName: Driver Easy -PackageUrl: https://www.drivereasy.com/ -License: Proprietary -LicenseUrl: https://www.drivereasy.com/eula/ -Copyright: Copyright (c) 2009-2025 Easeware. -ShortDescription: Easy download newest/missing drivers for your computer! -Moniker: drivereasy -Tags: -- device-drivers -- driver -- drivers -- driver-updater -- updater -ManifestType: defaultLocale -ManifestVersion: 1.10.0 diff --git a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.fr-FR.yaml b/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.fr-FR.yaml deleted file mode 100644 index 09ee5f0c75b74..0000000000000 --- a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.fr-FR.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Created using wingetcreate 1.9.14.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json - -PackageIdentifier: Easeware.DriverEasy -PackageVersion: 7.0.1.19430 -PackageLocale: fr-FR -Publisher: Easeware -PublisherUrl: https://fr.drivereasy.com/ -PublisherSupportUrl: https://fr.drivereasy.com/tech-support/ -PrivacyUrl: https://fr.drivereasy.com/privacy-policy/ -Author: Easeware -PackageName: Driver Easy -PackageUrl: https://www.drivereasy.com/goto/fr.php -License: Propriétaire -LicenseUrl: https://fr.drivereasy.com/eula/ -Copyright: Copyright (c) 2009-2025 Easeware. -ShortDescription: Téléchargez facilement les pilotes les plus récents/manquants pour votre ordinateur! -Tags: -- pilotes de périphériques -- pilotes -- mise à jour pilotes -ManifestType: locale -ManifestVersion: 1.10.0 diff --git a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.ja-JP.yaml b/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.ja-JP.yaml deleted file mode 100644 index a33c85b9cbb52..0000000000000 --- a/manifests/e/Easeware/DriverEasy/7.0.1.19430/Easeware.DriverEasy.locale.ja-JP.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Created using wingetcreate 1.9.14.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json - -PackageIdentifier: Easeware.DriverEasy -PackageVersion: 7.0.1.19430 -PackageLocale: ja-JP -Publisher: Easeware -PublisherUrl: https://www.drivereasy.jp/ -PublisherSupportUrl: https://www.drivereasy.jp/tech-support/ -PrivacyUrl: https://www.drivereasy.jp/privacy-policy/ -Author: Easeware -PackageName: Driver Easy -PackageUrl: https://www.drivereasy.com/goto/ja.php -License: 独自の -LicenseUrl: https://www.drivereasy.jp/eula/ -Copyright: Copyright (c) 2009-2025 Easeware. -ShortDescription: お使いのコンピューターの最新/不足しているドライバーを簡単にダウンロードできます。 -Tags: -- デバイスドライバー -- ドライバー -- ドライバーアップデータ -ManifestType: locale -ManifestVersion: 1.10.0 diff --git a/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.installer.yaml b/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.installer.yaml new file mode 100644 index 0000000000000..b4b696af9f6e8 --- /dev/null +++ b/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.installer.yaml @@ -0,0 +1,21 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: EpicGames.EpicGamesLauncher +PackageVersion: 1.3.150.0 +InstallerType: wix +Scope: machine +UpgradeBehavior: install +ProductCode: '{026CCAB2-D54F-43D6-A3AC-10825D893A63}' +AppsAndFeaturesEntries: +- ProductCode: '{026CCAB2-D54F-43D6-A3AC-10825D893A63}' + UpgradeCode: '{D0769F44-D459-450F-B084-CAE38062C75B}' +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles(x86)%\.\Epic Games' +Installers: +- Architecture: x86 + InstallerUrl: https://epicgames-download1.akamaized.net/Builds/UnrealEngineLauncher/Installers/Win32/EpicInstaller-18.8.0.msi?launcherfilename=EpicInstaller-18.8.0.msi + InstallerSha256: C0264EF03C1CA5188BE831BCA9BED61D92B6F0E177FCAA7BEF82D764C4D6756A +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.locale.en-US.yaml b/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.locale.en-US.yaml new file mode 100644 index 0000000000000..8b0013bb8dc50 --- /dev/null +++ b/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.locale.en-US.yaml @@ -0,0 +1,47 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: EpicGames.EpicGamesLauncher +PackageVersion: 1.3.150.0 +PackageLocale: en-US +Publisher: Epic Games, Inc. +PublisherUrl: https://epicgames.com/site/about +PublisherSupportUrl: https://epicgames.com/help/ +PrivacyUrl: https://epicgames.com/privacypolicy +PackageName: Epic Games Launcher +PackageUrl: https://epicgames.com/download +License: Proprietary +LicenseUrl: https://epicgames.com/eula +Copyright: Copyright © 2024, Epic Games, Inc. All rights reserved. +CopyrightUrl: https://epicgames.com/tos +ShortDescription: Epic Games Launcher for the Epic Games Store and Unreal Engine +Description: The Epic Games Launcher provides access to the Epic Games Store and Unreal Engine. The Epic Games Store is a marketplace where you can find, purchase, download and play games. +Moniker: epicgameslauncher +Tags: +- distribute +- epic +- epic-games-launcher +- epic-games-store +- epic-online-services +- fortnite +- game +- game-store +- games +- games-store +- gaming +- launcher +- marketplace +- store +- unreal +- unreal-engine +Documentations: +- DocumentLabel: Community Rules + DocumentUrl: https://epicgames.com/community-rules +- DocumentLabel: Epic Games Store Refund Policy + DocumentUrl: https://epicgames.com/site/store-refund-policy +- DocumentLabel: Epic Games Store Roadmap + DocumentUrl: https://trello.com/b/GXLc34hk +- DocumentLabel: FAQ + DocumentUrl: https://epicgames.com/epic-games-store-faq +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.yaml b/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.yaml new file mode 100644 index 0000000000000..680779d730d3a --- /dev/null +++ b/manifests/e/EpicGames/EpicGamesLauncher/1.3.150.0/EpicGames.EpicGamesLauncher.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: EpicGames.EpicGamesLauncher +PackageVersion: 1.3.150.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.installer.yaml b/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.installer.yaml new file mode 100644 index 0000000000000..8239b77c46982 --- /dev/null +++ b/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.installer.yaml @@ -0,0 +1,24 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Erlang.ErlangOTP +PackageVersion: 26.2.5.14 +InstallerType: nullsoft +Scope: machine +Commands: +- erl +FileExtensions: +- beam +- erl +- hrl +ProductCode: Erlang OTP +Installers: +- Architecture: x86 + InstallerUrl: https://github.com/erlang/otp/releases/download/OTP-26.2.5.14/otp_win32_26.2.5.14.exe + InstallerSha256: 7F72E0064444AE9DB178B800275FDBF0715A858DEFE989636873C859FC5B8DAE +- Architecture: x64 + InstallerUrl: https://github.com/erlang/otp/releases/download/OTP-26.2.5.14/otp_win64_26.2.5.14.exe + InstallerSha256: F5C64DF73552902FA0C9DA830A40149E0D90F45BB55FF0755930D1F7895EC5E5 +ManifestType: installer +ManifestVersion: 1.10.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.locale.en-US.yaml b/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.locale.en-US.yaml new file mode 100644 index 0000000000000..9e4f863c53084 --- /dev/null +++ b/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.locale.en-US.yaml @@ -0,0 +1,27 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Erlang.ErlangOTP +PackageVersion: 26.2.5.14 +PackageLocale: en-US +Publisher: Ericsson AB +PublisherUrl: https://www.erlang.org/ +PublisherSupportUrl: https://github.com/erlang/otp/issues +PackageName: Erlang OTP +PackageUrl: https://www.erlang.org/downloads +License: Apache-2.0 +LicenseUrl: https://github.com/erlang/otp/blob/HEAD/LICENSE.txt +CopyrightUrl: https://github.com/erlang/otp/blob/master/LICENSE.txt +ShortDescription: Erlang is a programming language and runtime system for building massively scalable soft real-time systems with requirements on high availability. +Description: Erlang is a programming language and runtime system for building massively scalable soft real-time systems with requirements on high availability. +Moniker: erlang +Tags: +- erlang +- otp +- programming-language +ReleaseNotesUrl: https://github.com/erlang/otp/releases/tag/OTP-26.2.5.14 +Documentations: +- DocumentLabel: Wiki + DocumentUrl: https://github.com/erlang/otp/wiki +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.yaml b/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.yaml new file mode 100644 index 0000000000000..938c0a9227e3f --- /dev/null +++ b/manifests/e/Erlang/ErlangOTP/26.2.5.14/Erlang.ErlangOTP.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Erlang.ErlangOTP +PackageVersion: 26.2.5.14 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.installer.yaml b/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.installer.yaml new file mode 100644 index 0000000000000..f2722d4c59a5e --- /dev/null +++ b/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.installer.yaml @@ -0,0 +1,24 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Erlang.ErlangOTP +PackageVersion: 28.0.2 +InstallerType: nullsoft +Scope: machine +Commands: +- erl +FileExtensions: +- beam +- erl +- hrl +ProductCode: Erlang OTP +Installers: +- Architecture: x86 + InstallerUrl: https://github.com/erlang/otp/releases/download/OTP-28.0.2/otp_win32_28.0.2.exe + InstallerSha256: A544A3587DB2B63FB739FC14429E0BEA6C0E33026D4B7F67738E99E666E66D3A +- Architecture: x64 + InstallerUrl: https://github.com/erlang/otp/releases/download/OTP-28.0.2/otp_win64_28.0.2.exe + InstallerSha256: D1F33CA9DF3BBC36A175E027681935E6E3C456EC2766DDCB057CD81AE4CCAF57 +ManifestType: installer +ManifestVersion: 1.10.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.locale.en-US.yaml b/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.locale.en-US.yaml new file mode 100644 index 0000000000000..1f6e06bddc352 --- /dev/null +++ b/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.locale.en-US.yaml @@ -0,0 +1,27 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Erlang.ErlangOTP +PackageVersion: 28.0.2 +PackageLocale: en-US +Publisher: Ericsson AB +PublisherUrl: https://www.erlang.org/ +PublisherSupportUrl: https://github.com/erlang/otp/issues +PackageName: Erlang OTP +PackageUrl: https://www.erlang.org/downloads +License: Apache-2.0 +LicenseUrl: https://github.com/erlang/otp/blob/HEAD/LICENSE.txt +CopyrightUrl: https://github.com/erlang/otp/blob/master/LICENSE.txt +ShortDescription: Erlang is a programming language and runtime system for building massively scalable soft real-time systems with requirements on high availability. +Description: Erlang is a programming language and runtime system for building massively scalable soft real-time systems with requirements on high availability. +Moniker: erlang +Tags: +- erlang +- otp +- programming-language +ReleaseNotesUrl: https://github.com/erlang/otp/releases/tag/OTP-28.0.2 +Documentations: +- DocumentLabel: Wiki + DocumentUrl: https://github.com/erlang/otp/wiki +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.yaml b/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.yaml new file mode 100644 index 0000000000000..9254e6490f038 --- /dev/null +++ b/manifests/e/Erlang/ErlangOTP/28.0.2/Erlang.ErlangOTP.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Erlang.ErlangOTP +PackageVersion: 28.0.2 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.installer.yaml b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.installer.yaml new file mode 100644 index 0000000000000..a23af020c2b46 --- /dev/null +++ b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.installer.yaml @@ -0,0 +1,26 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: GDevelop.GDevelop +PackageVersion: 5.5.237 +InstallerType: nullsoft +InstallerSwitches: + Upgrade: --updated +UpgradeBehavior: install +ProductCode: c2a9b91e-8206-5b4e-b81d-9aa27463c28e +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://github.com/4ian/GDevelop/releases/download/v5.5.237/GDevelop-5-Setup-5.5.237.exe + InstallerSha256: BF02F6831951F754546CD331EC632F22D46756187F3704B28EA88671905279CC + InstallerSwitches: + Custom: /currentuser +- Architecture: x64 + Scope: machine + InstallerUrl: https://github.com/4ian/GDevelop/releases/download/v5.5.237/GDevelop-5-Setup-5.5.237.exe + InstallerSha256: BF02F6831951F754546CD331EC632F22D46756187F3704B28EA88671905279CC + InstallerSwitches: + Custom: /allusers +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.locale.en-US.yaml b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.locale.en-US.yaml new file mode 100644 index 0000000000000..769ffd2cac962 --- /dev/null +++ b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.locale.en-US.yaml @@ -0,0 +1,65 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: GDevelop.GDevelop +PackageVersion: 5.5.237 +PackageLocale: en-US +Publisher: GDevelop Team +PublisherUrl: http://www.florianrival.com/ +PublisherSupportUrl: https://github.com/4ian/GDevelop/issues +PrivacyUrl: https://gdevelop.io/page/privacy-policy +Author: Florian Rival +PackageName: GDevelop +PackageUrl: https://gdevelop.io/ +License: MIT +LicenseUrl: https://github.com/4ian/GDevelop/blob/HEAD/LICENSE.md +Copyright: Copyright (c) 2015-present Florian Rival +ShortDescription: The fastest, easiest, most powerful no-code game engine. +Description: "GDevelop is a free, open-source game engine that's 10x easier and faster to use than anything else. Build from anywhere — even on your phone. Publish everywhere: iOS, Android, Steam, web, gaming platforms. Reach millions of players or create the next hit game you've been dreaming of." +Moniker: gdevelop +Tags: +- develop +- development +- game +ReleaseNotes: |- + 📚 A streamlined Learn page with new premium courses to learn gamedev + GDevelop homepage shows a new, updated Learn page when you launch GDevelop: + + It serves as a home, notably for new users, highlighting the different resources you can use to improve your game creation skills: + - 📕 Premium, complete courses designed specifically for GDevelop: learn the GDevelop essentials (accessible for free by all subscribers), how to make a specific game or specialized courses about marketing, UI, etc... Stay tuned for new content in the following weeks: sound design, how to make art for your game, and a course about making a 3D GTA-like 👀 + - ⛳️ In-app tutorials (previously found in the Get Started page), + - 🎥 All the video tutorials from the Youtube Channel + - 👾 Links to great examples to use as a starting point + - 📚 More free tutorials (video or text based), as well as the traditional links to the Discord, the forum and to ask a question to the GDevelop AI. + The courses are exclusive content made by content creators, teachers or GDevelop specialists. They are separate from GDevelop subscriptions. All courses can be purchased with credits, using Paypal or credit cards (Stripe). + 🌟 All premium courses are free one more day for everyone with a Silver, Gold, or Pro subscription. + The full GDevelop Master Course, featuring 15 chapters, dozens of tasks, and step-by-step answers, will remain permanently accessible to all subscribers. Thank you for your support! + Note that you can set, in the editor preferences, the "Create" page to be the default tab when you launch GDevelop if you prefer a more focused experience. + 💝 Improvements + - Add spell check option for text input (disabled by default) + - Add an action to join a specific Multiplayer lobby using its identifier, and an expression to get the current lobby ID (thanks @Jurfix!) + 🐛 Bug fixes + - Fix AI not drawing properly multiple instances + - Fix a crash of the scene editor when a custom object extension is updated + - Fix 3D impulse and force toward a point actions + - Fix effect default values + - Fix multiplayer synchronization of custom object positions + - Fix 3D physics behaviors activation and deactivation + - Fix the check box to stop sounds at scene start up not being applied properly + - Fix text input displayed position when inside a custom object whose layer is moved + - Fix the "cursor is on" condition when used on custom object parent object + - Fix AI agent not working with games with a lot of extensions or that were too big + - Fix hemisphere light orientation when the top is set on Z+ + - Fix shadow casting and receiving that were inverted for 3D boxes + ⚙️ Extensions + - [Resource bar] Updated to allow to use visual variants + 🕹 Examples + - Updated all examples to use "variants" for continuous and tiled resource bars. + - Use an hemisphere lights for some 3D examples. + - [3D car coin hunt] Fix the road physics shape Z offset. + 🕹 Premium Game Templates + - [Idle Clicker Template] Fixed a rare bug where if you killed the boss and immediately quit the game and return, the player will no longer move (soft lock) +ReleaseNotesUrl: https://github.com/4ian/GDevelop/releases/tag/v5.5.237 +PurchaseUrl: https://gdevelop.io/pricing +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.locale.zh-CN.yaml b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.locale.zh-CN.yaml new file mode 100644 index 0000000000000..44313dcfefa8a --- /dev/null +++ b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.locale.zh-CN.yaml @@ -0,0 +1,24 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: GDevelop.GDevelop +PackageVersion: 5.5.237 +PackageLocale: zh-CN +Publisher: GDevelop Team +PublisherUrl: http://www.florianrival.com/ +PublisherSupportUrl: https://github.com/4ian/GDevelop/issues +PrivacyUrl: https://gdevelop.io/page/privacy-policy +Author: Florian Rival +PackageName: GDevelop +PackageUrl: https://gdevelop.io/ +License: MIT +LicenseUrl: https://github.com/4ian/GDevelop/blob/HEAD/LICENSE.md +Copyright: Copyright (c) 2015-present Florian Rival +ShortDescription: 最快、最简单、最强大的无代码游戏引擎。 +Description: GDevelop 是一款免费的开源游戏引擎,使用起来比其它任何引擎都要简单和快速 10 倍。在任何地方都能创建,甚至是在手机上。在任何地方都能发布:iOS、Android、Steam、网页和游戏平台。与数百万玩家见面,或制作下一款你梦寐以求的热门游戏。 +Tags: +- 开发 +ReleaseNotesUrl: https://github.com/4ian/GDevelop/releases/tag/v5.5.237 +PurchaseUrl: https://gdevelop.io/pricing +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.yaml b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.yaml new file mode 100644 index 0000000000000..c4f9a3df2a724 --- /dev/null +++ b/manifests/g/GDevelop/GDevelop/5.5.237/GDevelop.GDevelop.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: GDevelop.GDevelop +PackageVersion: 5.5.237 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/g/Genesys/GenesysCloud/2.43.829.0/Genesys.GenesysCloud.installer.yaml b/manifests/g/Genesys/GenesysCloud/2.43.829.0/Genesys.GenesysCloud.installer.yaml index 29d1aa4fc5b70..50e12eeb25954 100644 --- a/manifests/g/Genesys/GenesysCloud/2.43.829.0/Genesys.GenesysCloud.installer.yaml +++ b/manifests/g/Genesys/GenesysCloud/2.43.829.0/Genesys.GenesysCloud.installer.yaml @@ -7,18 +7,18 @@ Scope: machine UpgradeBehavior: install Protocols: - gcvideo -ReleaseDate: 2025-07-01 +ReleaseDate: 2025-07-16 Installers: - Architecture: x86 InstallerType: burn - InstallerUrl: https://app.mypurecloud.com/directory-windows/build-assets/2.43.829-132/genesys-cloud-windows-2.43.829.exe + InstallerUrl: https://app.mypurecloud.com/directory-windows/build-assets/2.43.829-140/genesys-cloud-windows-2.43.829.exe InstallerSha256: A8A6F5BB2F6462ADC6065ED5DDC7291704C4FC104220D9F46E4D941D7234A667 ProductCode: '{59AE0A5F-CAF5-45CE-ACCA-EF547BD2178F}' AppsAndFeaturesEntries: - UpgradeCode: '{1FA949E8-10C8-4CF2-9A6E-47515E0442E9}' - Architecture: x86 InstallerType: wix - InstallerUrl: https://app.mypurecloud.com/directory-windows/build-assets/2.43.829-132/genesys-cloud-windows-2.43.829.msi + InstallerUrl: https://app.mypurecloud.com/directory-windows/build-assets/2.43.829-140/genesys-cloud-windows-2.43.829.msi InstallerSha256: 44AD9671A149A5416C83E84202E6158842BF0113BB2F55CABCA548830DB136EC InstallerSwitches: InstallLocation: INSTALLDIR="" diff --git a/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.installer.yaml b/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.installer.yaml new file mode 100644 index 0000000000000..0e6479de61c16 --- /dev/null +++ b/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.installer.yaml @@ -0,0 +1,18 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Gitlab.Runner +PackageVersion: 18.2.0 +InstallerType: portable +Commands: +- gitlab-runner +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x86 + InstallerUrl: https://gitlab-runner-downloads.s3.amazonaws.com/v18.2.0/binaries/gitlab-runner-windows-386.exe + InstallerSha256: B34425AA5FFC78B0B45A4BA138AFB41469F0760ED15B14125203DA093E6515F5 +- Architecture: x64 + InstallerUrl: https://gitlab-runner-downloads.s3.amazonaws.com/v18.2.0/binaries/gitlab-runner-windows-amd64.exe + InstallerSha256: F269FB68B42D11B1C87B19656F36522DB6BFECA81747F6CE17C5DCB7018741F4 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.locale.en-US.yaml b/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.locale.en-US.yaml new file mode 100644 index 0000000000000..4629f2d209b2a --- /dev/null +++ b/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.locale.en-US.yaml @@ -0,0 +1,25 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Gitlab.Runner +PackageVersion: 18.2.0 +PackageLocale: en-US +Publisher: GitLab Inc. +PublisherUrl: https://gitlab.com/ +PublisherSupportUrl: https://about.gitlab.com/support/ +PrivacyUrl: https://about.gitlab.com/privacy/ +Author: GitLab Inc. +PackageName: GitLab Runner +PackageUrl: https://gitlab.com/gitlab-org/gitlab-runner +License: MIT +LicenseUrl: https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/LICENSE +Copyright: Copyright (c) 2015-2019 GitLab B.V. +CopyrightUrl: https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/LICENSE +ShortDescription: GitLab Runner is the open source project that is used to run your CI/CD jobs and send the results back to GitLab. +Moniker: gitlab-runner +Tags: +- cd +- ci +- pipeline +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.yaml b/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.yaml new file mode 100644 index 0000000000000..edc816afb9038 --- /dev/null +++ b/manifests/g/Gitlab/Runner/18.2.0/Gitlab.Runner.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Gitlab.Runner +PackageVersion: 18.2.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.installer.yaml b/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.installer.yaml deleted file mode 100644 index 2f08849998b93..0000000000000 --- a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.installer.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# Created with YamlCreate.ps1 Dumplings Mod -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json - -PackageIdentifier: Google.Chrome.Canary -PackageVersion: 140.0.7274.0 -InstallerType: exe -Scope: user -InstallModes: -- silent -InstallerSwitches: - Log: --verbose-logging --log-file="" - Custom: --chrome-sxs --do-not-launch-chrome -ExpectedReturnCodes: -- InstallerReturnCode: 60 - ReturnResponse: installInProgress -- InstallerReturnCode: 22 - ReturnResponse: cancelledByUser -- InstallerReturnCode: 4 - ReturnResponse: downgrade -- InstallerReturnCode: 3 - ReturnResponse: alreadyInstalled -UpgradeBehavior: install -Protocols: -- http -- https -- mailto -- tel -FileExtensions: -- htm -- html -- pdf -- shtml -- svg -- webp -- xht -- xhtml -ProductCode: Google Chrome SxS -Installers: -- Architecture: x86 - InstallerUrl: https://dl.google.com/release2/chrome/acxcy2qrov2au2hyy5fmntx3lz2q_140.0.7274.0/140.0.7274.0_chrome_installer_uncompressed.exe - InstallerSha256: B58AF917A309716C47721874D15CB275E6E85B6926D7DFFFF672ED22E6E05356 -- Architecture: x64 - InstallerUrl: https://dl.google.com/release2/chrome/gkb4qb3qk4qeudxu7a432q2jdm_140.0.7274.0/140.0.7274.0_chrome_installer_uncompressed.exe - InstallerSha256: E816D816F7111BF1BD51EBB9E0565853F6C68FDEF1EFB75EB5D664746EE178D5 -- Architecture: arm64 - InstallerUrl: https://dl.google.com/release2/chrome/iohfhqb7iurdqibmdqb5gauhdi_140.0.7274.0/140.0.7274.0_chrome_installer_uncompressed.exe - InstallerSha256: 9C3B27461D5CA30E9AB71399EA513792524630A9B61CC2A21670836D3DC3FECD -ManifestType: installer -ManifestVersion: 1.10.0 diff --git a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.installer.yaml b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.installer.yaml similarity index 64% rename from manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.installer.yaml rename to manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.installer.yaml index a58cc7565ff9f..37a6ef3d5693a 100644 --- a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.installer.yaml +++ b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.installer.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: Google.Chrome.Dev -PackageVersion: 140.0.7259.2 +PackageVersion: 140.0.7299.0 InstallerType: wix Scope: machine UpgradeBehavior: install @@ -26,17 +26,17 @@ ElevationRequirement: elevatesSelf Installers: - Architecture: x86 InstallerUrl: https://dl.google.com/dl/chrome/install/dev/googlechromedevstandaloneenterprise.msi - InstallerSha256: 28517424A8A7063CED46C60278CF8632F9F441865994643982973AB1ABB2EC91 - ProductCode: '{56D24ED8-C5D4-3BDF-9488-D726AD1AAC89}' + InstallerSha256: C7D2F731917B0315B81C0CAE27536AB10E6BABAE8CD03E1C578C13219769457F + ProductCode: '{F5EE4DCE-2CCB-39D8-ABFC-8F4C9D772C8A}' AppsAndFeaturesEntries: - - ProductCode: '{56D24ED8-C5D4-3BDF-9488-D726AD1AAC89}' + - ProductCode: '{F5EE4DCE-2CCB-39D8-ABFC-8F4C9D772C8A}' UpgradeCode: '{4446A051-2887-39AC-BF8C-BD2ED8B703CA}' - Architecture: x64 InstallerUrl: https://dl.google.com/dl/chrome/install/dev/googlechromedevstandaloneenterprise64.msi - InstallerSha256: A807A97A0262F65D6ACCF14EC24B88229A9978A0D4AC41AA662BB5631154F978 - ProductCode: '{EB9DA345-3CCF-3EFB-B28F-53EA7D5EC7E9}' + InstallerSha256: 330225D1AA21E0CD5C2D52ED5776ECAFCFE428640621560BC218592E4418C00B + ProductCode: '{F2DB54F6-C5F2-33D2-B6AB-A4FC5CE65781}' AppsAndFeaturesEntries: - - ProductCode: '{EB9DA345-3CCF-3EFB-B28F-53EA7D5EC7E9}' + - ProductCode: '{F2DB54F6-C5F2-33D2-B6AB-A4FC5CE65781}' UpgradeCode: '{4446A051-2887-39AC-BF8C-BD2ED8B703CA}' ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.en-US.yaml b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.en-US.yaml similarity index 94% rename from manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.en-US.yaml rename to manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.en-US.yaml index 00d08452d45db..2de1f7409ae78 100644 --- a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.en-US.yaml +++ b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: Google.Chrome.Dev -PackageVersion: 140.0.7259.2 +PackageVersion: 140.0.7299.0 PackageLocale: en-US Publisher: Google LLC PublisherUrl: https://www.google.com/ diff --git a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.nb-NO.yaml b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.nb-NO.yaml similarity index 94% rename from manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.nb-NO.yaml rename to manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.nb-NO.yaml index 931629b174b6b..f00e67b4edb79 100644 --- a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.nb-NO.yaml +++ b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.nb-NO.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Google.Chrome.Dev -PackageVersion: 140.0.7259.2 +PackageVersion: 140.0.7299.0 PackageLocale: nb-NO Publisher: Google LLC PublisherUrl: https://www.google.com/ diff --git a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.zh-CN.yaml b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.zh-CN.yaml similarity index 95% rename from manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.zh-CN.yaml rename to manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.zh-CN.yaml index c028eeb747c50..659dd0975b601 100644 --- a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.locale.zh-CN.yaml +++ b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.locale.zh-CN.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Google.Chrome.Dev -PackageVersion: 140.0.7259.2 +PackageVersion: 140.0.7299.0 PackageLocale: zh-CN Publisher: Google LLC PublisherUrl: https://www.google.com/ diff --git a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.yaml b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.yaml similarity index 86% rename from manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.yaml rename to manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.yaml index 539f00120f23b..c420f51175688 100644 --- a/manifests/g/Google/Chrome/Dev/140.0.7259.2/Google.Chrome.Dev.yaml +++ b/manifests/g/Google/Chrome/Dev/140.0.7299.0/Google.Chrome.Dev.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: Google.Chrome.Dev -PackageVersion: 140.0.7259.2 +PackageVersion: 140.0.7299.0 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.installer.yaml b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.installer.yaml new file mode 100644 index 0000000000000..92ca30a54825c --- /dev/null +++ b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.installer.yaml @@ -0,0 +1,74 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Google.Chrome.Dev.EXE +PackageVersion: 140.0.7299.0 +InstallerType: exe +InstallModes: +- silent +InstallerSwitches: + Log: --verbose-logging --log-file="" +ExpectedReturnCodes: +- InstallerReturnCode: 3 + ReturnResponse: alreadyInstalled +- InstallerReturnCode: 4 + ReturnResponse: downgrade +- InstallerReturnCode: 22 + ReturnResponse: cancelledByUser +- InstallerReturnCode: 60 + ReturnResponse: installInProgress +UpgradeBehavior: install +Protocols: +- http +- https +- mailto +- tel +FileExtensions: +- htm +- html +- pdf +- shtml +- svg +- webp +- xht +- xhtml +ProductCode: Google Chrome Dev +Installers: +- Architecture: x86 + Scope: user + InstallerUrl: https://dl.google.com/release2/chrome/j6azai5sqifducbfkfeapsv6a4_140.0.7299.0/140.0.7299.0_chrome_installer_uncompressed.exe + InstallerSha256: 2C4E015B4F3AC308AA516A8FB242ECA48227371731F70A40E4B5DB6079A1BD2A + InstallerSwitches: + Custom: --chrome-dev --do-not-launch-chrome +- Architecture: x86 + Scope: machine + InstallerUrl: https://dl.google.com/release2/chrome/j6azai5sqifducbfkfeapsv6a4_140.0.7299.0/140.0.7299.0_chrome_installer_uncompressed.exe + InstallerSha256: 2C4E015B4F3AC308AA516A8FB242ECA48227371731F70A40E4B5DB6079A1BD2A + InstallerSwitches: + Custom: --chrome-dev --do-not-launch-chrome --system-level +- Architecture: x64 + Scope: user + InstallerUrl: https://dl.google.com/release2/chrome/adnrmerfm5ge7ggfsgnnchebwofa_140.0.7299.0/140.0.7299.0_chrome_installer_uncompressed.exe + InstallerSha256: E2E74F5F040271864C397057A22776F857D152F17E46FF520539D65A55068F62 + InstallerSwitches: + Custom: --chrome-dev --do-not-launch-chrome +- Architecture: x64 + Scope: machine + InstallerUrl: https://dl.google.com/release2/chrome/adnrmerfm5ge7ggfsgnnchebwofa_140.0.7299.0/140.0.7299.0_chrome_installer_uncompressed.exe + InstallerSha256: E2E74F5F040271864C397057A22776F857D152F17E46FF520539D65A55068F62 + InstallerSwitches: + Custom: --chrome-dev --do-not-launch-chrome --system-level +- Architecture: arm64 + Scope: user + InstallerUrl: https://dl.google.com/release2/chrome/addhgnpfabas2xfjijhn4dg32o2a_140.0.7299.0/140.0.7299.0_chrome_installer_uncompressed.exe + InstallerSha256: 619C768180DA93257AC85D0D45E8C88A51C16C71002E15116084780A25B94799 + InstallerSwitches: + Custom: --chrome-dev --do-not-launch-chrome +- Architecture: arm64 + Scope: machine + InstallerUrl: https://dl.google.com/release2/chrome/addhgnpfabas2xfjijhn4dg32o2a_140.0.7299.0/140.0.7299.0_chrome_installer_uncompressed.exe + InstallerSha256: 619C768180DA93257AC85D0D45E8C88A51C16C71002E15116084780A25B94799 + InstallerSwitches: + Custom: --chrome-dev --do-not-launch-chrome --system-level +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.en-US.yaml b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.en-US.yaml similarity index 60% rename from manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.en-US.yaml rename to manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.en-US.yaml index 8f901fda1e80e..a8022797c1a99 100644 --- a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.en-US.yaml +++ b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.en-US.yaml @@ -1,22 +1,21 @@ # Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json -PackageIdentifier: Google.Chrome.Canary -PackageVersion: 140.0.7274.0 +PackageIdentifier: Google.Chrome.Dev.EXE +PackageVersion: 140.0.7299.0 PackageLocale: en-US Publisher: Google LLC PublisherUrl: https://www.google.com/ PublisherSupportUrl: https://support.google.com/ PrivacyUrl: https://policies.google.com/privacy Author: Google LLC -PackageName: Google Chrome Canary -PackageUrl: https://www.google.com/chrome/canary +PackageName: Google Chrome Dev (EXE) +PackageUrl: https://www.google.com/chrome/dev License: Freeware LicenseUrl: https://www.google.com/chrome/terms Copyright: Copyright 2024 Google LLC. All rights reserved. -ShortDescription: Nightly build for developers -Description: Get on the bleeding edge of the web with Chrome Canary designed for experienced developers and updated nightly. -Moniker: chrome-canary +ShortDescription: Google Chrome for developers +Description: Google Chrome for developers was built for the open web. Test cutting-edge web platform APIs and developer tools that are updated weekly. Tags: - browser - chromium diff --git a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.nb-NO.yaml b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.nb-NO.yaml similarity index 58% rename from manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.nb-NO.yaml rename to manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.nb-NO.yaml index 49b96a5c33ed0..02d77035b5405 100644 --- a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.nb-NO.yaml +++ b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.nb-NO.yaml @@ -1,21 +1,21 @@ # Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json -PackageIdentifier: Google.Chrome.Canary -PackageVersion: 140.0.7274.0 +PackageIdentifier: Google.Chrome.Dev.EXE +PackageVersion: 140.0.7299.0 PackageLocale: nb-NO Publisher: Google LLC PublisherUrl: https://www.google.com/ PublisherSupportUrl: https://support.google.com/?hl=no PrivacyUrl: https://policies.google.com/privacy?hl=no Author: Google LLC -PackageName: Google Chrome Canary -PackageUrl: https://www.google.com/intl/no/chrome/canary +PackageName: Google Chrome Dev (EXE) +PackageUrl: https://www.google.com/intl/no/chrome/dev License: Gratis Programvare LicenseUrl: https://www.google.com/intl/no/chrome/terms Copyright: Copyright 2024 Google LLC. Med enerett. -ShortDescription: Nattlig delversjon for utviklere -Description: Vær med på å gå opp nye stier på nettet med Chrome Canary, som er laget for erfarne utviklere og oppdateres daglig. +ShortDescription: Google Chrome for utviklere +Description: Google Chrome for utviklere er laget for det åpne nettet. Test banebrytende nettplattform-API-er og utviklerverktøy som oppdateres ukentlig. Tags: - chromium - nettleseren diff --git a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.zh-CN.yaml b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.zh-CN.yaml similarity index 59% rename from manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.zh-CN.yaml rename to manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.zh-CN.yaml index e099a913b1a78..9385c43378af8 100644 --- a/manifests/g/Google/Chrome/Canary/140.0.7274.0/Google.Chrome.Canary.locale.zh-CN.yaml +++ b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.locale.zh-CN.yaml @@ -1,21 +1,21 @@ # Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json -PackageIdentifier: Google.Chrome.Canary -PackageVersion: 140.0.7274.0 +PackageIdentifier: Google.Chrome.Dev.EXE +PackageVersion: 140.0.7299.0 PackageLocale: zh-CN Publisher: Google LLC PublisherUrl: https://www.google.com/ PublisherSupportUrl: https://support.google.com/?hl=zh-Hans PrivacyUrl: https://policies.google.com/privacy?hl=zh-CN Author: Google LLC -PackageName: Google Chrome Canary -PackageUrl: https://www.google.com/intl/zh-CN/chrome/canary +PackageName: Google Chrome 开发者版 (EXE) +PackageUrl: https://www.google.com/intl/zh-CN/chrome/dev License: 免费软件 LicenseUrl: https://www.google.com/intl/zh-CN/chrome/terms Copyright: 版权所有 2024 Google LLC. 保留所有权利。 -ShortDescription: 开发者专用的每日构建版 -Description: 安装专为经验丰富的开发者设计且每晚都会更新的 Chrome Canary 版,站在网络科技最前沿。 +ShortDescription: 开发者专用的 Google Chrome +Description: 开发者专用的 Google Chrome 专为开放式网络打造。测试先进的网络平台 API 和每周都会更新的开发者工具。 Tags: - chromium - 互联网 diff --git a/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.yaml b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.yaml new file mode 100644 index 0000000000000..2e58ae361d257 --- /dev/null +++ b/manifests/g/Google/Chrome/Dev/EXE/140.0.7299.0/Google.Chrome.Dev.EXE.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Google.Chrome.Dev.EXE +PackageVersion: 140.0.7299.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.installer.yaml b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.installer.yaml new file mode 100644 index 0000000000000..76a2562aa15a8 --- /dev/null +++ b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.installer.yaml @@ -0,0 +1,24 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Greenshot.Greenshot +PackageVersion: 1.3.292 +InstallerType: inno +UpgradeBehavior: install +FileExtensions: +- greenshot +ProductCode: Greenshot_is1 +ReleaseDate: 2025-07-16 +Installers: +- Architecture: x86 + Scope: user + InstallerUrl: https://github.com/greenshot/greenshot/releases/download/v1.3.292/Greenshot-INSTALLER-1.3.292-RELEASE.exe + InstallerSha256: 724314461C32D199D6AD43A04694602918E9192C78317CDE5AF0CC22EE44217C +- Architecture: x86 + Scope: machine + InstallerUrl: https://github.com/greenshot/greenshot/releases/download/v1.3.292/Greenshot-INSTALLER-1.3.292-RELEASE.exe + InstallerSha256: 724314461C32D199D6AD43A04694602918E9192C78317CDE5AF0CC22EE44217C + InstallerSwitches: + Custom: /ALLUSERS +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.locale.en-US.yaml b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.locale.en-US.yaml new file mode 100644 index 0000000000000..8b192c2fa0969 --- /dev/null +++ b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.locale.en-US.yaml @@ -0,0 +1,40 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Greenshot.Greenshot +PackageVersion: 1.3.292 +PackageLocale: en-US +Publisher: Greenshot +PublisherUrl: https://getgreenshot.org/ +PublisherSupportUrl: https://github.com/greenshot/greenshot/issues +PrivacyUrl: https://getgreenshot.org/privacy-policy/ +Author: Greenshot +PackageName: Greenshot +PackageUrl: https://getgreenshot.org/ +License: GPL-3.0 +LicenseUrl: https://github.com/greenshot/greenshot/blob/HEAD/LICENSE +Copyright: Copyright (C) 2007-2025 Thomas Braun, Jens Klingen, Robin Krom +ShortDescription: A light-weight screenshot software tool for Windows. +Description: |- + Greenshot is a light-weight screenshot software tool for Windows with the following key features: + - Quickly create screenshots of a selected region, window or fullscreen; you can even capture complete (scrolling) web pages from Internet Explorer. + - Easily annotate, highlight or obfuscate parts of the screenshot. + - Export the screenshot in various ways: save to file, send to printer, copy to clipboard, attach to e-mail, send Office programs or upload to photo sites like Flickr or Picasa, and others. + ...and a lot more options simplyfying creation of and work with screenshots every day. + Being easy to understand and configurable, Greenshot is an efficient tool for project managers, software developers, technical writers, testers and anyone else creating screenshots. +Moniker: greenshot +Tags: +- capture +- screenshot +ReleaseNotes: |- + Bugfix Release for Greenshot 1.3 + Fixes issues with elevated (admin) installation, where registry keys ended up in wrong root key, see #546 / #619 . + Full Changelog: https://github.com/greenshot/greenshot/compare/v1.3.291...v1.3.292 +ReleaseNotesUrl: https://github.com/greenshot/greenshot/releases/tag/v1.3.292 +Documentations: +- DocumentLabel: Help + DocumentUrl: https://getgreenshot.org/help/ +- DocumentLabel: FAQ + DocumentUrl: https://getgreenshot.org/faq/ +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.locale.zh-CN.yaml b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.locale.zh-CN.yaml new file mode 100644 index 0000000000000..2517dffc9169b --- /dev/null +++ b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.locale.zh-CN.yaml @@ -0,0 +1,24 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Greenshot.Greenshot +PackageVersion: 1.3.292 +PackageLocale: zh-CN +ShortDescription: 轻量 Windows 截图工具。 +Description: |- + Greenshot 是一款轻量级的 Windows 截图软件,具有以下主要功能: + - 快速创建选定区域、窗口或全屏的截图;甚至可以从 Internet Explorer 中捕获完整的(可滚动)网页。 + - 轻松对截图进行注释、突出显示或模糊处理。 + - 多种截图导出方式:保存为文件、发送至打印机、复制到剪贴板、附加到电子邮件、发送到 Office 程序,或上传到 Flickr、Picasa 等图片网站。 + ……以及更多选项,简化了日常截图的创建和处理。 + Greenshot 易于理解和配置,是项目经理、软件开发人员、技术作者、测试人员以及任何需要创建截图的人的高效工具。 +Tags: +- 截图 +- 捕获 +Documentations: +- DocumentLabel: 帮助 + DocumentUrl: https://getgreenshot.org/help/ +- DocumentLabel: 常见问题 + DocumentUrl: https://getgreenshot.org/faq/ +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.yaml b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.yaml new file mode 100644 index 0000000000000..45214b4e45085 --- /dev/null +++ b/manifests/g/Greenshot/Greenshot/1.3.292/Greenshot.Greenshot.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Greenshot.Greenshot +PackageVersion: 1.3.292 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.installer.yaml b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.installer.yaml index 470428fd8187c..ac787c9d411f6 100644 --- a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.installer.yaml +++ b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.installer.yaml @@ -1,4 +1,4 @@ -# Automatically updated by the winget bot at 2025/Jul/02 +# Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: High-Logic.FontCreator @@ -16,7 +16,7 @@ FileExtensions: - ufo - woff - woff2 -ReleaseDate: 2025-05-29 +ReleaseDate: 2025-06-30 Installers: - Architecture: x86 InstallerUrl: https://www.high-logic.com/FontCreatorSetup.exe diff --git a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.en-US.yaml b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.en-US.yaml index 5f6910fb3f1e6..1a120d302034a 100644 --- a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.en-US.yaml +++ b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.en-US.yaml @@ -1,4 +1,4 @@ -# Automatically updated by the winget bot at 2025/Jul/02 +# Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: High-Logic.FontCreator @@ -18,18 +18,13 @@ ShortDescription: A popular, inspiring, and intuitive font editor built to help Tags: - font ReleaseNotes: |- - - Fixed incorrect glyph reordering during the normalization process - - Fixed an issue with copying and pasting glyphs + - Fixed issue with setting maximum and minimum values for the range of axis values - Improved generation of OpenType layout features - - Improved optimization of contours with cubic curves - - Resolved a rare buffer overflow issue - - Windows only: Fixed an issue when editing guidelines - - Windows only: Added Czech and Japanese localization - - macOS only: Added Guidelines Settings - - macOS only: Fixed an issue where some font export options were ignored - - macOS only: Enabled deleting selected glyphs using the backspace key - - macOS only: Disable Auto Attach did keep it attached - - macOS only: Fixed an issue where the last change in Glyph Transformer wasn't always applied + - Improved localization + - Changed trial period — now 7 days instead of 30 + - macOS only: Added View Guidelines and Lock Guidelines settings + - macOS only: Improved Add Anchor dialog + - Minor other improvements ReleaseNotesUrl: https://www.high-logic.com/font-editor/fontcreator/changelog PurchaseUrl: https://www.high-logic.com/buy-now/new-licenses ManifestType: defaultLocale diff --git a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.zh-CN.yaml b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.zh-CN.yaml index 29beed0b69ab3..9a17fe13abeb1 100644 --- a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.zh-CN.yaml +++ b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.locale.zh-CN.yaml @@ -1,4 +1,4 @@ -# Automatically updated by the winget bot at 2025/Jul/02 +# Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: High-Logic.FontCreator diff --git a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.yaml b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.yaml index b9c2ba7db2e1d..4842637f04fbe 100644 --- a/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.yaml +++ b/manifests/h/High-Logic/FontCreator/15.0.0.3024/High-Logic.FontCreator.yaml @@ -1,4 +1,4 @@ -# Automatically updated by the winget bot at 2025/Jul/02 +# Created with YamlCreate.ps1 Dumplings Mod # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: High-Logic.FontCreator diff --git a/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.installer.yaml b/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.installer.yaml new file mode 100644 index 0000000000000..1fc9eb5a5ae74 --- /dev/null +++ b/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.installer.yaml @@ -0,0 +1,29 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: HydrusNetwork.HydrusNetwork +PackageVersion: v630 +InstallerLocale: en-US +Platform: +- Windows.Desktop +MinimumOSVersion: 10.0.0.0 +InstallerType: inno +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +UpgradeBehavior: install +ProductCode: Hydrus Network_is1 +ReleaseDate: 2025-07-16 +AppsAndFeaturesEntries: +- ProductCode: Hydrus Network_is1 +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%SystemDrive%\Hydrus Network' +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/hydrusnetwork/hydrus/releases/download/v630/Hydrus.Network.630.-.Windows.-.Installer.exe + InstallerSha256: FF9953E97621995DC33B11D70B4172C6A3A47B738CFC537330C841F739544FEB +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.locale.en-US.yaml b/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.locale.en-US.yaml new file mode 100644 index 0000000000000..670d3b9a8cbc0 --- /dev/null +++ b/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.locale.en-US.yaml @@ -0,0 +1,75 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: HydrusNetwork.HydrusNetwork +PackageVersion: v630 +PackageLocale: en-US +Publisher: Hydrus Network +PublisherUrl: https://github.com/hydrusnetwork/hydrus +PublisherSupportUrl: https://github.com/hydrusnetwork/hydrus/issues +PrivacyUrl: https://hydrusnetwork.github.io/hydrus/privacy.html +Author: Hydrus Network +PackageName: Hydrus Network +PackageUrl: https://github.com/hydrusnetwork/hydrus +License: WTFPL +LicenseUrl: https://github.com/hydrusnetwork/hydrus/blob/HEAD/license.txt +Copyright: Copyright (C) 2011 Hydrus Developer +CopyrightUrl: https://github.com/hydrusnetwork/hydrus/blob/master/license.txt +ShortDescription: A personal booru-style media tagger that can import files and tags from your hard drive and popular websites. Content can be shared with other users via user-run servers. +Description: |- + The hydrus network client is an application written for Anon and other internet-fluent media nerds who have large image/swf/webm collections. + It browses with tags instead of folders, a little like a booru on your desktop. Advanced users can share tags and files anonymously through custom servers that any user may run. + Everything is free and privacy is the first concern. Executable releases are available for Windows, Linux, and macOS. + The program is in python, so you can also run it straight from the source code. +Moniker: hydrus-network +Tags: +- booru +- cross-platform +- image-database +ReleaseNotes: |- + Linux laggy mpv issue + - I've been chasing down a Linux specific problem recently where mpv would lag out for a second when trying to transition media when it was near to the end of the media. it seemed to be some re-loop buffering issue but I couldn't figure it out. the recent failed 'TEST: stop mpv before transition' was a shot at this + - I figured out that it was caused by the audio normalisation pass triggered by the af=lavfi=[loudnorm=I=-16:TP=-3:LRA=4] line in the default mpv.conf. audio stuff like this has caused Linux other problems before. it is now commented out for all new users + - If you are a Linux user, please go to your db dir and check your mpv.conf. edit that line out if it exists. + - I am going to play with af=dynaudnorm, which is supposedly far less CPU intensive. feel free to try your own things too and let me know what works, and we'll figure out better defaults! + misc + - if you have wanted to map shift+tab to a shortcut and it hasn't worked, please try it again! hydrus now recognises 'backtab', which it seems some/many situations produce on a shift+tab input. it'll likely say 'shift+backtab', but whatever--it'll catch something stable now + - fixed some weird logic with the 're-focus original search page' and 'tell original search page to select exit media' options that trigger on media viewer close under options->media viewer->window. they now work independently + - when you upload tag data to a tag repository, the prepare routine now checks that the tags are valid (no crazy/broken characters, etc..). if not, it abandons the job and tells you how to fix invalid tags + - fixed some mouse autohide behaviour in the media viewer when various dialogs are open. child windows are detected more reliably and various 'I should unhide now' events fire properly + - added a note to options->media playback about the mpv.conf in the db dir--this basically wasn't documented anywhere, previously--adding that this file is reloaded on every options dialog ok + - I confidently attempted to rework the 'add folder' button in the 'import files' window to be an 'add folders' button, allowing directory multi-select, and I was stunned to discover this is simply not doable in a multiplat way using stock path-picker dialogs. I feel like I am going crazy and will revisit this + - wrote a guide and to-do list for migrating from one OS to another under https://hydrusnetwork.github.io/hydrus/database_migration.html#to_new_OS + default downloaders + - thanks to a user, the pixiv downloader now fetches a 'series' and 'chapter' tag for those paged manga works that have that data set. I wonder if the 'series' here is more akin to what we'd call 'title', but I'm not familiar enough with pixiv to know what is more common, so let me know how it shakes out IRL + more export filename rules + - if you are on non-Windows but an export directory filesystem is "ntfs", "exfat", "vfat", "msdos", "fat", "fat32", "cifs" (almost always ntfs underlying), "smbfs", "fuseblk" or any of those but prepended with "fuse.", ntfs naming rules (no colons, shorter filename limits etc...) are now applied (was formerly just "ntfs" or "exfat") + - a checkbox under options->exporting now allows you to always apply ntfs naming rules. use if you have an NFS share that is NTFS underlying, or you are subdir-translating from an export dir that is non-ntfs to a mountpoint that is + - when an export filename pattern includes subdirectory generation, the subdirs' max length is now determined by the max path characters allowed for this system and the pre-existing prefix directory length, while leaving a reasonable numbers of characters for the actual filename. they'll squeeze down to fit all normal situations (previously windows subdirs were hacked to a 64 char limit) + - filenames and dirnames are now sanitised as they are elided. everything is done through one clean combined call, so there are fewer chances for surprises here + - some eliding and sanitising rules are more failsafe in edge cases. instead of raising an exception, you'll get 'empty' or 'truncated' + - two new optional integer values are added to options->exporting, for overriding max path length and clipping max dirname length. check the tooltips for more info, but this is basically to test ntfs-extended modes that have their own limits. caveat emptor + - I updated the unit tests here to cover the changes + duplicates + - the manual duplicate filter's pair fetch routine has been rewritten using the new low-latency fast-cancel tech I developed for auto-resolution. it should be able to fetch pairs to work on a good bit faster in all cases, and the worst case for difficult searches is much better. when it is loading new pairs, you get a running status update on the background of the filter media viewer + - the pairs it loads follow a smarter decision logic, showing you more from the same group while saving you more time + - the pairs are now sorted, hopefully with bigger files first, and the same file over and over. let me know what you think of it! I'll be adding options here, but it is tricky! + - when the duplicate filter commits work, it now does so more asynchronously. if working a mid-filter commit, the UI no longer locks and the background now updates with status text showing progress of the commit; if happening when you close out the filter, it now happens in the background but will make a popup with status if it takes longer than a second to complete. the timing of the 'refresh dupe numbers' call that hits the sidebar is better aligned to refresh once all this work is flushed + - the default duplicate filter batch size is reduced from 250 to 100 + - auto-resolution rules that have pending approve/deny items now say their status is 'queued' (previously 'done'). maybe 'ready' or another word is better--let me know if you can think of one. 'awaiting approval' feels too long + duplicate filter boring/advanced stuff + - the manual duplicate filter's pair fetch database routine no longer does any shaping of the pair queue. it previously tried to auto-filter certain pairs that would be implicated by previous decisions and tried to first give you pairs with certain properties, but the implementation was never too clean and it was often simply confusing on the front end. the UI level now takes full responsibility for this + - the manual duplicate filter is more careful about which pairs it will auto-skip, and in many cases this will let you process an entire group--alternates and all--in one run, rather than that situation where you get lots of bitty '1/2', '1/1' micro-batches at the end of a particular search. now, rather than insisting that every batch commit only include pairs of unique files, it now tracks which files are mergees by the current batch decisions and auto-skips those. so, it might present to you (A, B), and if you say A is a better duplicate than B (causing B to be merged into A), it can still present you with (A, C), but if (B, D) or (E, B) is pending, you still won't see them (since B is no longer a king, and the proper pair, which will be recalculated after the commit, is (A, D) or (A, E). in reality though, (A, D) and (A, E) are probably already in the queue due to transitive similarity, so if we can sort them together, we'll probably clear everything in one batch) + - I played around with different types of pair sort for the manual filter. this gets complicated in a couple of ways and what I thought would be useful often had a clear downside in my test data. for now, duplicate filter pairs will explicitly come by largest max filesize first, with largest min filesize as secondary sort. you'll see a lot more of the same big file matched up against other files, in descending order, and fewer low quality files matched against other low quality. let me know how it goes with IRL data, and I will add explicit options here so we can test more stuff. I tried a 'show me the most/least similar first' approach, but what that actually means beyond sorting by the discovered search distance is unclear--I can try for ~1.0 pair filesize ratio, but this seems to flood me with alternates first, which is not ideal for decision logic. if we want clear duplicates first, maybe we want to have the highest file ratio first? this max filesize first seems like a 'least worst' for now at least + - I am planning a checkbox that will let you focus on entire potential groups one at a time (seeing the same basic files over and over until there are no potentials that 'look like that' any more), which may itself benefit from an exact sort + - there's a third sort question about whether you want the same reliable order of pairs on every launch, continuing where you left off, or if you want to jump about a bit. today's low-latency fetch tech will fetch the same stuff over and over unless the numbers get big and/or refreshed. this question will be more important when I do the grouping, so I think this'll be another checkbox + - I updated the Client API help to talk about kings and /manage_file_relationships/get_potential_pairs given the modern tech that has been rolling out this year and this week. all my duplicates stuff now always returns kings, so you don't have to bother about that so much any more, and the filter now presents you with a raw batch that is simpler and cleaner but you may want to institute your own auto-skip tests as I have. it isn't a big deal, and you may already have something similar, but I've figured out, I think, simple and optimal rules, so please check it out yourself + - I wrote a class to handle the 'potential duplicate pairs and their distances' list that is thrown around in all the new dupe fetch code, both up and down the pipeline and in the fragmentary fetch slices. this class now handles the iterating, randomising, block popping, distance sorting, and now potential-group-mapping-and-filtering jobs internally and in one location + other boring stuff +ReleaseNotesUrl: https://github.com/hydrusnetwork/hydrus/releases/tag/v630 +PurchaseUrl: https://hydrusnetwork.github.io/hydrus/support.html +Documentations: +- DocumentLabel: FAQ + DocumentUrl: https://hydrusnetwork.github.io/hydrus/faq.html +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.yaml b/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.yaml new file mode 100644 index 0000000000000..33f0113162f77 --- /dev/null +++ b/manifests/h/HydrusNetwork/HydrusNetwork/v630/HydrusNetwork.HydrusNetwork.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: HydrusNetwork.HydrusNetwork +PackageVersion: v630 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/i/infisical/infisical/0.41.94/infisical.infisical.installer.yaml b/manifests/i/infisical/infisical/0.41.94/infisical.infisical.installer.yaml new file mode 100644 index 0000000000000..ee875ebceff35 --- /dev/null +++ b/manifests/i/infisical/infisical/0.41.94/infisical.infisical.installer.yaml @@ -0,0 +1,26 @@ +# This file was generated by GoReleaser. DO NOT EDIT. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json +PackageIdentifier: infisical.infisical +PackageVersion: 0.41.94 +InstallerLocale: en-US +InstallerType: zip +ReleaseDate: "2025-07-17" +Installers: + - Architecture: arm64 + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: infisical.exe + PortableCommandAlias: infisical + InstallerUrl: https://github.com/Infisical/cli/releases/download/v0.41.94/cli_0.41.94_windows_arm64.zip + InstallerSha256: f406e60480ae9f395bfe4f36a61dd059414681fae51b4440fc0baecc42ec987e + UpgradeBehavior: uninstallPrevious + - Architecture: x64 + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: infisical.exe + PortableCommandAlias: infisical + InstallerUrl: https://github.com/Infisical/cli/releases/download/v0.41.94/cli_0.41.94_windows_amd64.zip + InstallerSha256: 37dafbb8b9783adaae67f003a53e93662cfc8ad22f534b8329bd58cda0167188 + UpgradeBehavior: uninstallPrevious +ManifestType: installer +ManifestVersion: 1.6.0 diff --git a/manifests/i/infisical/infisical/0.41.94/infisical.infisical.locale.en-US.yaml b/manifests/i/infisical/infisical/0.41.94/infisical.infisical.locale.en-US.yaml new file mode 100644 index 0000000000000..81ac22b451611 --- /dev/null +++ b/manifests/i/infisical/infisical/0.41.94/infisical.infisical.locale.en-US.yaml @@ -0,0 +1,13 @@ +# This file was generated by GoReleaser. DO NOT EDIT. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json +PackageIdentifier: infisical.infisical +PackageVersion: 0.41.94 +PackageLocale: en-US +Publisher: infisical +PackageName: infisical +PackageUrl: https://infisical.com +License: MIT +ShortDescription: The official Infisical CLI +Moniker: infisical +ManifestType: defaultLocale +ManifestVersion: 1.6.0 diff --git a/manifests/i/infisical/infisical/0.41.94/infisical.infisical.yaml b/manifests/i/infisical/infisical/0.41.94/infisical.infisical.yaml new file mode 100644 index 0000000000000..f9a1a903335d1 --- /dev/null +++ b/manifests/i/infisical/infisical/0.41.94/infisical.infisical.yaml @@ -0,0 +1,7 @@ +# This file was generated by GoReleaser. DO NOT EDIT. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json +PackageIdentifier: infisical.infisical +PackageVersion: 0.41.94 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.6.0 diff --git a/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.installer.yaml b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.installer.yaml new file mode 100644 index 0000000000000..fc2bbfa00167e --- /dev/null +++ b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.installer.yaml @@ -0,0 +1,38 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: JetBrains.WebStorm.EAP +PackageVersion: 252.23892.218 +InstallerType: nullsoft +InstallerSwitches: + Log: /LOG="" +UpgradeBehavior: uninstallPrevious +FileExtensions: +- css +- html +- ipr +- js +- json +ProductCode: WebStorm 252.23892.218 +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://download.jetbrains.com/webstorm/WebStorm-252.23892.218.exe + InstallerSha256: 297C238574D26B17D0B4E370A76AC2ABF980CF8BDD417B746F7B480952C19379 +- Architecture: x64 + Scope: machine + InstallerUrl: https://download.jetbrains.com/webstorm/WebStorm-252.23892.218.exe + InstallerSha256: 297C238574D26B17D0B4E370A76AC2ABF980CF8BDD417B746F7B480952C19379 + ElevationRequirement: elevationRequired +- Architecture: arm64 + Scope: user + InstallerUrl: https://download.jetbrains.com/webstorm/WebStorm-252.23892.218-aarch64.exe + InstallerSha256: 5EF2E27E390716ED85AB6C4A4FF7C741C1E7CD0376261811D00F4C3EDE929394 +- Architecture: arm64 + Scope: machine + InstallerUrl: https://download.jetbrains.com/webstorm/WebStorm-252.23892.218-aarch64.exe + InstallerSha256: 5EF2E27E390716ED85AB6C4A4FF7C741C1E7CD0376261811D00F4C3EDE929394 + ElevationRequirement: elevationRequired +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.locale.en-US.yaml b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.locale.en-US.yaml new file mode 100644 index 0000000000000..f216c946a5bd3 --- /dev/null +++ b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.locale.en-US.yaml @@ -0,0 +1,67 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: JetBrains.WebStorm.EAP +PackageVersion: 252.23892.218 +PackageLocale: en-US +Publisher: JetBrains s.r.o. +PublisherUrl: https://www.jetbrains.com/ +PublisherSupportUrl: https://www.jetbrains.com/support/ +PrivacyUrl: https://www.jetbrains.com/legal/docs/privacy/privacy/ +Author: JetBrains s.r.o. +PackageName: WebStorm (EAP) +PackageUrl: https://www.jetbrains.com/webstorm/nextversion/ +License: Freeware +LicenseUrl: https://www.jetbrains.com/legal/docs/toolbox/user_eap/ +Copyright: Copyright © 2000-2024 JetBrains s.r.o. +ShortDescription: The smartest JavaScript IDE +Description: WebStorm is an integrated development environment for JavaScript and related technologies. Like other JetBrains IDEs, it makes your development experience more enjoyable, automating routine work and helping you handle complex tasks with ease. +Tags: +- code +- coding +- css +- develop +- development +- htm +- html +- ide +- javascript +- js +- programming +- webpage +ReleaseNotes: |- + What's fixed: + - We've reworked statistics gathering for Find in Files (IJPL-184307). + - Information about non-indexable files is now added to FUS collectors (IJPL-189511). + - We've replaced Find Error with AI Self Review in the Git Log context menu on commit (IJPL-192892). + - We've introduced a new gutter icon for GRPC requests (IJPL -179302). + - We've restored the Undo action in the two-side Diff Editor ( IJPL-191994). + - We've fixed the problem with detecting external changes while the focus remains in the Reworked Terminal (IJPL-190135). + - We've restored the Reformat Code action in the Project tool window and in the Commit Changes view (IJPL-192081). + - We've fixed a text direction problem in the SQL Query Console (IJPL-164636). + - We've fixed the View Commits link in the Update project notification popup, so the Git tool window opens on the first link invocation (IJPL-193590). + - We've fixed the Recent Files switcher, so it no longer shows random untouched files (IJPL-188466). + - We've fixed a problem with building Docker Compose images with the Rancher Desktop (IJPL-193821). + - We've improved the PluginSync functionality to prevent timeouts (IJPL-194930). + - We've fixed creation of files from custom file templates with variables (IJPL-193992). + - We've fixed the appearance of the Terminal, so it no longer shows black background on Windows 10 (IJPL-194863). + - We've fixed the Docker push to a Docker Hub on Windows (IJPL-181423). + - We've resolved performance issues that occurred when using the One Island theme (IJPL-190913). + - We've fixed a java.nio.file.InvalidPathException exception that was thrown on clicking a link in a Markdown preview (IJPL-189291). + - The IDE launcher for 2025.2 now works on Amazon Linux 2 (IJPL-194282). + - We've fixed a problem with connecting to a Code With Me session via TURN (IJPL-193617). + - We've fixed a bunch of problems with diagrams in the Remote Development mode (IJPL-194306, IJPL-194918). + - We've improved the Diff and Merge functionality in the Remote Development mode (IJPL-194295, IJPL-194781). + - We've fixed opening, reopening, and splitting external files in the Remote Development mode (IJPL-195212, IJPL-195209). + - We've addressed IDE freezes in the Remote Development mode (IJPL-168917, IJPL-194248). + - We've addressed various issues that occurred in the Remote Development mode (IJPL-194345, IJPL-195486, IJPL-192040, IJPL-194935, IJPL-195354, IJPL-194935, IJPL-193807, IJPL-193791). + - We've addressed problems with connection and reconnection in the Remote Development mode (IJPL-187055, IJPL-192700, IJPL-191996, IJPL-191561). + - We've fixed a set of editor-related issues in the Remote Development mode ( IJPL-192753, IJPL-194331, IJPL-194707, IJPL-193301, IJPL-194354, IJPL-192929, IJPL-192753, IJPL-193709, IJPL-194924, IJPL-192225, IJPL-191489, IJPL-186012). + - We've enhanced the plugin management functionality introducing a bunch of improvements (IJPL-192427, IJPL-195567, IJPL-194959, IJPL-192427, IJPL-193253, IJPL-193984). + For more details, please see the release notes. +ReleaseNotesUrl: https://youtrack.jetbrains.com/articles/WEB-A-233538628/WebStorm-2025.2-Beta-252.23892.218-build-Release-Notes +Documentations: +- DocumentLabel: Learn WebStorm + DocumentUrl: https://www.jetbrains.com/webstorm/learn/ +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.locale.zh-CN.yaml b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.locale.zh-CN.yaml new file mode 100644 index 0000000000000..43580956fa40b --- /dev/null +++ b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.locale.zh-CN.yaml @@ -0,0 +1,30 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: JetBrains.WebStorm.EAP +PackageVersion: 252.23892.218 +PackageLocale: zh-CN +PublisherUrl: https://www.jetbrains.com/zh-cn/ +PublisherSupportUrl: https://www.jetbrains.com/zh-cn/support/ +PackageName: WebStorm(抢先体验计划) +PackageUrl: https://www.jetbrains.com/zh-cn/webstorm/nextversion/ +License: 免费软件 +ShortDescription: 最智能的 JavaScript IDE +Description: WebStorm 是一个适用于 JavaScript 和相关技术的集成开发环境。类似于其他 JetBrains IDE,它也会使您的开发体验更有趣,自动执行常规工作并帮助您轻松处理复杂任务。 +Tags: +- css +- htm +- html +- javascript +- js +- 代码 +- 开发 +- 编程 +- 网页 +- 集成开发环境 +ReleaseNotesUrl: https://youtrack.jetbrains.com/articles/WEB-A-233538628/WebStorm-2025.2-Beta-252.23892.218-build-Release-Notes +Documentations: +- DocumentLabel: 学习 WebStorm + DocumentUrl: https://www.jetbrains.com/zh-cn/webstorm/learn/ +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.yaml b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.yaml new file mode 100644 index 0000000000000..c662d8d5ca9ce --- /dev/null +++ b/manifests/j/JetBrains/WebStorm/EAP/252.23892.218/JetBrains.WebStorm.EAP.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: JetBrains.WebStorm.EAP +PackageVersion: 252.23892.218 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.installer.yaml b/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.installer.yaml new file mode 100644 index 0000000000000..0da8ad7cbda5a --- /dev/null +++ b/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.installer.yaml @@ -0,0 +1,20 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: KnifMelti.WAU-Settings-GUI +PackageVersion: 1.8.0.1 +InstallModes: +- silent +InstallerType: zip +NestedInstallerType: portable +NestedInstallerFiles: +- RelativeFilePath: WAU-Settings-GUI.exe + PortableCommandAlias: WAU-Settings-GUI +ArchiveBinariesDependOnPath: true +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/KnifMelti/WAU-Settings-GUI/releases/download/v1.8.0.1/WAU-Settings-GUI-v1.8.0.1.zip + InstallerSha256: 3f97351af7ee002b8d4f23b24a04d6c71f06b1c593bc45e0508341cc277d2550 + ElevationRequirement: elevatesSelf +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.locale.en-US.yaml b/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.locale.en-US.yaml new file mode 100644 index 0000000000000..2c6b0c322b85e --- /dev/null +++ b/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.locale.en-US.yaml @@ -0,0 +1,33 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: KnifMelti.WAU-Settings-GUI +PackageVersion: 1.8.0.1 +PackageLocale: en-US +Publisher: KnifMelti +PublisherUrl: https://github.com/KnifMelti +PublisherSupportUrl: https://github.com/KnifMelti/WAU-Settings-GUI/issues +Author: KnifMelti +PackageName: WAU Settings GUI +PackageUrl: https://github.com/KnifMelti/WAU-Settings-GUI +License: MIT License +LicenseUrl: https://github.com/KnifMelti/WAU-Settings-GUI/blob/main/LICENSE +Copyright: Copyright (c) 2025 KnifMelti +ShortDescription: Provides a user-friendly portable standalone interface to modify every aspect of Winget-AutoUpdate (WAU) settings +Description: > + Significantly enhance WAU's usability for home admin users while maintaining enterprise-grade functionality. + Benefits from not having to manage the settings in several places when testing etc. (great for developers)... + ...a perfect companion for those supporting the community (if the community actually uses it!) - being able to ask for a + screenshot of the settings because it comes with all included (even a screenshot function masking potentially sensitive data)! +Moniker: wau-settings +Tags: +- wau +- winget-autoupdate +- gui +ReleaseNotesUrl: https://github.com/KnifMelti/WAU-Settings-GUI/releases/tag/v1.8.0.1 +InstallationNotes: | + Admin required to run (exe and shortcuts have the flag set). + The program is portable, so it can be run from any location or installed to a location of your choice. +ManifestType: defaultLocale +ManifestVersion: 1.10.0 + diff --git a/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.yaml b/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.yaml new file mode 100644 index 0000000000000..284e64bd1fdd0 --- /dev/null +++ b/manifests/k/KnifMelti/WAU-Settings-GUI/1.8.0.1/KnifMelti.WAU-Settings-GUI.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: KnifMelti.WAU-Settings-GUI +PackageVersion: 1.8.0.1 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.installer.yaml b/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.installer.yaml index 25cc343abd6aa..a050867bd95cf 100644 --- a/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.installer.yaml +++ b/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.installer.yaml @@ -3,16 +3,12 @@ PackageIdentifier: KuaiFan.DooTask PackageVersion: 1.1.8 -InstallerLocale: en-US InstallerType: nullsoft InstallerSwitches: Upgrade: --updated UpgradeBehavior: install ProductCode: 9a445616-2838-509d-bd29-65c401183c4f ReleaseDate: 2025-07-17 -AppsAndFeaturesEntries: -- DisplayName: DooTask 1.1.8 - ProductCode: 9a445616-2838-509d-bd29-65c401183c4f Installers: - Architecture: x64 Scope: user diff --git a/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.en-US.yaml b/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.en-US.yaml index 76b4f2968d831..ff2c2ccc17201 100644 --- a/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.en-US.yaml +++ b/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.en-US.yaml @@ -4,16 +4,9 @@ PackageIdentifier: KuaiFan.DooTask PackageVersion: 1.1.8 PackageLocale: en-US -Publisher: KuaiFan -PublisherUrl: https://hitosea.com/ PublisherSupportUrl: https://www.dootask.com/site/en/help.html PrivacyUrl: https://www.dootask.com/site/en/privacy.html Author: Guangxi Dolphin Youhai Information Technology Co., Ltd. -PackageName: DooTask -PackageUrl: https://www.dootask.com/ -License: AGPL-3.0 -LicenseUrl: https://github.com/kuaifan/dootask/blob/HEAD/LICENSE -Copyright: Copyright © 2024 KuaiFan ShortDescription: Lightweight task management tool Description: Lightweight open source online project task management tool to help teams efficiently advance their projects and make work easier. Tags: diff --git a/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.zh-CN.yaml b/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.zh-CN.yaml index bd123cb6783af..747db1cee0afe 100644 --- a/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.zh-CN.yaml +++ b/manifests/k/KuaiFan/DooTask/1.1.8/KuaiFan.DooTask.locale.zh-CN.yaml @@ -13,7 +13,7 @@ PackageName: DooTask PackageUrl: https://www.dootask.com/ License: AGPL-3.0 LicenseUrl: https://github.com/kuaifan/dootask/blob/HEAD/LICENSE -Copyright: Copyright © 2024 KuaiFan +Copyright: Copyright © 2025 KuaiFan ShortDescription: 轻量级任务管理工具 Description: DooTask 是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时 IM,文件管理等工具。助力团队高效推进项目,让工作更简单。 Tags: @@ -34,11 +34,10 @@ Tags: - 笔记 - 议程 ReleaseNotes: |- - Changelog Bug Fixes - 修复机器人发送消息接口 - 修复应用无法在窗口独立显示 -ReleaseNotesUrl: https://github.com/kuaifan/dootask/releases/tag/v1.1.8 +ReleaseNotesUrl: https://github.com/kuaifan/dootask/blob/HEAD/CHANGELOG.md#118 PurchaseUrl: https://www.dootask.com/site/zh/price.html ManifestType: defaultLocale ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.installer.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.installer.yaml new file mode 100644 index 0000000000000..d0c1085469c73 --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.installer.yaml @@ -0,0 +1,50 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.0 +InstallerType: nullsoft +InstallerSwitches: + Upgrade: --updated +UpgradeBehavior: install +ProductCode: 41a4ccd8-bcc0-5710-9eee-0e164da68057 +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.0/Cherry-Studio-1.5.0-x64-setup.exe + InstallerSha256: 62C6CE1BD70877830A1400F08E6B2FC95ED812917D625DD5D44685CB2EAA2DE0 + InstallerSwitches: + Custom: /currentuser + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +- Architecture: x64 + Scope: machine + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.0/Cherry-Studio-1.5.0-x64-setup.exe + InstallerSha256: 62C6CE1BD70877830A1400F08E6B2FC95ED812917D625DD5D44685CB2EAA2DE0 + InstallerSwitches: + Custom: /allusers + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +- Architecture: arm64 + Scope: user + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.0/Cherry-Studio-1.5.0-arm64-setup.exe + InstallerSha256: 8A1D10C3B21119AE75D3521CE4275616BDA0E7CECC078DB9239182C9F96F4E15 + InstallerSwitches: + Custom: /currentuser + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.arm64 +- Architecture: arm64 + Scope: machine + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.0/Cherry-Studio-1.5.0-arm64-setup.exe + InstallerSha256: 8A1D10C3B21119AE75D3521CE4275616BDA0E7CECC078DB9239182C9F96F4E15 + InstallerSwitches: + Custom: /allusers + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.arm64 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.locale.en-US.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.locale.en-US.yaml new file mode 100644 index 0000000000000..6893ed91afdb2 --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.locale.en-US.yaml @@ -0,0 +1,90 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.0 +PackageLocale: en-US +Publisher: support@cherry-ai.com +PublisherUrl: https://cherry-ai.com/ +PublisherSupportUrl: https://github.com/CherryHQ/cherry-studio/issues +PackageName: Cherry Studio +PackageUrl: https://cherry-ai.com/ +License: Apache-2.0 +LicenseUrl: https://github.com/CherryHQ/cherry-studio/blob/HEAD/LICENSE +ShortDescription: A desktop client that supports for multiple LLM providers +Tags: +- ai +- chatbot +- chatgpt +- claude +- deepseek +- doubao +- gemini +- kimi +- large-language-model +- llama +- llm +- mistral +- ollama +- qwen +- rag +ReleaseNotes: |- + What's Changed + - fix: fix ppio oauth links by @cnJasonZ in https://github.com/CherryHQ/cherry-studio/pull/8073 + - ✨ feat: add MCP server version display with badges by @vaayne in https://github.com/CherryHQ/cherry-studio/pull/8097 + - fix(install): update return codes for bun and uv installation scripts by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8039 + - fix: 修复从未打开过的话题导出 markdown 为空的问题 by @luoxu1314 in https://github.com/CherryHQ/cherry-studio/pull/8103 + - fix: [Linux] support Linux Wayland global shortcuts by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8080 + - fix: replace Select component with custom Selector in LocalBackupSetting by @beyondkmp in https://github.com/CherryHQ/cherry-studio/pull/8055 + - fix(Knowledge): pass searchResultCount to embed-js by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8118 + - chore(gitignore): exclude more AI editor settings by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8102 + - feat: improve translate history style by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/8060 + - Feature/dmxapi painting add model by @jin-wang-c in https://github.com/CherryHQ/cherry-studio/pull/7851 + - fix: table resizing in mcp tool setting by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8057 + - feat: thinking effect by @teojs in https://github.com/CherryHQ/cherry-studio/pull/8081 + - feat: enhance Anthropic and OpenAI API clients with incremental output support by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8104 + - fix: cannot paste images when mentioned visual models by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/7817 + - fix: set source language when checking history item by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/8130 + - fix(OpenAIApiClient): refine grok4 check for OpenRouter by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8074 + - perf: prevent unnecessary topic rerendering by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8116 + - Fix/ppio links by @cnJasonZ in https://github.com/CherryHQ/cherry-studio/pull/8131 + - feat(constant): add .fxml file extension by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/8125 + - fix: serif font in markdown title styles by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8129 + - Fix: message tool button cannot click on grid mode by @EastlingWoo in https://github.com/CherryHQ/cherry-studio/pull/8123 + - fix: enhance OpenAIResponseAPIClient for Azure API version by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8108 + - refactor(ThinkingEffect): Enhance thinking effect by @teojs in https://github.com/CherryHQ/cherry-studio/pull/8147 + - Fix/7973 by @koujialong in https://github.com/CherryHQ/cherry-studio/pull/8059 + - test: add unit tests for getPotentialIndex and input utils by @farion1231 in https://github.com/CherryHQ/cherry-studio/pull/7947 + - [1.5.0-rc] feat(MCP): Add DXT format support for MCP server installation by @vaayne in https://github.com/CherryHQ/cherry-studio/pull/7618 + - fix(openai): add compatibility mode for handling tool call responses by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/7983 + - chore(OpenAIApiClient): fallback to message when delta.content is emp… by @luoxu1314 in https://github.com/CherryHQ/cherry-studio/pull/8101 + - Feat: url context for Gemini models by @ous50 in https://github.com/CherryHQ/cherry-studio/pull/7931 + - fix(OpenAIResponseAPIClient):ensure openai-response providers always use Response API by @luoxu1314 in https://github.com/CherryHQ/cherry-studio/pull/8145 + - fix: global shortcut keys by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8084 + - chore: update .gitignore to include .claude-code-router directory by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8156 + - fix: openai api client by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8154 + - [1.5.0-rc] Feat/memory by @vaayne in https://github.com/CherryHQ/cherry-studio/pull/7689 + - fix(AihubmixAPIClient): enhance ID validation logic to exclude 'embed… by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8157 + - test: add integration test for message thunk and fix some bugs by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8148 + - fix(WindowService): miniWindow should show in current screen by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8132 + - fix: add channel property to notifications for backup and assistant messages by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/8120 + - feat: optimize minapp cache with LRU by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/8160 + - feat(MCPService):Add notification handlers and clear cache for MCPService by @luoxu1314 in https://github.com/CherryHQ/cherry-studio/pull/8179 + - fix: add compatibility for webdav servers that do not support streaming by @happyZYM in https://github.com/CherryHQ/cherry-studio/pull/7992 + - hotfix: error on deleting assistant by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8190 + - Fix/mcp bug by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8189 + - refactor: custom mini app loading logic by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/8181 + - Revert "feat: optimize minapp cache with LRU (#8160)" by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8205 + - feat: add support for 302AI provider in MCP settings by @mthezi in https://github.com/CherryHQ/cherry-studio/pull/7755 + - chore: update check-i18n scripts and remove duplicate keys by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8203 + New Contributors + - @luoxu1314 made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/8103 + - @EastlingWoo made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/8123 + - @mthezi made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/7755 + Full Changelog: https://github.com/CherryHQ/cherry-studio/compare/v1.4.11...v1.5.0 +ReleaseNotesUrl: https://github.com/CherryHQ/cherry-studio/releases/tag/v1.5.0 +Documentations: +- DocumentLabel: Docs + DocumentUrl: https://cherry-ai.com/docs/intro +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.locale.zh-CN.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.locale.zh-CN.yaml new file mode 100644 index 0000000000000..bb5f28fd56c0f --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.locale.zh-CN.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.0 +PackageLocale: zh-CN +Publisher: support@cherry-ai.com +PublisherUrl: https://cherry-ai.com/ +PublisherSupportUrl: https://github.com/CherryHQ/cherry-studio/issues +PackageName: Cherry Studio +PackageUrl: https://cherry-ai.com/ +License: Apache-2.0 +LicenseUrl: https://github.com/CherryHQ/cherry-studio/blob/HEAD/LICENSE +ShortDescription: 支持多模型服务的 Windows/macOS GPT 客户端 +Tags: +- ai +- chatgpt +- claude +- deepseek +- gemini +- kimi +- llama +- llm +- mistral +- ollama +- rag +- 人工智能 +- 大语言模型 +- 聊天机器人 +- 豆包 +- 通义千问 +ReleaseNotesUrl: https://github.com/CherryHQ/cherry-studio/releases/tag/v1.5.0 +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://cherry-ai.com/docs/intro +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.yaml new file mode 100644 index 0000000000000..d3a3b172c29fd --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.0/kangfenmao.CherryStudio.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.installer.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.installer.yaml new file mode 100644 index 0000000000000..cca53e1f2e2c0 --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.installer.yaml @@ -0,0 +1,50 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.1 +InstallerType: nullsoft +InstallerSwitches: + Upgrade: --updated +UpgradeBehavior: install +ProductCode: 41a4ccd8-bcc0-5710-9eee-0e164da68057 +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.1/Cherry-Studio-1.5.1-x64-setup.exe + InstallerSha256: 09C0BECBC7C3DEFF578BD0DBF513B676B5A26917D132778E0BE2C37D670FE6FF + InstallerSwitches: + Custom: /currentuser + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +- Architecture: x64 + Scope: machine + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.1/Cherry-Studio-1.5.1-x64-setup.exe + InstallerSha256: 09C0BECBC7C3DEFF578BD0DBF513B676B5A26917D132778E0BE2C37D670FE6FF + InstallerSwitches: + Custom: /allusers + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +- Architecture: arm64 + Scope: user + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.1/Cherry-Studio-1.5.1-arm64-setup.exe + InstallerSha256: 2089092320E861F336E0BE64468C9430FBD715BF6DA70697259D9D64091FD145 + InstallerSwitches: + Custom: /currentuser + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.arm64 +- Architecture: arm64 + Scope: machine + InstallerUrl: https://github.com/CherryHQ/cherry-studio/releases/download/v1.5.1/Cherry-Studio-1.5.1-arm64-setup.exe + InstallerSha256: 2089092320E861F336E0BE64468C9430FBD715BF6DA70697259D9D64091FD145 + InstallerSwitches: + Custom: /allusers + Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.arm64 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.locale.en-US.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.locale.en-US.yaml new file mode 100644 index 0000000000000..785a65fca6458 --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.locale.en-US.yaml @@ -0,0 +1,61 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.1 +PackageLocale: en-US +Publisher: support@cherry-ai.com +PublisherUrl: https://cherry-ai.com/ +PublisherSupportUrl: https://github.com/CherryHQ/cherry-studio/issues +PackageName: Cherry Studio +PackageUrl: https://cherry-ai.com/ +License: Apache-2.0 +LicenseUrl: https://github.com/CherryHQ/cherry-studio/blob/HEAD/LICENSE +ShortDescription: A desktop client that supports for multiple LLM providers +Tags: +- ai +- chatbot +- chatgpt +- claude +- deepseek +- doubao +- gemini +- kimi +- large-language-model +- llama +- llm +- mistral +- ollama +- qwen +- rag +ReleaseNotes: |- + What's Changed + - fix: handle mentions when resending message by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/7819 + - feat: enhance proxy management and configuration by @beyondkmp in https://github.com/CherryHQ/cherry-studio/pull/8164 + - fix: repect multi-model style on model mentioning by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8204 + - chore: update package dependencies and add undici version 6.21.2 by @beyondkmp in https://github.com/CherryHQ/cherry-studio/pull/8215 + - Create SECURITY.md by @superboy-zjc in https://github.com/CherryHQ/cherry-studio/pull/8158 + - refactor(Markdown): disable single-tilde strikethrough by @alephpiece in https://github.com/CherryHQ/cherry-studio/pull/8209 + - feat: implement BlockManager and associated callbacks for message str… by @MyPrototypeWhat in https://github.com/CherryHQ/cherry-studio/pull/8167 + - feat(Knowledge): show dimensions by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/8169 + - chore(deps): bump tar-fs from 2.1.2 to 2.1.3 by @dependabot[bot] in https://github.com/CherryHQ/cherry-studio/pull/8221 + - fix/Thinking by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8222 + - hotfix: enhance assistant topic validation in useActiveTopic hook by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8213 + - fix(SelectionService): actionWindow show in center screen when in multi screen by @0xfullex in https://github.com/CherryHQ/cherry-studio/pull/8133 + - fix: set os attribute correctly to body by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/8225 + - feat: add data parsing functionality in handleProvidersProtocolUrl by @beyondkmp in https://github.com/CherryHQ/cherry-studio/pull/8218 + - refactor(ActionUtils): streamline message processing logic by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8226 + - test: add comprehensive tests for ApiClientFactory by @farion1231 in https://github.com/CherryHQ/cherry-studio/pull/8124 + - fix(OpenAIResponseAPIClient): refine client selection logic for non-chat models by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/8238 + - refactor(ThinkingEffect): optimize thinking effect by @teojs in https://github.com/CherryHQ/cherry-studio/pull/8232 + - refactor(ThinkingEffect): 思考结束时收起思考效果 by @teojs in https://github.com/CherryHQ/cherry-studio/pull/8242 + New Contributors + - @superboy-zjc made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/8158 + - @dependabot[bot] made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/8221 + Full Changelog: https://github.com/CherryHQ/cherry-studio/compare/v1.5.0...v1.5.1 +ReleaseNotesUrl: https://github.com/CherryHQ/cherry-studio/releases/tag/v1.5.1 +Documentations: +- DocumentLabel: Docs + DocumentUrl: https://cherry-ai.com/docs/intro +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.locale.zh-CN.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.locale.zh-CN.yaml new file mode 100644 index 0000000000000..c06b240268fc9 --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.locale.zh-CN.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.1 +PackageLocale: zh-CN +Publisher: support@cherry-ai.com +PublisherUrl: https://cherry-ai.com/ +PublisherSupportUrl: https://github.com/CherryHQ/cherry-studio/issues +PackageName: Cherry Studio +PackageUrl: https://cherry-ai.com/ +License: Apache-2.0 +LicenseUrl: https://github.com/CherryHQ/cherry-studio/blob/HEAD/LICENSE +ShortDescription: 支持多模型服务的 Windows/macOS GPT 客户端 +Tags: +- ai +- chatgpt +- claude +- deepseek +- gemini +- kimi +- llama +- llm +- mistral +- ollama +- rag +- 人工智能 +- 大语言模型 +- 聊天机器人 +- 豆包 +- 通义千问 +ReleaseNotesUrl: https://github.com/CherryHQ/cherry-studio/releases/tag/v1.5.1 +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://cherry-ai.com/docs/intro +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.yaml b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.yaml new file mode 100644 index 0000000000000..1829e66d6625e --- /dev/null +++ b/manifests/k/kangfenmao/CherryStudio/1.5.1/kangfenmao.CherryStudio.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: kangfenmao.CherryStudio +PackageVersion: 1.5.1 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.installer.yaml b/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.installer.yaml new file mode 100644 index 0000000000000..c1c1787cbe0ae --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.installer.yaml @@ -0,0 +1,13 @@ +# Created with YamlCreate.ps1 v2.1.4 $debug=AUSU.7-2-6 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: "2021.2" +MinimumOSVersion: 10.0.0.0 +InstallerType: nullsoft +Installers: +- Architecture: x64 + InstallerUrl: https://cdn.lwks.com/releases/2021.2.1/lightworks_2021.2_r128456_64bit_setup.exe + InstallerSha256: A60C2B10F7F6D8AF48C889DFF6BCE45B610A6343AF284DB87C2F781F636DE331 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.locale.en-US.yaml b/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.locale.en-US.yaml new file mode 100644 index 0000000000000..9d6dc7a623d33 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.locale.en-US.yaml @@ -0,0 +1,29 @@ +# Created with YamlCreate.ps1 v2.1.4 $debug=AUSU.7-2-6 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: "2021.2" +PackageLocale: en-US +Publisher: LWKS +# PublisherUrl: +# PublisherSupportUrl: +# PrivacyUrl: +# Author: +PackageName: Lightworks +# PackageUrl: +License: Freemium +# LicenseUrl: +# Copyright: +# CopyrightUrl: +ShortDescription: A free, professional video editing program. +# Description: +# Moniker: +# Tags: +# Agreements: +# ReleaseNotes: +# ReleaseNotesUrl: +# PurchaseUrl: +# InstallationNotes: +# Documentations: +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.yaml b/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.yaml new file mode 100644 index 0000000000000..cded2243a3038 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2021.2/LWKS.Lightworks.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 v2.1.4 $debug=AUSU.7-2-6 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: "2021.2" +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.installer.yaml b/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.installer.yaml new file mode 100644 index 0000000000000..bd26f07c62d22 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.installer.yaml @@ -0,0 +1,16 @@ +# Created with YamlCreate.ps1 v2.1.5 $debug=QUSU.CRLF.5-1-19041-1682.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: "2021.3" +InstallerLocale: en-US +MinimumOSVersion: 10.0.0.0 +InstallerType: nullsoft +UpgradeBehavior: install +Installers: +- Architecture: x64 + InstallerUrl: https://cdn.lwks.com/releases/2021.3/lightworks_2021.3_r130507_64bit_setup.exe + InstallerSha256: 9F56966FA3F3F15D4BFFABBE1F1794E4EFEEFC21C28F9F9593E693395A8119CC + ProductCode: '{E94DD4E4-7746-472c-AA7B-1242FED0CFC8}' +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.locale.en-US.yaml b/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.locale.en-US.yaml new file mode 100644 index 0000000000000..b432b5ee42113 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.locale.en-US.yaml @@ -0,0 +1,29 @@ +# Created with YamlCreate.ps1 v2.1.5 $debug=QUSU.CRLF.5-1-19041-1682.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: "2021.3" +PackageLocale: en-US +Publisher: LWKS Software Ltd. +PublisherUrl: https://lwks.com/ +PublisherSupportUrl: https://lwks.com/report-a-problem/ +PrivacyUrl: https://lwks.com/privacy-policy/ +# Author: +PackageName: Lightworks +PackageUrl: https://lwks.com/lightworks/ +License: Proprietary +# LicenseUrl: +# Copyright: +# CopyrightUrl: +ShortDescription: Lightworks is a non-linear editing system (NLE) for editing and mastering digital video. +# Description: +Moniker: lightworks +# Tags: +# Agreements: +# ReleaseNotes: +# ReleaseNotesUrl: +# PurchaseUrl: +# InstallationNotes: +# Documentations: +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.yaml b/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.yaml new file mode 100644 index 0000000000000..71208b60f64cc --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2021.3/LWKS.Lightworks.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 v2.1.5 $debug=QUSU.CRLF.5-1-19041-1682.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: "2021.3" +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.installer.yaml b/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.installer.yaml new file mode 100644 index 0000000000000..4acef335cf4d7 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.installer.yaml @@ -0,0 +1,15 @@ +# Created with YamlCreate.ps1 v2.1.2 $debug=NVS2.7-2-5 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2022.2.135077 +InstallerLocale: en-US +MinimumOSVersion: 10.0.0.0 +InstallerType: nullsoft +UpgradeBehavior: install +Installers: +- Architecture: x64 + InstallerUrl: https://cdn.lwks.com/releases/2022.2/lightworks_2022.2_r135077_64bit_setup.exe + InstallerSha256: 9836157C4D5331118680FFFC65E0A512A1E17B7F289FAEA919EC44D16F58B397 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.locale.en-US.yaml b/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.locale.en-US.yaml new file mode 100644 index 0000000000000..099b3a1b73faa --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.locale.en-US.yaml @@ -0,0 +1,17 @@ +# Created with YamlCreate.ps1 v2.1.2 $debug=NVS2.7-2-5 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2022.2.135077 +PackageLocale: en-US +Publisher: LWKS Software Ltd. +PublisherUrl: https://lwks.com/ +PublisherSupportUrl: https://lwks.com/report-a-problem/ +PrivacyUrl: https://lwks.com/privacy-policy/ +PackageName: Lightworks +PackageUrl: https://lwks.com/lightworks/ +License: Proprietary +ShortDescription: Lightworks is a non-linear editing system (NLE) for editing and mastering digital video. +Moniker: lightworks +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.yaml b/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.yaml new file mode 100644 index 0000000000000..0bfb576130ec1 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2022.2.135077/LWKS.Lightworks.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 v2.1.2 $debug=NVS2.7-2-5 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2022.2.135077 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.installer.yaml b/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.installer.yaml new file mode 100644 index 0000000000000..f9ad6a3e365cd --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.installer.yaml @@ -0,0 +1,15 @@ +# Created with YamlCreate.ps1 v2.1.5 $debug=QUSU.CRLF.5-1-19041-1682.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2022.3.136244 +InstallerLocale: en-US +MinimumOSVersion: 10.0.0.0 +InstallerType: nullsoft +UpgradeBehavior: install +Installers: +- Architecture: x64 + InstallerUrl: https://cdn.lwks.com/releases/2022.3/lightworks_2022.3_r136244_64bit_setup.exe + InstallerSha256: D0642F0CCF66A7B5737BEF6F0B53F79D08A2E0E36F94A7BEDD8569B6B93ED7B4 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.locale.en-US.yaml b/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.locale.en-US.yaml new file mode 100644 index 0000000000000..28ee863777048 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.locale.en-US.yaml @@ -0,0 +1,29 @@ +# Created with YamlCreate.ps1 v2.1.5 $debug=QUSU.CRLF.5-1-19041-1682.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2022.3.136244 +PackageLocale: en-US +Publisher: LWKS Software Ltd. +PublisherUrl: https://lwks.com/ +PublisherSupportUrl: https://lwks.com/report-a-problem/ +PrivacyUrl: https://lwks.com/privacy-policy/ +# Author: +PackageName: Lightworks +PackageUrl: https://lwks.com/lightworks/ +License: Proprietary +# LicenseUrl: +# Copyright: +# CopyrightUrl: +ShortDescription: Lightworks is a non-linear editing system (NLE) for editing and mastering digital video. +# Description: +Moniker: lightworks +# Tags: +# Agreements: +# ReleaseNotes: +# ReleaseNotesUrl: +# PurchaseUrl: +# InstallationNotes: +# Documentations: +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.yaml b/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.yaml new file mode 100644 index 0000000000000..00a703ac44680 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2022.3.136244/LWKS.Lightworks.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 v2.1.5 $debug=QUSU.CRLF.5-1-19041-1682.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2022.3.136244 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.installer.yaml b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.installer.yaml new file mode 100644 index 0000000000000..975e98e827c54 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.installer.yaml @@ -0,0 +1,14 @@ +# Created with YamlCreate.ps1 v2.5.0 $debug=NVS1.CRLF.7-5-2.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2025.1.151752 +InstallerType: nullsoft +UpgradeBehavior: install +ProductCode: '{E94DD4E4-7746-472c-AA7B-1242FED0CFC8}' +Installers: +- Architecture: x64 + InstallerUrl: https://cdn.lwks.com/releases/2025.1/Lightworks-2025.1-151752.exe + InstallerSha256: CAB43746A02201CB0C3949EC94C29DF77B402F9004121969C3AE2C117741C683 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.locale.en-US.yaml b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.locale.en-US.yaml new file mode 100644 index 0000000000000..362fa2ea552e5 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.locale.en-US.yaml @@ -0,0 +1,44 @@ +# Created with YamlCreate.ps1 v2.5.0 $debug=NVS1.CRLF.7-5-2.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2025.1.151752 +PackageLocale: en-US +Publisher: LWKS Software Ltd. +PublisherUrl: https://lwks.com/ +PublisherSupportUrl: https://lwks.com/report-a-problem/ +PrivacyUrl: https://lwks.com/privacy-and-cookie-policy +Author: LWKS Software Ltd. +PackageName: Lightworks +PackageUrl: https://lwks.com/releases +License: Proprietary +LicenseUrl: https://cdn.lwks.com/docs/2020.1.1/Lightworks%20License%20Agreement.pdf +Copyright: Copyright © 2025 LWKS.com +CopyrightUrl: https://cdn.lwks.com/docs/2020.1.1/Lightworks%20License%20Agreement.pdf +ShortDescription: Lightworks is a non-linear editing system (NLE) for editing and mastering digital video. +# Description: +Moniker: lightworks +Tags: +- clip +- creative +- creativity +- edit +- editor +- film +- movie +- video +- video-editing +- video-editor +# ReleaseNotes: +# ReleaseNotesUrl: +PurchaseUrl: https://lwks.com/pricing +# InstallationNotes: +Documentations: +- DocumentLabel: Documentation + DocumentUrl: https://lwks.com/documentation +- DocumentLabel: Knowledge Base + DocumentUrl: https://lwks.com/kb +- DocumentLabel: FAQs + DocumentUrl: https://lwks.com/faqs +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.locale.zh-CN.yaml b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.locale.zh-CN.yaml new file mode 100644 index 0000000000000..3a9ead1e69c37 --- /dev/null +++ b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.locale.zh-CN.yaml @@ -0,0 +1,43 @@ +# Created with YamlCreate.ps1 v2.5.0 $debug=NVS1.CRLF.7-5-2.Win32NT +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2025.1.151752 +PackageLocale: zh-CN +# Publisher: +# PublisherUrl: +# PublisherSupportUrl: +# PrivacyUrl: +# Author: +# PackageName: +# PackageUrl: +License: 专有软件 +# LicenseUrl: +# Copyright: +# CopyrightUrl: +ShortDescription: Lightworks 是一款用于剪辑和制作数字视频的非线性编辑系统(NLE)。 +# Description: +# Moniker: +Tags: +- 创意 +- 剪辑 +- 影片 +- 电影 +- 视频 +- 视频编辑 +- 视频编辑器 +- 编辑 +- 编辑器 +# ReleaseNotes: +# ReleaseNotesUrl: +# PurchaseUrl: +# InstallationNotes: +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://lwks.com/documentation +- DocumentLabel: 知识库 + DocumentUrl: https://lwks.com/kb +- DocumentLabel: 常见问题 + DocumentUrl: https://lwks.com/faqs +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.yaml b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.yaml similarity index 55% rename from manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.yaml rename to manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.yaml index 1744ebe823813..b965f87cd746f 100644 --- a/manifests/a/Akiflow/Akiflow/2.49.14/Akiflow.Akiflow.yaml +++ b/manifests/l/LWKS/Lightworks/2025.1.151752/LWKS.Lightworks.yaml @@ -1,8 +1,8 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-1.Win32NT +# Created with YamlCreate.ps1 v2.5.0 $debug=NVS1.CRLF.7-5-2.Win32NT # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json -PackageIdentifier: Akiflow.Akiflow -PackageVersion: 2.49.14 +PackageIdentifier: LWKS.Lightworks +PackageVersion: 2025.1.151752 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.installer.yaml b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.installer.yaml new file mode 100644 index 0000000000000..81732762555eb --- /dev/null +++ b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.installer.yaml @@ -0,0 +1,17 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Lebo.Lebo +PackageVersion: 6.3.22 +InstallerType: nullsoft +Scope: machine +InstallerSwitches: + Upgrade: --updated +ProductCode: 8d145a29-6dae-56fd-af4b-ab204d904dcd +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + InstallerUrl: https://download.mirrorcast.cn/release/electron/packages/prod/202507171720-lebo-23303-6.3.22-x64.exe + InstallerSha256: FE17AC4961BF36C13E4A22205D2BC016EEA192A9832DB7442FA08BE0E10167EB +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.locale.en-US.yaml b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.locale.en-US.yaml new file mode 100644 index 0000000000000..40d871537eff8 --- /dev/null +++ b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.locale.en-US.yaml @@ -0,0 +1,28 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Lebo.Lebo +PackageVersion: 6.3.22 +PackageLocale: en-US +PublisherUrl: https://www.lebo.cn/index_english.jsp +Author: Shenzhen Lebo Technology Co., Ltd. +License: Proprietary +Copyright: © Shenzhen Lebo Technology Co., Ltd. All rights reserved. +ShortDescription: 屏幕镜像&多屏互动会议投屏神器 +Tags: +- airplay +- capture +- cast +- casting +- mirror +- mirroring +- mobile +- phone +- record +- screen +- screen-mirroring +Documentations: +- DocumentLabel: FAQ + DocumentUrl: https://www.lebo.cn/UseHelp.jsp +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.locale.zh-CN.yaml b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.locale.zh-CN.yaml new file mode 100644 index 0000000000000..6d31396547e6f --- /dev/null +++ b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.locale.zh-CN.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Lebo.Lebo +PackageVersion: 6.3.22 +PackageLocale: zh-CN +Publisher: 深圳乐播科技有限公司 +PublisherUrl: https://www.lebo.cn/ +PublisherSupportUrl: https://www.lebo.cn/AboutContact.jsp +PrivacyUrl: https://h5.hpplay.com.cn/h5/rabbit/#/agreement/privacy-app +Author: 深圳乐播科技有限公司 +PackageName: 乐播投屏 +PackageUrl: https://www.lebo.cn/Download.jsp +License: 专有软件 +LicenseUrl: https://activity.hpplay.cn/pro-protocol/1731294364366.html +Copyright: © 深圳乐播科技有限公司版权所有 +CopyrightUrl: https://activity.hpplay.cn/pro-protocol/1731294364366.html +ShortDescription: 屏幕镜像&多屏互动会议投屏神器 +Tags: +- airplay +- 屏幕 +- 屏幕镜像 +- 录制 +- 录屏 +- 手机 +- 投射 +- 投屏 +- 镜像 +ReleaseNotes: |- + 1. 修复 bug + + 2. 优化性能 +Documentations: +- DocumentLabel: 常见问题 + DocumentUrl: https://www.lebo.cn/UseHelp.jsp +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.yaml b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.yaml new file mode 100644 index 0000000000000..6ed5e131e7aa1 --- /dev/null +++ b/manifests/l/Lebo/Lebo/6.3.22/Lebo.Lebo.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Lebo.Lebo +PackageVersion: 6.3.22 +DefaultLocale: zh-CN +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.installer.yaml b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.installer.yaml new file mode 100644 index 0000000000000..3a73b7e380b34 --- /dev/null +++ b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.installer.yaml @@ -0,0 +1,20 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: LukiLabs.Craft +PackageVersion: 3.1.20 +InstallerType: nullsoft +Scope: user +InstallerSwitches: + Upgrade: --updated +UpgradeBehavior: install +Protocols: +- craftdocs +ProductCode: e640d26b-c20e-51a9-b51a-c0dc9aeac168 +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + InstallerUrl: https://res.craft.do/windows-app/Craft%20Installer%203.1.20.exe + InstallerSha256: 6F4C908E016A7D5AEA6046C83D2647B7C39460B3FC08F80162081250C737671F +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.locale.en-US.yaml b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.locale.en-US.yaml new file mode 100644 index 0000000000000..28c71c021d8a0 --- /dev/null +++ b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.locale.en-US.yaml @@ -0,0 +1,38 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: LukiLabs.Craft +PackageVersion: 3.1.20 +PackageLocale: en-US +Publisher: Luki Labs Ltd. +PublisherUrl: https://www.craft.do/ +PublisherSupportUrl: https://support.craft.do/ +PrivacyUrl: https://www.craft.do/privacy +Author: Luki Labs Limited +PackageName: Craft +PackageUrl: https://www.craft.do/ +License: Proprietary +LicenseUrl: https://www.craft.do/terms +Copyright: Copyright © 2024 Luki Labs Ltd. +ShortDescription: Create documents, which will make an impact. +Tags: +- backlink +- bi-directional-link +- block +- collaborate +- collaboration +- docs +- document +- editor +- markdown +- notes +- reference +- share +- team +ReleaseNotesUrl: https://www.craft.do/whats-new +PurchaseUrl: https://www.craft.do/pricing +Documentations: +- DocumentLabel: Getting Started Guide + DocumentUrl: https://www.craft.do/s/gy4OMeABSTIlUw +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.locale.zh-CN.yaml b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.locale.zh-CN.yaml new file mode 100644 index 0000000000000..e301de2cfdd98 --- /dev/null +++ b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.locale.zh-CN.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: LukiLabs.Craft +PackageVersion: 3.1.20 +PackageLocale: zh-CN +Publisher: Luki Labs Ltd. +PublisherUrl: https://www.craft.do/ +PublisherSupportUrl: https://support.craft.do/ +PrivacyUrl: https://www.craft.do/privacy +Author: Luki Labs Limited +PackageName: Craft +PackageUrl: https://www.craft.do/ +License: 专有软件 +LicenseUrl: https://www.craft.do/terms +Copyright: Copyright © 2024 Luki Labs Ltd. +ShortDescription: 创造有影响力的文档 +Tags: +- markdown +- 共享 +- 内容块 +- 协作 +- 协同 +- 双向链接 +- 反向链接 +- 团队 +- 引用 +- 文档 +- 笔记 +- 编辑器 +ReleaseNotesUrl: https://www.craft.do/whats-new +PurchaseUrl: https://www.craft.do/pricing +Documentations: +- DocumentLabel: 新手教程 + DocumentUrl: https://www.craft.do/s/gy4OMeABSTIlUw +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.yaml b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.yaml new file mode 100644 index 0000000000000..68ea68f5b7e5d --- /dev/null +++ b/manifests/l/LukiLabs/Craft/3.1.20/LukiLabs.Craft.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: LukiLabs.Craft +PackageVersion: 3.1.20 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.installer.yaml b/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.installer.yaml new file mode 100644 index 0000000000000..6ce9dbe4786e7 --- /dev/null +++ b/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.installer.yaml @@ -0,0 +1,44 @@ +# Created using wingetcreate 1.0.4.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.9.0.schema.json + +PackageIdentifier: Microsoft.DotNet.SDK.9 +PackageVersion: 9.0.303 +MinimumOSVersion: 6.1.7601 +InstallerSwitches: + Silent: /quiet + SilentWithProgress: /passive + Custom: /norestart +Installers: +- Architecture: arm64 + InstallerType: burn + InstallerUrl: https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.303/dotnet-sdk-9.0.303-win-arm64.exe + InstallerSha256: 763139C9E330D76D89997B3C31CDA0716EC03785DCB3322239A9B64B5D4DC5F0 + ProductCode: '{6f143f12-fdb3-4298-9d1e-14da9a4ee0f8}' + AppsAndFeaturesEntries: + - DisplayName: Microsoft .NET SDK 9.0.303 (arm64) + Publisher: Microsoft Corporation + DisplayVersion: 9.3.325.36511 + ProductCode: '{6f143f12-fdb3-4298-9d1e-14da9a4ee0f8}' +- Architecture: x64 + InstallerType: burn + InstallerUrl: https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.303/dotnet-sdk-9.0.303-win-x64.exe + InstallerSha256: 86F0A619CC4A60F44DC734CD5B0A1F8D2202498AB911CDC4F80135E3E124A5BD + ProductCode: '{4b3fa12a-2791-4c7a-b59e-7d0fec6c4f53}' + AppsAndFeaturesEntries: + - DisplayName: Microsoft .NET SDK 9.0.303 (x64) + Publisher: Microsoft Corporation + DisplayVersion: 9.3.325.36511 + ProductCode: '{4b3fa12a-2791-4c7a-b59e-7d0fec6c4f53}' +- Architecture: x86 + InstallerType: burn + InstallerUrl: https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.303/dotnet-sdk-9.0.303-win-x86.exe + InstallerSha256: CF2CBA843919B29CB913C84FDDE4F6FFE3669B6843EFD45EDC923D2420576B22 + ProductCode: '{239d21b8-64d2-419f-af66-5181539f5d85}' + AppsAndFeaturesEntries: + - DisplayName: Microsoft .NET SDK 9.0.303 (x86) + Publisher: Microsoft Corporation + DisplayVersion: 9.3.325.36511 + ProductCode: '{239d21b8-64d2-419f-af66-5181539f5d85}' +ManifestType: installer +ManifestVersion: 1.9.0 + diff --git a/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.locale.en-US.yaml b/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.locale.en-US.yaml new file mode 100644 index 0000000000000..b79d17edf66ba --- /dev/null +++ b/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.locale.en-US.yaml @@ -0,0 +1,27 @@ +# Created using wingetcreate 1.0.4.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.9.0.schema.json + +PackageIdentifier: Microsoft.DotNet.SDK.9 +PackageVersion: 9.0.303 +PackageLocale: en-US +Publisher: Microsoft Corporation +PackageName: Microsoft .NET SDK 9.0 +PackageUrl: https://dotnet.microsoft.com +License: MIT +ShortDescription: .NET is a free, cross-platform, open-source developer platform for building many different types of applications. +Moniker: dotnet-sdk-9 +Tags: +- .NET +- .NET Core +- dotnet +- net +- C# +- csharp +- F# +- fsharp +- VB +- Visual Basic +- SDK +ManifestType: defaultLocale +ManifestVersion: 1.9.0 + diff --git a/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.yaml b/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.yaml new file mode 100644 index 0000000000000..5c80a77889cc6 --- /dev/null +++ b/manifests/m/Microsoft/DotNet/SDK/9/9.0.303/Microsoft.DotNet.SDK.9.yaml @@ -0,0 +1,9 @@ +# Created using wingetcreate 1.0.4.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.9.0.schema.json + +PackageIdentifier: Microsoft.DotNet.SDK.9 +PackageVersion: 9.0.303 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.9.0 + diff --git a/manifests/m/Microsoft/VisualStudioCode/Insiders/CLI/1.103.0/Microsoft.VisualStudioCode.Insiders.CLI.installer.yaml b/manifests/m/Microsoft/VisualStudioCode/Insiders/CLI/1.103.0/Microsoft.VisualStudioCode.Insiders.CLI.installer.yaml index 614b99ec6599a..2c8a3063d9849 100644 --- a/manifests/m/Microsoft/VisualStudioCode/Insiders/CLI/1.103.0/Microsoft.VisualStudioCode.Insiders.CLI.installer.yaml +++ b/manifests/m/Microsoft/VisualStudioCode/Insiders/CLI/1.103.0/Microsoft.VisualStudioCode.Insiders.CLI.installer.yaml @@ -10,10 +10,10 @@ NestedInstallerFiles: PortableCommandAlias: code-insiders Installers: - Architecture: arm64 - InstallerUrl: https://vscode.download.prss.microsoft.com/dbazure/download/insider/f86dac57da43f757d16139a2c0ca142e32b6a4c6/vscode_cli_win32_arm64_cli.zip - InstallerSha256: 54985A9F35316C06D62CF34DF97675DAB24C11B7E112DF23FBC07FB4A418822C + InstallerUrl: https://vscode.download.prss.microsoft.com/dbazure/download/insider/71d320f7f250d79b4e3e0b5385be0e2ff25f7435/vscode_cli_win32_arm64_cli.zip + InstallerSha256: 3FC78F4E0ACDD92068BFD16F95DB336C98B795C31A7239B8D8D78A8FC24B8E08 - Architecture: x64 - InstallerUrl: https://vscode.download.prss.microsoft.com/dbazure/download/insider/f86dac57da43f757d16139a2c0ca142e32b6a4c6/vscode_cli_win32_x64_cli.zip - InstallerSha256: 1E9C6948BA2E3486CBC7CF5ADA3012B5997FE19A1414C901013E0CCE0C45E421 + InstallerUrl: https://vscode.download.prss.microsoft.com/dbazure/download/insider/71d320f7f250d79b4e3e0b5385be0e2ff25f7435/vscode_cli_win32_x64_cli.zip + InstallerSha256: 03C7527C9393C09AB47B8688DB5F58F7E8EF92493BE81DE595375AEA6A94F804 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.installer.yaml b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.installer.yaml similarity index 71% rename from manifests/m/Miro/Miro/0.11.108/Miro.Miro.installer.yaml rename to manifests/m/Miro/Miro/0.11.110/Miro.Miro.installer.yaml index 12926a840601a..7a913cd47cf3c 100644 --- a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.installer.yaml +++ b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.installer.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: Miro.Miro -PackageVersion: 0.11.108 +PackageVersion: 0.11.110 InstallerType: nullsoft Scope: user InstallerSwitches: @@ -11,13 +11,13 @@ UpgradeBehavior: install Protocols: - miroapp ProductCode: 01f85b1b-f63c-544c-9e47-432831b23be6 -ReleaseDate: 2025-07-16 +ReleaseDate: 2025-07-17 Installers: - Architecture: x86 InstallerUrl: https://desktop.miro.com/platforms/win32-x86-nsis-pu/Miro-setup.exe - InstallerSha256: D8F2BE8C954BCA050D6650A4D5518A9C73D547579D743DA0C9AA3B8AB82E3D14 + InstallerSha256: D8094CCBEF29CC3113ECD6F8B3DE59D35847C3D44FA7707C5C6D6745B6704D02 - Architecture: x64 InstallerUrl: https://desktop.miro.com/platforms/win32-nsis-pu/Miro-setup.exe - InstallerSha256: 79810EF2454F377B4CDF1A09818682ED67843EE5DA695E9AD99D6E08728AAAF6 + InstallerSha256: 22E2F84234C3490987BB1042E344194DEA6923C054F2CE5A49E2C169FFC0D9A3 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.locale.en-US.yaml b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.locale.en-US.yaml similarity index 94% rename from manifests/m/Miro/Miro/0.11.108/Miro.Miro.locale.en-US.yaml rename to manifests/m/Miro/Miro/0.11.110/Miro.Miro.locale.en-US.yaml index 095fb734f728f..975179458a321 100644 --- a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.locale.en-US.yaml +++ b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: Miro.Miro -PackageVersion: 0.11.108 +PackageVersion: 0.11.110 PackageLocale: en-US Publisher: Miro PublisherUrl: https://miro.com/ diff --git a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.locale.zh-CN.yaml b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.locale.zh-CN.yaml similarity index 93% rename from manifests/m/Miro/Miro/0.11.108/Miro.Miro.locale.zh-CN.yaml rename to manifests/m/Miro/Miro/0.11.110/Miro.Miro.locale.zh-CN.yaml index 8ab48cd8c358f..810d072880714 100644 --- a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.locale.zh-CN.yaml +++ b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.locale.zh-CN.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Miro.Miro -PackageVersion: 0.11.108 +PackageVersion: 0.11.110 PackageLocale: zh-CN Publisher: Miro PublisherUrl: https://miro.com/ diff --git a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.yaml b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.yaml similarity index 87% rename from manifests/m/Miro/Miro/0.11.108/Miro.Miro.yaml rename to manifests/m/Miro/Miro/0.11.110/Miro.Miro.yaml index be2d4b1ccfa37..46d225593a703 100644 --- a/manifests/m/Miro/Miro/0.11.108/Miro.Miro.yaml +++ b/manifests/m/Miro/Miro/0.11.110/Miro.Miro.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: Miro.Miro -PackageVersion: 0.11.108 +PackageVersion: 0.11.110 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.installer.yaml b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.installer.yaml similarity index 68% rename from manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.installer.yaml rename to manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.installer.yaml index 8208ffdc3c0fa..12cadb857616e 100644 --- a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.installer.yaml +++ b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.installer.yaml @@ -2,20 +2,20 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: Neumetrix.HttpWatch.Basic -PackageVersion: 15.0.17 +PackageVersion: 15.0.18 InstallerType: nullsoft Scope: machine FileExtensions: - har - hwl ProductCode: '{01B845D4-B73E-4CF7-A377-94BC7BB4F77B}' -ReleaseDate: 2025-06-17 +ReleaseDate: 2025-07-17 Installers: - Architecture: x86 InstallerUrl: https://download.httpwatch.com/httpwatch.exe - InstallerSha256: 02EAC1CC088F1F12A6A6C98EF9BAAC5A778A98F37480A49D91F4FF7CD9D5DC0C + InstallerSha256: A931F5916C68AAB0E93D44C4E75890F188B6B4B5E85842B4D685F029CC5F2E22 - Architecture: x64 InstallerUrl: https://download.httpwatch.com/httpwatch.exe - InstallerSha256: 02EAC1CC088F1F12A6A6C98EF9BAAC5A778A98F37480A49D91F4FF7CD9D5DC0C + InstallerSha256: A931F5916C68AAB0E93D44C4E75890F188B6B4B5E85842B4D685F029CC5F2E22 ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.locale.en-US.yaml b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.locale.en-US.yaml similarity index 88% rename from manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.locale.en-US.yaml rename to manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.locale.en-US.yaml index 447a9a5903829..ca35cb2f769e4 100644 --- a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.locale.en-US.yaml +++ b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: Neumetrix.HttpWatch.Basic -PackageVersion: 15.0.17 +PackageVersion: 15.0.18 PackageLocale: en-US Publisher: Neumetrix Limited PublisherUrl: https://www.httpwatch.com/ @@ -25,7 +25,9 @@ Tags: - performance - web - webpage -ReleaseNotes: "- Fixed: A 'device does not exist' error could occur during installation" +ReleaseNotes: |- + - Fixed: An 'unmatched character' error could occur when adding columns to the request grid + - Fixed: An 'invalid date time' error could occur when opening a HAR file written by the Safari browser ReleaseNotesUrl: https://www.httpwatch.com/download/versionhistory/ PurchaseUrl: https://www.httpwatch.com/buy/ Documentations: diff --git a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.locale.zh-CN.yaml b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.locale.zh-CN.yaml similarity index 96% rename from manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.locale.zh-CN.yaml rename to manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.locale.zh-CN.yaml index 6055f970f7beb..696da452c9833 100644 --- a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.locale.zh-CN.yaml +++ b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.locale.zh-CN.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Neumetrix.HttpWatch.Basic -PackageVersion: 15.0.17 +PackageVersion: 15.0.18 PackageLocale: zh-CN License: 专有软件 ShortDescription: 使用浏览器内 HTTP 嗅探工具,成为调试与网页性能大师。 diff --git a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.yaml b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.yaml similarity index 88% rename from manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.yaml rename to manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.yaml index a12fff003e82a..58b9f8fc33ab8 100644 --- a/manifests/n/Neumetrix/HttpWatch/Basic/15.0.17/Neumetrix.HttpWatch.Basic.yaml +++ b/manifests/n/Neumetrix/HttpWatch/Basic/15.0.18/Neumetrix.HttpWatch.Basic.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: Neumetrix.HttpWatch.Basic -PackageVersion: 15.0.17 +PackageVersion: 15.0.18 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.installer.yaml b/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.installer.yaml new file mode 100644 index 0000000000000..837adac72db24 --- /dev/null +++ b/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.installer.yaml @@ -0,0 +1,18 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Nextcloud.Talk +PackageVersion: 1.2.5 +InstallerType: exe +Scope: user +InstallerSwitches: + Silent: --silent + SilentWithProgress: --silent +UpgradeBehavior: install +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/nextcloud-releases/talk-desktop/releases/download/v1.2.5/Nextcloud.Talk-windows-x64.exe + InstallerSha256: EDF6B52398655F2FDBCD0FFE3FF4446FA83C06474F1848EF1761185644E85F25 +ManifestType: installer +ManifestVersion: 1.10.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.locale.en-US.yaml b/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.locale.en-US.yaml new file mode 100644 index 0000000000000..c88d3838f3eec --- /dev/null +++ b/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.locale.en-US.yaml @@ -0,0 +1,23 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Nextcloud.Talk +PackageVersion: 1.2.5 +PackageLocale: en-US +Publisher: Nextcloud GmbH +PublisherUrl: https://github.com/nextcloud-releases +PackageName: Nextcloud Talk +PackageUrl: https://github.com/nextcloud-releases/talk-desktop +License: AGPL-3.0-or-later +Copyright: Copyright © 2024 Nextcloud GmbH +ShortDescription: Official Desktop client for Nextcloud Talk +Tags: +- desktop +- electron +- js +- nextcloud +- nextcloud-talk +- vue +ReleaseNotesUrl: https://github.com/nextcloud-releases/talk-desktop/releases/tag/v1.2.5 +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.yaml b/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.yaml new file mode 100644 index 0000000000000..177bc59dfad67 --- /dev/null +++ b/manifests/n/Nextcloud/Talk/1.2.5/Nextcloud.Talk.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Nextcloud.Talk +PackageVersion: 1.2.5 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.installer.yaml b/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.installer.yaml new file mode 100644 index 0000000000000..ad1f18ca7f62a --- /dev/null +++ b/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.installer.yaml @@ -0,0 +1,18 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Nextcloud.Talk.Beta +PackageVersion: 1.2.5 +InstallerType: exe +Scope: user +InstallerSwitches: + Silent: --silent + SilentWithProgress: --silent +UpgradeBehavior: install +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/nextcloud-releases/talk-desktop/releases/download/v1.2.5/Nextcloud.Talk-windows-x64.exe + InstallerSha256: EDF6B52398655F2FDBCD0FFE3FF4446FA83C06474F1848EF1761185644E85F25 +ManifestType: installer +ManifestVersion: 1.10.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.locale.en-US.yaml b/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.locale.en-US.yaml new file mode 100644 index 0000000000000..79921f77202e7 --- /dev/null +++ b/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.locale.en-US.yaml @@ -0,0 +1,23 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Nextcloud.Talk.Beta +PackageVersion: 1.2.5 +PackageLocale: en-US +Publisher: Nextcloud GmbH +PublisherUrl: https://github.com/nextcloud-releases +PackageName: Nextcloud Talk Beta +PackageUrl: https://github.com/nextcloud-releases/talk-desktop +License: AGPL-3.0-or-later +Copyright: Copyright © 2025 Nextcloud GmbH +ShortDescription: Official Desktop client for Nextcloud Talk +Tags: +- desktop +- electron +- js +- nextcloud +- nextcloud-talk +- vue +ReleaseNotesUrl: https://github.com/nextcloud-releases/talk-desktop/releases/tag/v1.2.5 +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.yaml b/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.yaml new file mode 100644 index 0000000000000..26a12b4279be0 --- /dev/null +++ b/manifests/n/Nextcloud/Talk/Beta/1.2.5/Nextcloud.Talk.Beta.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Nextcloud.Talk.Beta +PackageVersion: 1.2.5 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.installer.yaml b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.installer.yaml new file mode 100644 index 0000000000000..bc887abcb0f15 --- /dev/null +++ b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.installer.yaml @@ -0,0 +1,23 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: NordSecurity.NordVPN +PackageVersion: 7.44.4.0 +InstallerType: inno +Scope: machine +UpgradeBehavior: install +Protocols: +- nordvpn +Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.DotNet.DesktopRuntime.8 +ProductCode: '{19465C24-3D5D-4327-B99F-3CC0A1D38151}_is1' +Installers: +- Architecture: x64 + InstallerUrl: https://downloads.nordcdn.com/apps/windows/NordVPN/7.44.4.0/NordVPNInstall.exe + InstallerSha256: 001C54A940E2B78B6A7C36A63C410DD5E6114A55A8AE1D365702F59CC89E1F7C +- Architecture: arm64 + InstallerUrl: https://downloads.nordcdn.com/apps/windows/NordVPN/7.44.4.0/NordVPNInstall.exe + InstallerSha256: 001C54A940E2B78B6A7C36A63C410DD5E6114A55A8AE1D365702F59CC89E1F7C +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.locale.en-US.yaml b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.locale.en-US.yaml new file mode 100644 index 0000000000000..dd9c78ff567fe --- /dev/null +++ b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.locale.en-US.yaml @@ -0,0 +1,26 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: NordSecurity.NordVPN +PackageVersion: 7.44.4.0 +PackageLocale: en-US +Publisher: Nord Security +PublisherSupportUrl: https://support.nordvpn.com/ +PrivacyUrl: https://my.nordaccount.com/legal/privacy-policy/nordvpn/ +Author: Nord Security +PackageName: NordVPN +License: Proprietary +LicenseUrl: https://my.nordaccount.com/legal/terms-of-service/nordvpn/ +Copyright: © 2024 Nord Security. All rights reserved +ShortDescription: A VPN for Windows will improve your security while you’re connected to the internet on your PC. Enjoy more secure streaming, browsing, and work with NordVPN. +Description: NordVPN encrypts your internet traffic and hides your IP and physical location. Works on 6 devices at once, on every major platform. With NordVPN, encrypt your online activity to protect your private data from hackers or snoopy advertisers. Enjoy global connectivity along with high-performance speed and secure access to streaming websites, censored content and social networks. +Moniker: nordvpn +Tags: +- network +- privacy +- proxy +- security +- vpn +ReleaseNotes: Settings got a more intuitive navigation system. You know that moment — “Where was that option again?” You’ll be having fewer of those. +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.locale.zh-CN.yaml b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.locale.zh-CN.yaml new file mode 100644 index 0000000000000..fc85bfb121012 --- /dev/null +++ b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.locale.zh-CN.yaml @@ -0,0 +1,18 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: NordSecurity.NordVPN +PackageVersion: 7.44.4.0 +PackageLocale: zh-CN +License: 专有软件 +Copyright: © 2024 Nord Security。保留所有权利 +ShortDescription: 当您在电脑上连接互联网时,Windows 版 VPN 会提高您的安全性。使用 NordVPN,享受更安全的流媒体、浏览和工作体验。 +Description: NordVPN 为您的互联网流量加密,并隐藏您的 IP 和物理位置。可同时在 6 台设备上运行,适用于所有主流平台。使用 NordVPN,加密您的在线活动,保护您的私人数据不受黑客或窥探隐私的广告商的侵害。享受全球连接、高性能速度和安全访问流媒体网站、和谐内容和社交网络。 +Tags: +- vpn +- 代理 +- 安全 +- 网络 +- 隐私 +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.yaml b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.yaml new file mode 100644 index 0000000000000..81e0a8be473c3 --- /dev/null +++ b/manifests/n/NordSecurity/NordVPN/7.44.4.0/NordSecurity.NordVPN.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: NordSecurity.NordVPN +PackageVersion: 7.44.4.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.installer.yaml b/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.installer.yaml new file mode 100644 index 0000000000000..b4530afb44851 --- /dev/null +++ b/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.installer.yaml @@ -0,0 +1,18 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: oeyoews.tiddlywiki-app +PackageVersion: 4.8.2 +InstallerLocale: en-US +InstallerType: nullsoft +ProductCode: 2be4aded-f5e9-5773-b511-516fba6044e3 +ReleaseDate: 2025-07-13 +AppsAndFeaturesEntries: +- DisplayName: tiddlywiki-app 4.8.2 + ProductCode: 2be4aded-f5e9-5773-b511-516fba6044e3 +Installers: +- Architecture: x86 + InstallerUrl: https://github.com/oeyoews/tiddlywiki-app/releases/download/v4.8.2/tiddlywiki-app-4.8.2.exe + InstallerSha256: 43C795F4CCC9F71A0C3B10AF32D35CAF7EA48A5EB601FA716F366D48ACD11AC4 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.locale.en-US.yaml b/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.locale.en-US.yaml new file mode 100644 index 0000000000000..a1dd47793d1a2 --- /dev/null +++ b/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.locale.en-US.yaml @@ -0,0 +1,21 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: oeyoews.tiddlywiki-app +PackageVersion: 4.8.2 +PackageLocale: en-US +Publisher: oeyoews +PublisherUrl: https://github.com/oeyoews +PublisherSupportUrl: https://github.com/oeyoews/tiddlywiki-app/issues +PackageName: tiddlywiki-app +PackageUrl: https://github.com/oeyoews/tiddlywiki-app +License: MIT +LicenseUrl: https://github.com/oeyoews/tiddlywiki-app/blob/HEAD/LICENSE +Copyright: Copyright © 2025 oeyoews +ShortDescription: Your next TiddlyWiki app offers a smoother TiddlyWiki experience. +Tags: +- app +- electron +- tiddlywiki +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.yaml b/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.yaml new file mode 100644 index 0000000000000..3dea614d60276 --- /dev/null +++ b/manifests/o/oeyoews/tiddlywiki-app/4.8.2/oeyoews.tiddlywiki-app.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: oeyoews.tiddlywiki-app +PackageVersion: 4.8.2 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.installer.yaml b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.installer.yaml new file mode 100644 index 0000000000000..0b19f8a16dd9b --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.installer.yaml @@ -0,0 +1,32 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Community +PackageVersion: 2025.6.4 +InstallerType: exe +InstallModes: +- interactive +- silent +- silentWithProgress +InstallerSwitches: + Silent: -q -Dinstall4j.suppressUnattendedReboot=true + SilentWithProgress: -q -splash "" -Dinstall4j.suppressUnattendedReboot=true + InstallLocation: -dir "" + Log: -Dinstall4j.log="" +UpgradeBehavior: install +FileExtensions: +- burp +ProductCode: 9806-1938-4586-6531 +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://portswigger-cdn.net/burp/releases/download?product=community&version=2025.6.4&type=WindowsX64 + InstallerSha256: 4E40FF4F714315A3388D5842AA919A89F74AB8EA1A002EC480237AEDA1641DBD +- Architecture: x64 + Scope: machine + InstallerUrl: https://portswigger-cdn.net/burp/releases/download?product=community&version=2025.6.4&type=WindowsX64 + InstallerSha256: 4E40FF4F714315A3388D5842AA919A89F74AB8EA1A002EC480237AEDA1641DBD + ElevationRequirement: elevationRequired +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.locale.en-US.yaml b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.locale.en-US.yaml new file mode 100644 index 0000000000000..c312ff2992c1c --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.locale.en-US.yaml @@ -0,0 +1,36 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Community +PackageVersion: 2025.6.4 +PackageLocale: en-US +Publisher: PortSwigger Web Security +PublisherUrl: https://portswigger.net/ +PublisherSupportUrl: https://portswigger.net/support +PrivacyUrl: https://portswigger.net/privacy +Author: PortSwigger Ltd +PackageName: Burp Suite Community Edition +PackageUrl: https://portswigger.net/burp/communitydownload +License: Freeware +LicenseUrl: https://portswigger.net/burp/eula/community +Copyright: © PortSwigger Ltd. All rights reserved +CopyrightUrl: https://portswigger.net/legal +ShortDescription: The best manual tools to start web security testing. +Description: Burp Suite Community Edition is PortSwigger's essential manual toolkit for learning about web security testing. +Tags: +- capture +- debug +- network +- proxy +- request +- response +- security +- traffic +- web +ReleaseNotes: Introduces automated modification of messages in Burp Repeater using custom actions. Also adds a toggle for switching between tab views, and a number of other improvements. +ReleaseNotesUrl: https://portswigger.net/burp/releases/professional-community-2025-6-4 +Documentations: +- DocumentLabel: Documentation + DocumentUrl: https://portswigger.net/burp/documentation +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.locale.zh-CN.yaml b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.locale.zh-CN.yaml new file mode 100644 index 0000000000000..6d1199a195b89 --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.locale.zh-CN.yaml @@ -0,0 +1,35 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Community +PackageVersion: 2025.6.4 +PackageLocale: zh-CN +Publisher: PortSwigger Web Security +PublisherUrl: https://portswigger.net/ +PublisherSupportUrl: https://portswigger.net/support +PrivacyUrl: https://portswigger.net/privacy +Author: PortSwigger Ltd +PackageName: Burp Suite Community Edition +PackageUrl: https://portswigger.net/burp/communitydownload +License: 免费软件 +LicenseUrl: https://portswigger.net/burp/eula/community +Copyright: © PortSwigger Ltd. All rights reserved +CopyrightUrl: https://portswigger.net/legal +ShortDescription: 进行网络安全测试的最佳手动工具 +Description: Burp Suite 社区版是由 PortSwigger 推出的用于学习网络安全测试的必备手动工具箱。 +Tags: +- 代理 +- 响应 +- 安全 +- 抓包 +- 流量 +- 网络 +- 网页 +- 请求 +- 调试 +ReleaseNotesUrl: https://portswigger.net/burp/releases/professional-community-2025-6-4 +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://portswigger.net/burp/documentation +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.yaml b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.yaml new file mode 100644 index 0000000000000..a1eb0f07a249d --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Community/2025.6.4/PortSwigger.BurpSuite.Community.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Community +PackageVersion: 2025.6.4 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.installer.yaml b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.installer.yaml new file mode 100644 index 0000000000000..1f08e879849b2 --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.installer.yaml @@ -0,0 +1,32 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Professional +PackageVersion: 2025.6.4 +InstallerType: exe +InstallModes: +- interactive +- silent +- silentWithProgress +InstallerSwitches: + Silent: -q -Dinstall4j.suppressUnattendedReboot=true + SilentWithProgress: -q -splash "" -Dinstall4j.suppressUnattendedReboot=true + InstallLocation: -dir "" + Log: -Dinstall4j.log="" +UpgradeBehavior: install +FileExtensions: +- burp +ProductCode: 7318-9294-3757-1226 +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://portswigger-cdn.net/burp/releases/download?product=pro&version=2025.6.4&type=WindowsX64 + InstallerSha256: 5C8484054F34F340EC9476D660D273CF8E4E8E1C4B513CF0E5EFDE6CDA4C81AE +- Architecture: x64 + Scope: machine + InstallerUrl: https://portswigger-cdn.net/burp/releases/download?product=pro&version=2025.6.4&type=WindowsX64 + InstallerSha256: 5C8484054F34F340EC9476D660D273CF8E4E8E1C4B513CF0E5EFDE6CDA4C81AE + ElevationRequirement: elevationRequired +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.locale.en-US.yaml b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.locale.en-US.yaml new file mode 100644 index 0000000000000..ab9af2f04712b --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.locale.en-US.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Professional +PackageVersion: 2025.6.4 +PackageLocale: en-US +Publisher: PortSwigger Web Security +PublisherUrl: https://portswigger.net/ +PublisherSupportUrl: https://portswigger.net/support +PrivacyUrl: https://portswigger.net/privacy +Author: PortSwigger Ltd +PackageName: Burp Suite Professional +PackageUrl: https://portswigger.net/burp/pro +License: Proprietary +LicenseUrl: https://portswigger.net/burp/eula/pro +Copyright: © PortSwigger Ltd. All rights reserved +CopyrightUrl: https://portswigger.net/legal +ShortDescription: The leading toolkit for web security testing. +Description: Burp Suite Professional is the world's most popular tool for web security testing. +Tags: +- capture +- debug +- network +- proxy +- request +- response +- security +- traffic +- web +ReleaseNotes: Introduces automated modification of messages in Burp Repeater using custom actions. Also adds a toggle for switching between tab views, and a number of other improvements. +ReleaseNotesUrl: https://portswigger.net/burp/releases/professional-community-2025-6-4 +PurchaseUrl: https://portswigger.net/buy/pro +Documentations: +- DocumentLabel: Documentation + DocumentUrl: https://portswigger.net/burp/documentation +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.locale.zh-CN.yaml b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.locale.zh-CN.yaml new file mode 100644 index 0000000000000..d7b8f31471b50 --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.locale.zh-CN.yaml @@ -0,0 +1,36 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Professional +PackageVersion: 2025.6.4 +PackageLocale: zh-CN +Publisher: PortSwigger Web Security +PublisherUrl: https://portswigger.net/ +PublisherSupportUrl: https://portswigger.net/support +PrivacyUrl: https://portswigger.net/privacy +Author: PortSwigger Ltd +PackageName: Burp Suite Professional +PackageUrl: https://portswigger.net/burp/pro +License: 专有软件 +LicenseUrl: https://portswigger.net/burp/eula/pro +Copyright: © PortSwigger Ltd. All rights reserved +CopyrightUrl: https://portswigger.net/legal +ShortDescription: 领先的网络安全测试工具箱 +Description: Burp Suite 专业版是世界上最受欢迎的网络安全测试工具。 +Tags: +- 代理 +- 响应 +- 安全 +- 抓包 +- 流量 +- 网络 +- 网页 +- 请求 +- 调试 +ReleaseNotesUrl: https://portswigger.net/burp/releases/professional-community-2025-6-4 +PurchaseUrl: https://portswigger.net/buy/pro +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://portswigger.net/burp/documentation +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.yaml b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.yaml new file mode 100644 index 0000000000000..2d9c7bb2b9c36 --- /dev/null +++ b/manifests/p/PortSwigger/BurpSuite/Professional/2025.6.4/PortSwigger.BurpSuite.Professional.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: PortSwigger.BurpSuite.Professional +PackageVersion: 2025.6.4 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.installer.yaml b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.installer.yaml new file mode 100644 index 0000000000000..55712f369e4c9 --- /dev/null +++ b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.installer.yaml @@ -0,0 +1,36 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: PureDevSoftware.10x +PackageVersion: 1.0.343.0 +InstallerType: burn +Scope: machine +FileExtensions: +- 10x +- 10x_settings +- 10x_syntax +- 10x_workspace +- c +- c++ +- cc +- cp +- cpp +- cxx +- h +- h++ +- hh +- hp +- hpp +- hxx +- inl +- sln +ProductCode: '{3c1ca7c6-d77a-47a4-9c0e-2ba428575a33}' +ReleaseDate: 2025-07-17 +AppsAndFeaturesEntries: +- UpgradeCode: '{9B881BA1-7F62-4CA2-873C-5916760E4340}' +Installers: +- Architecture: x64 + InstallerUrl: https://www.puredevsoftware.com/download.php?file=10x_prev_versions/10xInstaller_1_0_343_0.exe&type=exe + InstallerSha256: 2AA14A6A256910130D247AF283B49E5C2CD09F8FE59834368B5C26B38DF46022 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.locale.en-US.yaml b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.locale.en-US.yaml new file mode 100644 index 0000000000000..ff806b2f281e2 --- /dev/null +++ b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.locale.en-US.yaml @@ -0,0 +1,54 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: PureDevSoftware.10x +PackageVersion: 1.0.343.0 +PackageLocale: en-US +Publisher: PureDev Software +PublisherUrl: https://www.puredevsoftware.com/ +PublisherSupportUrl: https://www.10xeditor.com/contact.htm +PrivacyUrl: https://www.10xeditor.com/10x_privacy_terms.htm +Author: PureDev Software Limited +PackageName: 10x +PackageUrl: https://10xeditor.com/ +License: Proprietary +LicenseUrl: https://www.puredevsoftware.com/terms.htm +Copyright: Copyright 2025 PureDev Software +CopyrightUrl: https://www.puredevsoftware.com/terms.htm +ShortDescription: A High-Performance C++ Editor +Description: |- + There are many code editors and IDEs on the market, so why does the world need another editor? 10x is designed to be a fast and responsive editor, that understands C++ out of the box and performs well with the largest of codebases (>5 million loc). + There are Editors/IDEs that can handle many languages and have plugins for every eventuality, but due to the sheer size and complexity of these IDEs, they can become unresponsive and start failing for very large projects. + Conversely, there are many fast and lightweight code editors, but they often don't parse C++, or they require complicated setup with 3rd party parsers. + 10x is designed to fill the gap between a lightweight text editor and a full IDE. 10x has many of the features of an IDE but doesn't compromise on speed, even on the largest of projects. + 10x has a custom C++ parser that works out of the box, no setup required. The parser is fast and robust and incrementally parses as you type. It provides syntax highlighting, goto-definition, autocomplete and a lot more. + There are many editors/IDEs that promise everything, but it often comes at a cost, either in terms of responsiveness, robustness, or complexity of setup. With 10x, there is no need to compromise. You get the features you need with a fast and responsive editing experience. + 10x is aimed predominantly at the professional developer working on large and complex C++ codebases where productivity is vital. 10x makes it easy to quickly navigate around a large project and find what you need. 10x keeps you in the flow. + Coding at 60fps with instant workspace search is something you just have to experience. You may not think your current editor is slow until you try 10x. + 10x supports opening of Visual Studio projects, opening folders, and the creation of custom 10x workspaces. + 10x is currently Windows only. Support for other platforms is planned for the future. + As well as a custom built C++ parser, 10x also has syntax highlighting for many other languages. + 10x also has a powerful python API, which allows functionality to be added using python scripts. +Tags: +- code +- coding +- develop +- development +- programming +ReleaseNotes: |- + Summary + + Fixed perforce diff tool constantly opening + + General Fixes + + - Stopped the diff tool showing every time a file gets focus if P4DIFF environment variable is set +ReleaseNotesUrl: https://10xeditor.com/versions.htm +PurchaseUrl: https://10xeditor.com/pricing.htm +Documentations: +- DocumentLabel: Documentation + DocumentUrl: https://10xeditor.com/10xDocumentation/10xDocumentation.htm +- DocumentLabel: FAQ + DocumentUrl: https://10xeditor.com/faq.htm +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.locale.zh-CN.yaml b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.locale.zh-CN.yaml new file mode 100644 index 0000000000000..5f0d4c76fc9fe --- /dev/null +++ b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.locale.zh-CN.yaml @@ -0,0 +1,32 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: PureDevSoftware.10x +PackageVersion: 1.0.343.0 +PackageLocale: zh-CN +License: 专有软件 +ShortDescription: 高性能 C++ 编辑器 +Description: |- + 市场上已有众多代码编辑器和集成开发环境(IDE),为何还需要另一个编辑器?10x 被设计为一款快速响应的编辑器,它开箱即懂 C++,并能流畅处理超大规模代码库(>500 万行)。 + 现有编辑器/IDE 虽然能支持多种语言并通过插件满足各种需求,但由于其庞大复杂的架构,在面对超大型项目时往往变得卡顿甚至崩溃。 + 另一方面,虽然存在许多轻量快速的代码编辑器,但它们通常不具备 C++ 解析能力,或需要配置复杂的第三方解析器。 + 10x 旨在填补轻量文本编辑器与全功能 IDE 之间的空白。它既具备 IDE 的诸多特性,又能在处理巨型项目时保持极速响应。 + 10x 内置的自研 C++ 解析器无需配置即可工作,通过实时增量解析提供语法高亮、跳转定义、自动补全等核心功能。 + 许多编辑器/IDE 承诺一切,但往往以牺牲响应速度、稳定性或配置复杂度为代价。10x 则无需妥协——在获得所需功能的同时,您将享受丝滑般的编辑体验。 + 10x 专为处理大型复杂 C++ 代码库的专业开发者打造,通过高效的项目导航帮助开发者保持心流状态。 + 以 60 帧速率编写代码,配合即时工作区搜索的体验,唯有亲身体验才能领会。在尝试 10x 之前,您可能从未察觉现有编辑器的迟缓。 + 10x 支持直接打开 Visual Studio 项目、文件夹,并能创建自定义工作区。 + 10x 目前仅支持 Windows 平台,未来计划扩展至其他系统。 + 除自研 C++ 解析器外,10x 还支持多种其他语言的语法高亮。 + 10x 还配备了强大的 Python API,允许通过脚本扩展功能。 +Tags: +- 代码 +- 开发 +- 编程 +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://10xeditor.com/10xDocumentation/10xDocumentation.htm +- DocumentLabel: 常见问题 + DocumentUrl: https://10xeditor.com/faq.htm +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.yaml b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.yaml new file mode 100644 index 0000000000000..bd19be6900168 --- /dev/null +++ b/manifests/p/PureDevSoftware/10x/1.0.343.0/PureDevSoftware.10x.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: PureDevSoftware.10x +PackageVersion: 1.0.343.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.installer.yaml b/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.installer.yaml new file mode 100644 index 0000000000000..6d6e7c75488dd --- /dev/null +++ b/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.installer.yaml @@ -0,0 +1,21 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: SQLite.SQLite +PackageVersion: 3.50.3 +InstallerType: zip +NestedInstallerType: portable +NestedInstallerFiles: +- RelativeFilePath: sqldiff.exe + PortableCommandAlias: sqldiff +- RelativeFilePath: sqlite3.exe + PortableCommandAlias: sqlite3 +- RelativeFilePath: sqlite3_analyzer.exe + PortableCommandAlias: sqlite3_analyzer +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + InstallerUrl: https://www.sqlite.org/2025/sqlite-tools-win-x64-3500300.zip + InstallerSha256: 10A23613436D5877280E42647A1E02D02261EB3235F5A4101966A7E4873A12D5 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.locale.en-US.yaml b/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.locale.en-US.yaml new file mode 100644 index 0000000000000..b7441e33c6600 --- /dev/null +++ b/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.locale.en-US.yaml @@ -0,0 +1,29 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: SQLite.SQLite +PackageVersion: 3.50.3 +PackageLocale: en-US +Publisher: SQLite +PublisherUrl: https://sqlite.org/ +PublisherSupportUrl: https://sqlite.org/support.html +Author: Dwayne Richard Hipp +PackageName: SQLite +PackageUrl: https://sqlite.org/ +License: Public Domain +CopyrightUrl: https://sqlite.org/copyright.html +ShortDescription: Self-contained transactional SQL database engine +Description: |- + SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. + SQLite is an embedded SQL database engine. + Unlike most other SQL databases, SQLite does not have a separate server process. + SQLite reads and writes directly to ordinary disk files. + A complete SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file. +Tags: +- sqlite +- sqlite3 +Documentations: +- DocumentLabel: FAQ + DocumentUrl: https://sqlite.org/faq.html +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.yaml b/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.yaml new file mode 100644 index 0000000000000..47138a95e5a04 --- /dev/null +++ b/manifests/s/SQLite/SQLite/3.50.3/SQLite.SQLite.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: SQLite.SQLite +PackageVersion: 3.50.3 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/s/SST/opencode/0.3.18/SST.opencode.installer.yaml b/manifests/s/SST/opencode/0.3.18/SST.opencode.installer.yaml new file mode 100644 index 0000000000000..55ad4a92e1491 --- /dev/null +++ b/manifests/s/SST/opencode/0.3.18/SST.opencode.installer.yaml @@ -0,0 +1,18 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: SST.opencode +PackageVersion: 0.3.18 +InstallerType: zip +NestedInstallerType: portable +NestedInstallerFiles: +- RelativeFilePath: opencode.exe +Commands: +- opencode +ReleaseDate: 2025-07-17 +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/sst/opencode/releases/download/v0.3.18/opencode-windows-x64.zip + InstallerSha256: 822FE1A8EF255E0FB3FA14F60842FE84CE56E97DB4A56C9E5C9E03CBEA4149F2 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/s/SST/opencode/0.3.18/SST.opencode.locale.en-US.yaml b/manifests/s/SST/opencode/0.3.18/SST.opencode.locale.en-US.yaml new file mode 100644 index 0000000000000..a8d7185b28b48 --- /dev/null +++ b/manifests/s/SST/opencode/0.3.18/SST.opencode.locale.en-US.yaml @@ -0,0 +1,47 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: SST.opencode +PackageVersion: 0.3.18 +PackageLocale: en-US +Publisher: SST +PublisherUrl: https://sst.dev/ +PublisherSupportUrl: https://github.com/sst/opencode/issues +PackageName: opencode +PackageUrl: https://opencode.ai/ +License: MIT +LicenseUrl: https://github.com/sst/opencode/blob/HEAD/LICENSE +Copyright: Copyright (c) 2025 opencode +ShortDescription: The AI coding agent built for the terminal. +Description: |- + opencode is an AI coding agent built for the terminal. It features: + - A responsive, native, themeable terminal UI. + - Automatically loads the right LSPs, so the LLMs make fewer mistakes. + - Have multiple agents working in parallel on the same project. + - Create shareable links to any session for reference or to debug. + - Log in with Anthropic to use your Claude Pro or Claude Max account. + - Supports 75+ LLM providers through Models.dev, including local models. +Tags: +- ai +- code +- coding +- develop +- development +- programming +ReleaseNotes: |- + - Remove binary file opencode (#1069) + - fix: type 'reasoning' was provided without its required following item (#1072) + - docs(share): add explicit manual share mode (#1074) + - feat(tui): remove sharing info from session header when sharing is disabled (#1076) + - fix(tui): user defined ctrl+z should take precedence over suspending (#1088) + - fix: message error centering (#1085) + - feat(tui): remove share commands from help if sharing is disabled (#1087) + - feat(tui): highlight current session in sessions modal (#1093) + - tweak: allow mcp servers to include headers (#1096) + - feat: support AWS_BEARER_TOKEN_BEDROCK for amazon bedrock provider autoloading (#1094) +ReleaseNotesUrl: https://github.com/sst/opencode/releases/tag/v0.3.18 +Documentations: +- DocumentLabel: Docs + DocumentUrl: https://opencode.ai/docs/ +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/s/SST/opencode/0.3.18/SST.opencode.locale.zh-CN.yaml b/manifests/s/SST/opencode/0.3.18/SST.opencode.locale.zh-CN.yaml new file mode 100644 index 0000000000000..afb00324bb5eb --- /dev/null +++ b/manifests/s/SST/opencode/0.3.18/SST.opencode.locale.zh-CN.yaml @@ -0,0 +1,25 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: SST.opencode +PackageVersion: 0.3.18 +PackageLocale: zh-CN +ShortDescription: 专为终端打造的 AI 编程助手 +Description: |- + opencode 是一款专为终端打造的 AI 编程助手,具备以下特性: + - 响应式、原生、可主题定制的终端界面 + - 自动加载正确的 LSP,减少 LLM 的错误率 + - 支持多个智能体并行处理同一项目 + - 可为任何会话生成可分享链接,便于参考或调试 + - 支持通过 Anthropic 登录使用 Claude Pro 或 Claude Max 账户 + - 通过 Models.dev 集成 75+ 个 LLM 服务提供商,包括本地模型 +Tags: +- ai +- 代码 +- 开发 +- 编程 +Documentations: +- DocumentLabel: 文档 + DocumentUrl: https://opencode.ai/docs/ +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/s/SST/opencode/0.3.18/SST.opencode.yaml b/manifests/s/SST/opencode/0.3.18/SST.opencode.yaml new file mode 100644 index 0000000000000..991ca02802740 --- /dev/null +++ b/manifests/s/SST/opencode/0.3.18/SST.opencode.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: SST.opencode +PackageVersion: 0.3.18 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.installer.yaml b/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.installer.yaml new file mode 100644 index 0000000000000..281247b5b28b5 --- /dev/null +++ b/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.installer.yaml @@ -0,0 +1,27 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: SatoshiLabs.trezor-suite +PackageVersion: 25.7.3 +InstallerLocale: en-US +InstallerType: nullsoft +ProductCode: 978be57b-9286-5cd7-a60b-54c81352a986 +AppsAndFeaturesEntries: +- DisplayName: Trezor Suite 25.3.3 + ProductCode: 978be57b-9286-5cd7-a60b-54c81352a986 +Installers: +- Architecture: x64 + Scope: user + InstallerUrl: https://github.com/trezor/trezor-suite/releases/download/v25.7.3/Trezor-Suite-25.7.3-win-x64.exe + InstallerSha256: 737B1626CB672B0338113D4E2B05EF046DAD8418C86817481273A652BB160652 + InstallerSwitches: + Custom: /CURRENTUSER +- Architecture: x64 + Scope: machine + InstallerUrl: https://github.com/trezor/trezor-suite/releases/download/v25.7.3/Trezor-Suite-25.7.3-win-x64.exe + InstallerSha256: 737B1626CB672B0338113D4E2B05EF046DAD8418C86817481273A652BB160652 + InstallerSwitches: + Custom: /ALLUSERS +ManifestType: installer +ManifestVersion: 1.10.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.locale.en-US.yaml b/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.locale.en-US.yaml new file mode 100644 index 0000000000000..70268f9643905 --- /dev/null +++ b/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.locale.en-US.yaml @@ -0,0 +1,27 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: SatoshiLabs.trezor-suite +PackageVersion: 25.7.3 +PackageLocale: en-US +Publisher: SatoshiLabs +PublisherUrl: https://github.com/trezor +PublisherSupportUrl: https://github.com/trezor/trezor-suite/issues +Author: trezor +PackageName: Trezor Suite +PackageUrl: https://github.com/trezor/trezor-suite +License: TREZOR REFERENCE SOURCE LICENSE (T-RSL) +LicenseUrl: https://github.com/trezor/trezor-suite/blob/develop/LICENSE.md +ShortDescription: Trezor Suite desktop application +Tags: +- bitcoin +- electron +- suite +- trezor +- wallet +ReleaseNotesUrl: https://github.com/trezor/trezor-suite/releases/tag/v25.7.3 +Documentations: +- DocumentLabel: Wiki + DocumentUrl: https://github.com/trezor/trezor-suite/wiki +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.yaml b/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.yaml new file mode 100644 index 0000000000000..cf152059c081f --- /dev/null +++ b/manifests/s/SatoshiLabs/trezor-suite/25.7.3/SatoshiLabs.trezor-suite.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: SatoshiLabs.trezor-suite +PackageVersion: 25.7.3 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.installer.yaml b/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.installer.yaml new file mode 100644 index 0000000000000..9e2dbeee40ef3 --- /dev/null +++ b/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.installer.yaml @@ -0,0 +1,32 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.9.0.schema.json + +PackageIdentifier: Sigil-Ebook.Sigil +PackageVersion: 2.6.0 +Platform: +- Windows.Desktop +MinimumOSVersion: 10.0.17763.0 +InstallerType: inno +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +InstallerSwitches: + Upgrade: /NORESTART /SUPPRESSMSGBOXES /COMPONENTS="dicon,*afiles" +UpgradeBehavior: install +FileExtensions: +- epub +Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCRedist.2015+.x64 +ElevationRequirement: elevatesSelf +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/Sigil-Ebook/Sigil/releases/download/2.6.0/Sigil-2.6.0-Windows-x64-Setup.exe + InstallerSha256: 6BF21F5D5A236DDEB179324666B0E62C69F00FFF4919FF81CC115E950B85245B + InstallerSwitches: + Custom: /ALLUSERS /NORESTART /SUPPRESSMSGBOXES /COMPONENTS="dicon,*afiles" +ManifestType: installer +ManifestVersion: 1.9.0 +ReleaseDate: 2025-07-17 diff --git a/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.locale.en-US.yaml b/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.locale.en-US.yaml new file mode 100644 index 0000000000000..6f09dfa045df8 --- /dev/null +++ b/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.locale.en-US.yaml @@ -0,0 +1,25 @@ +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.9.0.schema.json + +PackageIdentifier: Sigil-Ebook.Sigil +PackageVersion: 2.6.0 +PackageLocale: en-US +Publisher: Sigil-Ebook +PublisherUrl: https://sigil-ebook.com +PublisherSupportUrl: https://sigil-ebook.com/sigil/support/ +Author: Sigil-Ebook +PackageName: Sigil +PackageUrl: https://sigil-ebook.com +License: GNU General Public License v3.0 +LicenseUrl: https://raw.githubusercontent.com/Sigil-Ebook/Sigil/master/COPYING.txt +CopyrightUrl: https://raw.githubusercontent.com/Sigil-Ebook/Sigil/master/COPYING.txt +ShortDescription: Sigil is a free, open source, multi-platform ebook editor that uses Qt (and QtWebEngine). It is designed to edit books in ePub format (both ePub 2 and ePub 3). +Moniker: sigil +Tags: +- e-book +- ebook +- ebook-editor +- epub +ReleaseNotesUrl: https://github.com/Sigil-Ebook/Sigil/releases/tag/2.6.0 +ManifestType: defaultLocale +ManifestVersion: 1.9.0 diff --git a/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.yaml b/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.yaml similarity index 50% rename from manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.yaml rename to manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.yaml index 5717f8c1bdcc1..8101e0d5332d5 100644 --- a/manifests/c/CDESoftware/BLS-2025/37.05.0005/CDESoftware.BLS-2025.yaml +++ b/manifests/s/Sigil-Ebook/Sigil/2.6.0/Sigil-Ebook.Sigil.yaml @@ -1,8 +1,8 @@ -# Created using wingetcreate 1.9.4.0 -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.9.0.schema.json - -PackageIdentifier: CDESoftware.BLS-2025 -PackageVersion: 37.05.0005 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.9.0 \ No newline at end of file +# Created using wingetcreate 1.10.2.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.9.0.schema.json + +PackageIdentifier: Sigil-Ebook.Sigil +PackageVersion: 2.6.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.9.0 diff --git a/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.installer.yaml b/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.installer.yaml new file mode 100644 index 0000000000000..eefceb98c5cc9 --- /dev/null +++ b/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.installer.yaml @@ -0,0 +1,26 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: SteelSeries.GG +PackageVersion: 90.0.0 +InstallerLocale: en-US +InstallerType: nullsoft +Scope: machine +InstallModes: +- interactive +- silent +UpgradeBehavior: install +ProductCode: SteelSeries GG +ReleaseDate: 2025-07-17 +AppsAndFeaturesEntries: +- DisplayName: SteelSeries GG 90.0.0 + ProductCode: SteelSeries GG +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles(x86)%\SteelSeries\GG' +Installers: +- Architecture: x64 + InstallerUrl: https://engine.steelseriescdn.com/SteelSeriesGG90.0.0Setup.exe + InstallerSha256: 1F64CB953853AF4444BE1B89E124983EDFBB6CBA08E49E8497B08A54BF25897A +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.locale.en-US.yaml b/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.locale.en-US.yaml new file mode 100644 index 0000000000000..a0d698c0c745f --- /dev/null +++ b/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.locale.en-US.yaml @@ -0,0 +1,44 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: SteelSeries.GG +PackageVersion: 90.0.0 +PackageLocale: en-US +Publisher: SteelSeries ApS +PublisherUrl: https://steelseries.com/gg +PublisherSupportUrl: https://support.steelseries.com/ +PrivacyUrl: https://steelseries.com/policies/privacy/ +Author: SteelSeries ApS +PackageName: SteelSeries GG +PackageUrl: https://steelseries.com/gg +License: Proprietary +LicenseUrl: https://steelseries.com/policies +Copyright: Copyright (c) SteelSeries ApS +ShortDescription: SteelSeries GG helps create better connections with your gear, your people and your game. +Description: |- + SteelSeries GG helps create better connections with your gear, your people and your game. + Try new services that enhance your game like the Moments gameplay clipping tool and manage your hardware from the same software platform. +Moniker: steelseriesgg +Tags: +- apex +- arctis +- controller +- engine +- gg +- headphones +- headset +- keyboard +- mice +- mouse +- mousepad +- qck +- rival +- sonar +- steelseriesengine +Documentations: +- DocumentLabel: Engine + DocumentUrl: https://steelseries.com/gg/engine +- DocumentLabel: Sonar + DocumentUrl: https://steelseries.com/gg/sonar +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.yaml b/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.yaml new file mode 100644 index 0000000000000..8e564ce3f3a81 --- /dev/null +++ b/manifests/s/SteelSeries/GG/90.0.0/SteelSeries.GG.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: SteelSeries.GG +PackageVersion: 90.0.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.installer.yaml b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.installer.yaml similarity index 73% rename from manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.installer.yaml rename to manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.installer.yaml index 4bf006e0c0e83..27634040f2120 100644 --- a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.installer.yaml +++ b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.installer.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: Superace.UPDF -PackageVersion: 2.0.3.0 +PackageVersion: 2.0.4.0 InstallerType: nullsoft Scope: machine UpgradeBehavior: install @@ -14,10 +14,10 @@ ProductCode: UPDF Installers: - Architecture: x64 InstallerUrl: https://download.updf.com/updf/basic/win/updf-9000000000-win-full.exe - InstallerSha256: D93FFE84B79A1E878F3B15884F64F8DDF1DFE4936161F6B28930A15CB52571AB + InstallerSha256: 24C3CA8C0F7BD04111526D67D0B71917CC5A5A5878C91470AF725E5E4359F329 - InstallerLocale: zh-CN Architecture: x64 InstallerUrl: https://download.updf.cn/updf/basic/win/updf-8000000000-win-full.exe - InstallerSha256: 76FA9D5958BC8A8732FAB86AF44C110BF3C936D8985EE665856307C09F0BA306 + InstallerSha256: 7D2B9CE126A039BF9C533D3B8B3F9DDE497925085E897E4B223380986664CF8D ManifestType: installer ManifestVersion: 1.10.0 diff --git a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.locale.en-US.yaml b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.locale.en-US.yaml similarity index 84% rename from manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.locale.en-US.yaml rename to manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.locale.en-US.yaml index 94706d71d9a1b..a5ffce8f0066d 100644 --- a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.locale.en-US.yaml +++ b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: Superace.UPDF -PackageVersion: 2.0.3.0 +PackageVersion: 2.0.4.0 PackageLocale: en-US Publisher: Superace Software Technology Co., Ltd. PublisherUrl: https://superace.com/ @@ -31,6 +31,10 @@ Tags: - read - reader - viewer +ReleaseNotes: |- + - The UPDF AI chat function now supports displaying LaTeX formulas. + - The measurement scale calibration function has been added. + - We have also fixed some issues reported by users, which has improved the software's performance and stability. ReleaseNotesUrl: https://updf.com/whats-new/ PurchaseUrl: https://updf.com/pricing-individuals/ Documentations: diff --git a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.locale.zh-CN.yaml b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.locale.zh-CN.yaml similarity index 85% rename from manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.locale.zh-CN.yaml rename to manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.locale.zh-CN.yaml index f4a0ba964d526..3c3f8c352c4a7 100644 --- a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.locale.zh-CN.yaml +++ b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.locale.zh-CN.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: Superace.UPDF -PackageVersion: 2.0.3.0 +PackageVersion: 2.0.4.0 PackageLocale: zh-CN Publisher: Superace Software Technology Co., Ltd. PublisherUrl: https://superace.com/ @@ -30,6 +30,10 @@ Tags: - 转换 - 阅读 - 阅读器 +ReleaseNotes: |- + - UPDF AI 对话功能现已支持显示 LaTeX 公式。 + - 新增测量比例尺校准功能。 + - 我们还修复了部分用户反馈的问题,从而提升了软件的性能和稳定性。 ReleaseNotesUrl: https://www.updf.cn/whats-new/ PurchaseUrl: https://checkout.updf.cn/updf Documentations: diff --git a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.yaml b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.yaml similarity index 88% rename from manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.yaml rename to manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.yaml index dc9a70f182203..9c72c8357bb16 100644 --- a/manifests/s/Superace/UPDF/2.0.3.0/Superace.UPDF.yaml +++ b/manifests/s/Superace/UPDF/2.0.4.0/Superace.UPDF.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: Superace.UPDF -PackageVersion: 2.0.3.0 +PackageVersion: 2.0.4.0 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/s/stacklok/thv/0.1.9/stacklok.thv.installer.yaml b/manifests/s/stacklok/thv/0.1.9/stacklok.thv.installer.yaml new file mode 100644 index 0000000000000..4e29d7fdbcb4f --- /dev/null +++ b/manifests/s/stacklok/thv/0.1.9/stacklok.thv.installer.yaml @@ -0,0 +1,26 @@ +# This file was generated by GoReleaser. DO NOT EDIT. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json +PackageIdentifier: stacklok.thv +PackageVersion: 0.1.9 +InstallerLocale: en-US +InstallerType: zip +ReleaseDate: "2025-07-17" +Installers: + - Architecture: arm64 + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: thv.exe + PortableCommandAlias: thv + InstallerUrl: https://github.com/stacklok/toolhive/releases/download/v0.1.9/toolhive_0.1.9_windows_arm64.zip + InstallerSha256: 778b7dc9ea44d7e508c2dd7e5a8828a5f9815be2162851e152d9f2bc9e29de54 + UpgradeBehavior: uninstallPrevious + - Architecture: x64 + NestedInstallerType: portable + NestedInstallerFiles: + - RelativeFilePath: thv.exe + PortableCommandAlias: thv + InstallerUrl: https://github.com/stacklok/toolhive/releases/download/v0.1.9/toolhive_0.1.9_windows_amd64.zip + InstallerSha256: 033da787cd059417188dba2815dd2ad4d3ff40e7492e0501ecc7cc25043625bd + UpgradeBehavior: uninstallPrevious +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/s/stacklok/thv/0.1.9/stacklok.thv.locale.en-US.yaml b/manifests/s/stacklok/thv/0.1.9/stacklok.thv.locale.en-US.yaml new file mode 100644 index 0000000000000..0537cba57cff7 --- /dev/null +++ b/manifests/s/stacklok/thv/0.1.9/stacklok.thv.locale.en-US.yaml @@ -0,0 +1,36 @@ +# This file was generated by GoReleaser. DO NOT EDIT. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json +PackageIdentifier: stacklok.thv +PackageVersion: 0.1.9 +PackageLocale: en-US +Publisher: stacklok +PublisherSupportUrl: https://github.com/stacklok/toolhive/issues/new/choose +PackageName: thv +PackageUrl: https://stacklok.com +License: Apache-2.0 +LicenseUrl: https://github.com/stacklok/toolhive/blob/main/LICENSE +Copyright: Stacklok, Inc. +ShortDescription: ToolHive is a lightweight, secure, and fast manager for MCP (Model Context Protocol) servers +Moniker: thv +Tags: + - golang + - cli + - mcp + - toolhive + - stacklok + - model-context-protocol + - mcp-server +ReleaseNotes: | + ## Changelog + * f1084bf19b8fe9c0ed0b07e6579ed77c83bda7b2: Add UI links to README (#1082) (@danbarr) + * a749c54a275cd86688747bf1123c871b490ccdf9: Print transport type in mcpserver-formatted list command (#1088) (@dmjb) + * 64af2b69b2ef5ece958e6fee17b185d72da56a42: Split Runtime interface between Deployer and Runtime (#1060) (@dmjb) + * 4acf5377630c90ede2e0d33172616e608c89ae29: Treat `--proxy-port` conflict as fatal error. (#1085) (@dmjb) + * 8e88d7cdd1f8773c899dca61d5070121fe792a18: Update MCP server descriptions (#1090) (@rdimitrov) + * 9f4aa8ba473803d01601cb68eb99e19c7273613e: Update registry with latest stars and pulls (#1087) (@github-actions[bot]) + * 5c638c0459932c61fdc7ea31be0792b838f669e6: chore(deps): update alpine docker tag to v3.22.1 (#1074) (@renovate[bot]) + * e4a207cdf9f87c73ba2fb53e2d851d5106630d1c: feat: add -l/--label flag to thv run and thv list commands (#1084) (@JAORMX) + * f09c00bfef23ea1682392ea47bbe68771bf5eeda: fix(deps): update kubernetes packages to v0.33.3 (#1076) (@renovate[bot]) + * 4fe0b18764c42d89d2fb7d530c3e2a18191add07: fix(deps): update module github.com/mark3labs/mcp-go to v0.34.0 (#1071) (@renovate[bot]) +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/s/stacklok/thv/0.1.9/stacklok.thv.yaml b/manifests/s/stacklok/thv/0.1.9/stacklok.thv.yaml new file mode 100644 index 0000000000000..2e7127a55ef38 --- /dev/null +++ b/manifests/s/stacklok/thv/0.1.9/stacklok.thv.yaml @@ -0,0 +1,7 @@ +# This file was generated by GoReleaser. DO NOT EDIT. +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json +PackageIdentifier: stacklok.thv +PackageVersion: 0.1.9 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.installer.yaml b/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.installer.yaml new file mode 100644 index 0000000000000..e61bb0ad1e6f6 --- /dev/null +++ b/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.installer.yaml @@ -0,0 +1,30 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: sunfish-shogi.shogihome +PackageVersion: 1.24.1 +InstallerLocale: en-US +InstallerType: zip +NestedInstallerType: nullsoft +NestedInstallerFiles: +- RelativeFilePath: ShogiHome Setup 1.24.1.exe +UpgradeBehavior: install +FileExtensions: +- csa +- jkf +- ki2 +- ki2u +- kif +- kifu +ProductCode: 692caf9f-2b82-5037-8dc6-3c12b81a2761 +ReleaseDate: 2025-07-17 +AppsAndFeaturesEntries: +- DisplayName: ShogiHome 1.24.1 + Publisher: Kubo, Ryosuke + ProductCode: 692caf9f-2b82-5037-8dc6-3c12b81a2761 +Installers: +- Architecture: x86 + InstallerUrl: https://github.com/sunfish-shogi/shogihome/releases/download/v1.24.1/release-v1.24.1-win.zip + InstallerSha256: BF7C61C6113AD87956172CA03513A3239840828098AD3E4FD9A1C8FD3EC990ED +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.locale.ja-JP.yaml b/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.locale.ja-JP.yaml new file mode 100644 index 0000000000000..ad84e2956ebef --- /dev/null +++ b/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.locale.ja-JP.yaml @@ -0,0 +1,34 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: sunfish-shogi.shogihome +PackageVersion: 1.24.1 +PackageLocale: ja-JP +Publisher: sunfish-shogi +PublisherUrl: https://github.com/sunfish-shogi +PublisherSupportUrl: https://github.com/sunfish-shogi/shogihome/issues +PackageName: ShogiHome +PackageUrl: https://github.com/sunfish-shogi/shogihome +License: MIT +LicenseUrl: https://github.com/sunfish-shogi/shogihome/blob/HEAD/LICENSE +Copyright: Copyright (c) 2022 Kubo Ryosuke +CopyrightUrl: https://github.com/sunfish-shogi/shogihome/blob/v1.19.4/LICENSE#L3C1-L3C32 +ShortDescription: 高機能な将棋の GUI +Description: コンピューターとの対局や棋譜の編集・検討 +Tags: +- electron +- shogi +- typescript +- usi +- vite +- vitejs +- vue +- vuejs +- vuejs3 +ReleaseNotes: |- + - ポートレイト表示で後手の駒台のドロップシャドウが盤の前面に表示される問題を修正 by @sunfish-shogi #1263 + - エンジン設定比較機能で未設定のオプションが無条件で差分に出る問題を修正 by @sunfish-shogi #1268 + Full Changelog: v1.24.0...v1.24.1 +ReleaseNotesUrl: https://github.com/sunfish-shogi/shogihome/releases/tag/v1.24.1 +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.yaml b/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.yaml new file mode 100644 index 0000000000000..14751be5acd11 --- /dev/null +++ b/manifests/s/sunfish-shogi/shogihome/1.24.1/sunfish-shogi.shogihome.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: sunfish-shogi.shogihome +PackageVersion: 1.24.1 +DefaultLocale: ja-JP +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.en-US.yaml b/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.en-US.yaml index 213b68dbf6a5d..4154ca057c135 100644 --- a/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.en-US.yaml +++ b/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.en-US.yaml @@ -1,15 +1,11 @@ # Created with YamlCreate.ps1 Dumplings Mod -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json PackageIdentifier: TRUSTSING.iDefender PackageVersion: 5.0.2.0 PackageLocale: en-US -Publisher: iMonitorSDK -PublisherUrl: https://trustsing.com/ Author: Shenzhen Chuangxin Changrong Network Co., Ltd. -PackageName: iDefender License: Proprietary -Copyright: Copyright ©️ Shenzhen Chuangxin Changrong Network Co., Ltd. ShortDescription: Endpoint Detection Defense and Response for Home Description: |- iDefender is 5D (Process Defense, File Defense, Network Defense, Registry Defense, Enhance Defense) Endpoint Active Defense System based on scene mode, it provides you with the ability to fully control your computer. Using iDefender can help you prevent ransomware, defend advanced threads, intercepting exploits, hardening system, and protecting privacy. @@ -19,6 +15,5 @@ Description: |- Tags: - hips - security -ReleaseNotesUrl: https://trustsing.com/idefender/#_5-0-2-0 -ManifestType: defaultLocale +ManifestType: locale ManifestVersion: 1.10.0 diff --git a/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.zh-CN.yaml b/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.zh-CN.yaml index 250a3d94f13f6..fcd80e45ded8f 100644 --- a/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.zh-CN.yaml +++ b/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.locale.zh-CN.yaml @@ -1,5 +1,5 @@ # Created with YamlCreate.ps1 Dumplings Mod -# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: TRUSTSING.iDefender PackageVersion: 5.0.2.0 @@ -21,5 +21,5 @@ ReleaseNotes: |- - 修复内置规则拦截 PIN 登录的问题 - 添加最新银狐的白加黑检测支持 ReleaseNotesUrl: https://trustsing.com/idefender/#_5-0-2-0 -ManifestType: locale +ManifestType: defaultLocale ManifestVersion: 1.10.0 diff --git a/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.yaml b/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.yaml index d1f9b2bcc00fc..ba0b11d4593ca 100644 --- a/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.yaml +++ b/manifests/t/TRUSTSING/iDefender/5.0.2.0/TRUSTSING.iDefender.yaml @@ -3,6 +3,6 @@ PackageIdentifier: TRUSTSING.iDefender PackageVersion: 5.0.2.0 -DefaultLocale: en-US +DefaultLocale: zh-CN ManifestType: version ManifestVersion: 1.10.0 diff --git a/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.installer.yaml b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.installer.yaml new file mode 100644 index 0000000000000..931d89bc3383a --- /dev/null +++ b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.installer.yaml @@ -0,0 +1,17 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Tencent.WeChat +PackageVersion: 3.9.12.55 +InstallerType: nullsoft +Scope: machine +UpgradeBehavior: install +Protocols: +- weixin +ProductCode: WeChat +Installers: +- Architecture: x64 + InstallerUrl: https://dldir1v6.qq.com/weixin/Windows/WeChatSetup.exe + InstallerSha256: D9EC77628FC2AF531CB2BCAAA35F827F1FB4C1AAEE98A1C4F0BB322D3CCE553F +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.en-US.yaml b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.en-US.yaml new file mode 100644 index 0000000000000..04ee887962a59 --- /dev/null +++ b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.en-US.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Tencent.WeChat +PackageVersion: 3.9.12.55 +PackageLocale: en-US +Publisher: 腾讯科技(深圳)有限公司 +PublisherUrl: https://www.wechat.com/en/ +PublisherSupportUrl: https://help.wechat.com/oshelpcenter +PrivacyUrl: https://www.wechat.com/en/privacy_policy.html +Author: Shenzhen Tencent Computer Systems Company Limited +PackageName: WeChat +PackageUrl: https://windows.weixin.qq.com/?lang=en_US +License: Freeware +LicenseUrl: https://www.wechat.com/en/service_terms.html +Copyright: Copyright © 2011-2024 Tencent. All Rights Reserved. +CopyrightUrl: https://www.tencent.com/en-us/statement.html +ShortDescription: Connecting a billion people with calls, chats and more +Description: Connecting over a billion people around the world, WeChat is a free messaging and calling app available on iOS, Android, Windows, and MacOS. Enjoy group chats that support voice and video calls, photos, videos, and stickers. +Moniker: weixin +Tags: +- call +- chat +- friends +- im +- instant-messaging +- message +- mini-programs +- moments +- send +- share +- talk +- voice +ReleaseNotes: Bug fixes and improvements. +ReleaseNotesUrl: https://blog.wechat.com/ +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.zh-Hans-CN.yaml b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.zh-Hans-CN.yaml new file mode 100644 index 0000000000000..07c9e99c7ee04 --- /dev/null +++ b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.zh-Hans-CN.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Tencent.WeChat +PackageVersion: 3.9.12.55 +PackageLocale: zh-Hans-CN +Publisher: 腾讯科技(深圳)有限公司 +PublisherUrl: https://weixin.qq.com/ +PrivacyUrl: https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy +Author: 深圳市腾讯计算机系统有限公司 +PackageName: 微信 +PackageUrl: https://windows.weixin.qq.com/?lang=zh_CN +License: 免费软件 +LicenseUrl: https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=default +Copyright: Copyright © 2011-2024 Tencent. All Rights Reserved. 腾讯公司 版权所有 +CopyrightUrl: https://www.tencent.com/zh-cn/statement.html +ShortDescription: 跨平台的通讯工具 +Description: 一款跨平台的通讯工具。支持单人、多人参与。通过手机网络发送语音、图片、视频和文字。 +Tags: +- im +- 信息 +- 共享 +- 分享 +- 发送 +- 好友 +- 小程序 +- 朋友 +- 朋友圈 +- 消息 +- 电话 +- 聊天 +- 语音 +- 通话 +ReleaseNotes: 修复了一些已知问题。 +ReleaseNotesUrl: https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_faq_list +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.zh-Hans.yaml b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.zh-Hans.yaml new file mode 100644 index 0000000000000..eea6f0ded4b54 --- /dev/null +++ b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.locale.zh-Hans.yaml @@ -0,0 +1,37 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Tencent.WeChat +PackageVersion: 3.9.12.55 +PackageLocale: zh-Hans +Publisher: 腾讯科技(深圳)有限公司 +PublisherUrl: https://www.wechat.com/zh_CN/ +PrivacyUrl: https://www.wechat.com/zh_CN/privacy_policy.html +Author: 深圳市腾讯计算机系统有限公司 +PackageName: 微信 +PackageUrl: https://windows.weixin.qq.com/?lang=zh_CN +License: 免费软件 +LicenseUrl: https://www.wechat.com/zh_CN/service_terms.html +Copyright: Copyright © 2011-2024 Tencent. All Rights Reserved. 腾讯公司 版权所有 +CopyrightUrl: https://www.tencent.com/zh-cn/statement.html +ShortDescription: 跨平台的通讯工具 +Description: 一款跨平台的通讯工具。支持单人、多人参与。通过手机网络发送语音、图片、视频和文字。 +Tags: +- im +- 信息 +- 共享 +- 分享 +- 发送 +- 好友 +- 小程序 +- 朋友 +- 朋友圈 +- 消息 +- 电话 +- 聊天 +- 语音 +- 通话 +ReleaseNotes: 修复了一些已知问题。 +ReleaseNotesUrl: https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_faq_list +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.yaml b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.yaml new file mode 100644 index 0000000000000..4752690f5e6d9 --- /dev/null +++ b/manifests/t/Tencent/WeChat/3.9.12.55/Tencent.WeChat.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Tencent.WeChat +PackageVersion: 3.9.12.55 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.installer.yaml b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.installer.yaml new file mode 100644 index 0000000000000..9a8f4e33dcab9 --- /dev/null +++ b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.installer.yaml @@ -0,0 +1,26 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: TheBrowserCompany.Arc +PackageVersion: 1.63.0.205 +Platform: +- Windows.Desktop +MinimumOSVersion: 10.0.18362.0 +InstallerType: msix +UpgradeBehavior: install +Dependencies: + PackageDependencies: + - PackageIdentifier: Microsoft.VCLibs.Desktop.14 + - PackageIdentifier: Microsoft.WindowsAppRuntime.1.5 +PackageFamilyName: TheBrowserCompany.Arc_ttt1ap7aakyb4 +Installers: +- Architecture: x64 + InstallerUrl: https://releases.arc.net/windows/prod/1.63.0.205/Arc.x64.msix + InstallerSha256: 20A47DB16FF50FF71735C9721B0E6ED92FF1C0AE3656720C841D09BFA241358E + SignatureSha256: 23600B970B84ED0D62D890AB4450FD81ABAA59C72F6701916DC44D966E2849E8 +- Architecture: arm64 + InstallerUrl: https://releases.arc.net/windows/prod/1.63.0.205/Arc.arm64.msix + InstallerSha256: 5D99E82699FDE3BE397C40721E9D307F0DCAEE7727AF4E5468B9730E79869508 + SignatureSha256: BB22DCEE455246C8254BA325AF1056B7E6DDC15DC910AD53E69FBB2D92459A1B +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.locale.en-US.yaml b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.locale.en-US.yaml new file mode 100644 index 0000000000000..673ff2f1f8738 --- /dev/null +++ b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.locale.en-US.yaml @@ -0,0 +1,29 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: TheBrowserCompany.Arc +PackageVersion: 1.63.0.205 +PackageLocale: en-US +Publisher: The Browser Company of New York +PublisherUrl: https://arc.net/ +PublisherSupportUrl: https://resources.arc.net/ +PrivacyUrl: https://arc.net/privacy +Author: THE BROWSER COMPANY OF NEW YORK INC. +PackageName: Arc +PackageUrl: https://arc.net/ +License: Proprietary +LicenseUrl: https://start.arc.net/terms-of-use +Copyright: Copyright 2024 The Browser Company. All rights reserved. +ShortDescription: Arc is a new browser that shapes itself to how you use the internet. It offers Spaces, Profiles, Split View, Themes, and more to organize and customize your online experience. +Tags: +- browser +- chromium +- internet +- web +- webpage +ReleaseNotesUrl: https://arc.net/windows/release-notes +Documentations: +- DocumentLabel: FAQ + DocumentUrl: https://arc.net/faq +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.locale.zh-CN.yaml b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.locale.zh-CN.yaml new file mode 100644 index 0000000000000..347fe19f3caf7 --- /dev/null +++ b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.locale.zh-CN.yaml @@ -0,0 +1,28 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: TheBrowserCompany.Arc +PackageVersion: 1.63.0.205 +PackageLocale: zh-CN +Publisher: The Browser Company of New York +PublisherUrl: https://arc.net/ +PublisherSupportUrl: https://resources.arc.net/ +PrivacyUrl: https://arc.net/privacy +Author: THE BROWSER COMPANY OF NEW YORK INC. +PackageName: Arc +PackageUrl: https://arc.net/ +License: 专有软件 +LicenseUrl: https://start.arc.net/terms-of-use +Copyright: Copyright 2024 The Browser Company. All rights reserved. +ShortDescription: Arc 是一款全新的浏览器,可以根据您使用互联网的方式进行调整。它提供“空间”、“配置文件”、“拆分视图”、“主题”等功能,组织和定制您的冲浪体验。 +Tags: +- chromium +- 互联网 +- 浏览器 +- 网页 +ReleaseNotesUrl: https://arc.net/windows/release-notes +Documentations: +- DocumentLabel: 常见问题 + DocumentUrl: https://arc.net/faq +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.yaml b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.yaml new file mode 100644 index 0000000000000..495a3cadc21bb --- /dev/null +++ b/manifests/t/TheBrowserCompany/Arc/1.63.0.205/TheBrowserCompany.Arc.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: TheBrowserCompany.Arc +PackageVersion: 1.63.0.205 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.installer.yaml b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.installer.yaml index 90993a69f7cd7..b767985b8d6fd 100644 --- a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.installer.yaml +++ b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.installer.yaml @@ -1,79 +1,80 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-2.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json - -PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer -PackageVersion: 6.9.0.202 -InstallerType: exe # InstallShield -Scope: machine -InstallModes: -- interactive -- silent -- silentWithProgress -InstallerSwitches: - Silent: /S /V/quiet /V/norestart - SilentWithProgress: /S /V/passive /V/norestart - InstallLocation: /V"INSTALLDIR=""""" - Log: /V"/log """"" -ExpectedReturnCodes: -- InstallerReturnCode: -1 - ReturnResponse: cancelledByUser -- InstallerReturnCode: 1 - ReturnResponse: invalidParameter -- InstallerReturnCode: 1150 - ReturnResponse: systemNotSupported -- InstallerReturnCode: 1201 - ReturnResponse: diskFull -- InstallerReturnCode: 1203 - ReturnResponse: invalidParameter -- InstallerReturnCode: 1601 - ReturnResponse: contactSupport -- InstallerReturnCode: 1602 - ReturnResponse: cancelledByUser -- InstallerReturnCode: 1618 - ReturnResponse: installInProgress -- InstallerReturnCode: 1623 - ReturnResponse: systemNotSupported -- InstallerReturnCode: 1625 - ReturnResponse: blockedByPolicy -- InstallerReturnCode: 1628 - ReturnResponse: invalidParameter -- InstallerReturnCode: 1633 - ReturnResponse: systemNotSupported -- InstallerReturnCode: 1638 - ReturnResponse: alreadyInstalled -- InstallerReturnCode: 1639 - ReturnResponse: invalidParameter -- InstallerReturnCode: 1641 - ReturnResponse: rebootInitiated -- InstallerReturnCode: 1640 - ReturnResponse: blockedByPolicy -- InstallerReturnCode: 1643 - ReturnResponse: blockedByPolicy -- InstallerReturnCode: 1644 - ReturnResponse: blockedByPolicy -- InstallerReturnCode: 1649 - ReturnResponse: blockedByPolicy -- InstallerReturnCode: 1650 - ReturnResponse: invalidParameter -- InstallerReturnCode: 1654 - ReturnResponse: systemNotSupported -- InstallerReturnCode: 3010 - ReturnResponse: rebootRequiredToFinish -UpgradeBehavior: install -FileExtensions: -- pex -- ptx -- ptz -Dependencies: - WindowsFeatures: - - WindowsMediaPlayer -ProductCode: '{EEB455A3-B75D-4351-858B-EA07DF9AA2FC}' -AppsAndFeaturesEntries: -- UpgradeCode: '{0DAC27C9-232F-48A4-8C84-487382340C24}' - InstallerType: msi -Installers: -- Architecture: x86 - InstallerUrl: https://cdn.thomsonreuters.com/esd/software/eTranscript-Mgr/E-Transcript%20Bundle%20Viewer-6.9.0.202.exe - InstallerSha256: 57B8EA2ECCAAAB6AB7628D072C4DB14051B889A4B6DBF32D2F9A57A829A34149 -ManifestType: installer -ManifestVersion: 1.10.0 +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer +PackageVersion: 6.9.0.202 +InstallerType: exe +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +InstallerSwitches: + Silent: /S /V/quiet /V/norestart + SilentWithProgress: /S /V/passive /V/norestart + InstallLocation: /V"INSTALLDIR=""""" + Log: /V"/log """"" +ExpectedReturnCodes: +- InstallerReturnCode: -1 + ReturnResponse: cancelledByUser +- InstallerReturnCode: 1 + ReturnResponse: invalidParameter +- InstallerReturnCode: 1150 + ReturnResponse: systemNotSupported +- InstallerReturnCode: 1201 + ReturnResponse: diskFull +- InstallerReturnCode: 1203 + ReturnResponse: invalidParameter +- InstallerReturnCode: 1601 + ReturnResponse: contactSupport +- InstallerReturnCode: 1602 + ReturnResponse: cancelledByUser +- InstallerReturnCode: 1618 + ReturnResponse: installInProgress +- InstallerReturnCode: 1623 + ReturnResponse: systemNotSupported +- InstallerReturnCode: 1625 + ReturnResponse: blockedByPolicy +- InstallerReturnCode: 1628 + ReturnResponse: invalidParameter +- InstallerReturnCode: 1633 + ReturnResponse: systemNotSupported +- InstallerReturnCode: 1638 + ReturnResponse: alreadyInstalled +- InstallerReturnCode: 1639 + ReturnResponse: invalidParameter +- InstallerReturnCode: 1641 + ReturnResponse: rebootInitiated +- InstallerReturnCode: 1640 + ReturnResponse: blockedByPolicy +- InstallerReturnCode: 1643 + ReturnResponse: blockedByPolicy +- InstallerReturnCode: 1644 + ReturnResponse: blockedByPolicy +- InstallerReturnCode: 1649 + ReturnResponse: blockedByPolicy +- InstallerReturnCode: 1650 + ReturnResponse: invalidParameter +- InstallerReturnCode: 1654 + ReturnResponse: systemNotSupported +- InstallerReturnCode: 3010 + ReturnResponse: rebootRequiredToFinish +UpgradeBehavior: install +FileExtensions: +- pex +- ptx +- ptz +Dependencies: + WindowsFeatures: + - WindowsMediaPlayer +ProductCode: '{EEB455A3-B75D-4351-858B-EA07DF9AA2FC}' +ReleaseDate: 2024-07-01 +AppsAndFeaturesEntries: +- UpgradeCode: '{0DAC27C9-232F-48A4-8C84-487382340C24}' + InstallerType: msi +Installers: +- Architecture: x86 + InstallerUrl: https://www.thomsonreuters.com/content/dam/helpandsupp/en-us/Topics/reallegal/files/etranscriptbundleviewer_6_9_0_202.exe + InstallerSha256: 57B8EA2ECCAAAB6AB7628D072C4DB14051B889A4B6DBF32D2F9A57A829A34149 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.en-US.yaml b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.en-US.yaml index 1f909fd99b9c7..7092e8d5ec042 100644 --- a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.en-US.yaml +++ b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.en-US.yaml @@ -1,33 +1,26 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-2.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json - -PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer -PackageVersion: 6.9.0.202 -PackageLocale: en-US -Publisher: Thomson Reuters -PublisherUrl: https://www.thomsonreuters.com/ -# PublisherSupportUrl: -PrivacyUrl: https://www.thomsonreuters.com/en/privacy-statement -Author: Thomson Reuters Corporation -PackageName: RealLegal E-Transcript Bundle Viewer -PackageUrl: https://legal.thomsonreuters.com/en/support/software-downloads/reallegal/e-transcript-bundle-viewer -License: Freeware -LicenseUrl: https://www.thomsonreuters.com/en/terms-of-use -Copyright: © 2024, Thomson Reuters. All rights reserved -CopyrightUrl: https://www.thomsonreuters.com/en/policies/copyright -ShortDescription: View transcripts, exhibits, and video created with the RealLegal line of products. -Description: |- - E-Transcript Bundle Viewer allows anyone to view transcripts, exhibits, and video created with the RealLegal line of products. - Use E-Transcript Bundle Viewer to open and work with E-Transcript .ptx files, E-Transcript .ptz Bundles and related exhibits, and Portable Exhibit .pex files. - No subscription is required to download and use this free software. -# Moniker: -# Tags: -# ReleaseNotes: -# ReleaseNotesUrl: -# PurchaseUrl: -# InstallationNotes: -Documentations: -- DocumentLabel: User Guide - DocumentUrl: https://legal.thomsonreuters.com/content/dam/ewp-m/documents/legal/en/pdf/product-download-documents/etransbundleviewer_ug.pdf -ManifestType: defaultLocale -ManifestVersion: 1.10.0 +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer +PackageVersion: 6.9.0.202 +PackageLocale: en-US +Publisher: Thomson Reuters +PublisherUrl: https://www.thomsonreuters.com/ +PrivacyUrl: https://www.thomsonreuters.com/en/privacy-statement +Author: Thomson Reuters Corporation +PackageName: RealLegal E-Transcript Bundle Viewer +PackageUrl: https://www.thomsonreuters.com/en-us/help/legal-products-software-downloads +License: Freeware +LicenseUrl: https://www.thomsonreuters.com/en/terms-of-use +Copyright: © 2024, Thomson Reuters. All rights reserved +CopyrightUrl: https://www.thomsonreuters.com/en/policies/copyright +ShortDescription: View transcripts, exhibits, and video created with the RealLegal line of products. +Description: |- + E-Transcript Bundle Viewer allows anyone to view transcripts, exhibits, and video created with the RealLegal line of products. + Use E-Transcript Bundle Viewer to open and work with E-Transcript .ptx files, E-Transcript .ptz Bundles and related exhibits, and Portable Exhibit .pex files. + No subscription is required to download and use this free software. +Documentations: +- DocumentLabel: User Guide + DocumentUrl: https://legal.thomsonreuters.com/content/dam/ewp-m/documents/legal/en/pdf/product-download-documents/etransbundleviewer_ug.pdf +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.zh-CN.yaml b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.zh-CN.yaml index 11e928aa7d249..ba2c18cd7ebe9 100644 --- a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.zh-CN.yaml +++ b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.locale.zh-CN.yaml @@ -1,33 +1,18 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-2.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json - -PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer -PackageVersion: 6.9.0.202 -PackageLocale: zh-CN -# Publisher: -# PublisherUrl: -# PublisherSupportUrl: -PrivacyUrl: https://www.thomsonreuters.com/zh-hans/privacy-statement -# Author: -# PackageName: -# PackageUrl: -License: 免费软件 -# LicenseUrl: -# Copyright: -# CopyrightUrl: -ShortDescription: 查看使用 RealLegal 产品系列创建的文字记录、附件和视频。 -Description: |- - E-Transcript Bundle Viewer 允许任何人查看使用 RealLegal 产品系列创建的文字记录、附件和视频。 - 使用 E-Transcript Bundle Viewer 可打开并处理 E-Transcript 的 .ptx 文件、E-Transcript .ptz 打包文件及相关附件,以及 Portable Exhibit 的 .pex 文件。 - 下载并使用此免费软件无需订阅。 -# Moniker: -# Tags: -# ReleaseNotes: -# ReleaseNotesUrl: -# PurchaseUrl: -# InstallationNotes: -Documentations: -- DocumentLabel: 用户指南 - DocumentUrl: https://legal.thomsonreuters.com/content/dam/ewp-m/documents/legal/en/pdf/product-download-documents/etransbundleviewer_ug.pdf -ManifestType: locale -ManifestVersion: 1.10.0 +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer +PackageVersion: 6.9.0.202 +PackageLocale: zh-CN +PrivacyUrl: https://www.thomsonreuters.com/zh-hans/privacy-statement +License: 免费软件 +ShortDescription: 查看使用 RealLegal 产品系列创建的文字记录、附件和视频。 +Description: |- + E-Transcript Bundle Viewer 允许任何人查看使用 RealLegal 产品系列创建的文字记录、附件和视频。 + 使用 E-Transcript Bundle Viewer 可打开并处理 E-Transcript 的 .ptx 文件、E-Transcript .ptz 打包文件及相关附件,以及 Portable Exhibit 的 .pex 文件。 + 下载并使用此免费软件无需订阅。 +Documentations: +- DocumentLabel: 用户指南 + DocumentUrl: https://legal.thomsonreuters.com/content/dam/ewp-m/documents/legal/en/pdf/product-download-documents/etransbundleviewer_ug.pdf +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.yaml b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.yaml index ea54c025298e7..4c51d6d109622 100644 --- a/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.yaml +++ b/manifests/t/ThomsonReuters/E-TranscriptBundleViewer/6.9.0.202/ThomsonReuters.E-TranscriptBundleViewer.yaml @@ -1,8 +1,8 @@ -# Created with YamlCreate.ps1 v2.4.6 $debug=NVS1.CRLF.7-5-2.Win32NT -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json - -PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer -PackageVersion: 6.9.0.202 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.10.0 +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: ThomsonReuters.E-TranscriptBundleViewer +PackageVersion: 6.9.0.202 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.installer.yaml b/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.installer.yaml new file mode 100644 index 0000000000000..20a93b3be9525 --- /dev/null +++ b/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.installer.yaml @@ -0,0 +1,26 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: voidtools.Everything.Alpha +PackageVersion: 1.5.0.1396a +Platform: +- Windows.Desktop +InstallerType: exe +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +InstallerSwitches: + Silent: /S +UpgradeBehavior: install +ReleaseDate: 2025-06-20 +Installers: +- Architecture: x86 + InstallerUrl: https://www.voidtools.com/Everything-1.5.0.1396a.x86-Setup.exe + InstallerSha256: 79447A25A593ADCBDC451B6C8C82970C509D8988F516427E6A26F44F21DF89BB +- Architecture: x64 + InstallerUrl: https://www.voidtools.com/Everything-1.5.0.1396a.x64-Setup.exe + InstallerSha256: 37F8F9359346B78A5E9820B5BAE73044366A299EAAEBA2D8A56FADF46BCC577E +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.locale.en-US.yaml b/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.locale.en-US.yaml new file mode 100644 index 0000000000000..14f6f00fe9adb --- /dev/null +++ b/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.locale.en-US.yaml @@ -0,0 +1,30 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: voidtools.Everything.Alpha +PackageVersion: 1.5.0.1396a +PackageLocale: en-US +Publisher: voidtools +PublisherUrl: https://www.voidtools.com/ +PublisherSupportUrl: https://www.voidtools.com/support/everything/ +PrivacyUrl: https://www.voidtools.com/privacy +Author: voidtools +PackageName: Everything (Alpha) +PackageUrl: https://www.voidtools.com/forum/viewtopic.php?f=12&t=9787 +License: MIT License +LicenseUrl: https://www.voidtools.com/License.txt +Copyright: Copyright (C) 2022 voidtools +CopyrightUrl: https://www.voidtools.com/License.txt +ShortDescription: Locate files and folders by name instantly. +Description: | + Everything is search engine that locates files and folders by filename instantly for Windows. + Unlike Windows search Everything initially displays every file and folder on your computer (hence the name Everything). You type in a search filter to limit what files and folders are displayed. +Moniker: everything-alpha +Tags: +- alpha +- file-search +- filesystem +- indexing +- search +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.yaml b/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.yaml new file mode 100644 index 0000000000000..9d20802e4bce4 --- /dev/null +++ b/manifests/v/voidtools/Everything/Alpha/1.5.0.1396a/voidtools.Everything.Alpha.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: voidtools.Everything.Alpha +PackageVersion: 1.5.0.1396a +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.installer.yaml b/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.installer.yaml new file mode 100644 index 0000000000000..ce5720313f008 --- /dev/null +++ b/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.installer.yaml @@ -0,0 +1,27 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: WiseCleaner.WiseDataRecovery +PackageVersion: 6.2.0 +InstallerLocale: en-US +InstallerType: inno +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +UpgradeBehavior: install +ProductCode: Wise Data Recovery_is1 +ReleaseDate: 2024-09-13 +AppsAndFeaturesEntries: +- Publisher: Lespeed Technology Co., Ltd + ProductCode: Wise Data Recovery_is1 +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\Wise\Wise Data Recovery' +Installers: +- Architecture: x86 + InstallerUrl: https://downloads.wisecleaner.com/soft/WDRSetup_6.2.0.517.exe + InstallerSha256: F28A555956DBE163A0CDAF4B877F42B725B23C129DA4B05110C6AD6436B6996A +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.locale.en-US.yaml b/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.locale.en-US.yaml new file mode 100644 index 0000000000000..3fdf92011e526 --- /dev/null +++ b/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.locale.en-US.yaml @@ -0,0 +1,31 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: WiseCleaner.WiseDataRecovery +PackageVersion: 6.2.0 +PackageLocale: en-US +Publisher: WiseCleaner.com, Inc. +PublisherUrl: https://www.wisecleaner.com/ +PublisherSupportUrl: https://www.wisecleaner.com/help.html +PrivacyUrl: https://www.wisecleaner.com/privacy.html +Author: WiseCleaner +PackageName: Wise Data Recovery +PackageUrl: https://www.wisecleaner.com/wise-data-recovery.html +License: Freeware +Copyright: Copyright (c) 2006-2025 WiseCleaner. All rights reserved. +ShortDescription: Professional Data Recovery Tool +Description: Professional Data Recovery Tool. Free to recover 2 GB of data. Easily & quickly recover deleted photos, documents, videos, email, etc. Recover data from local drives, external drives, USB drives, SD cards, mobile phones, and other removable devices. +Moniker: wisedatarecovery +Tags: +- data-recovery +- recovery +- restore-lost-files +- wdr +PurchaseUrl: https://www.wisecleaner.com/wise-data-recovery.html +Documentations: +- DocumentLabel: Online Help + DocumentUrl: https://www.wisecleaner.com/help/wisedatarecovery/ +- DocumentLabel: Language Packs of Wise Data Recovery + DocumentUrl: https://www.wisecleaner.com/language_WiseDataRecovery_3.html +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.yaml b/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.yaml new file mode 100644 index 0000000000000..ae4ddd5d4f7cf --- /dev/null +++ b/manifests/w/WiseCleaner/WiseDataRecovery/6.2.0/WiseCleaner.WiseDataRecovery.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: WiseCleaner.WiseDataRecovery +PackageVersion: 6.2.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.installer.yaml b/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.installer.yaml new file mode 100644 index 0000000000000..d138fe9077f86 --- /dev/null +++ b/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.installer.yaml @@ -0,0 +1,27 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: WiseCleaner.WiseFolderHider +PackageVersion: 5.0.8 +InstallerLocale: en-US +InstallerType: inno +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +UpgradeBehavior: install +ProductCode: Wise Folder Hider_is1 +ReleaseDate: 2025-01-02 +AppsAndFeaturesEntries: +- Publisher: Lespeed Technology Co., Ltd. + ProductCode: Wise Folder Hider_is1 +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\Wise\Wise Folder Hider' +Installers: +- Architecture: x86 + InstallerUrl: https://downloads.wisecleaner.com/soft/WFHSetup_5.0.8.238.exe + InstallerSha256: A289725510FC16AA848FDAFCF50DF9316DC47446AC920C730C88154BCF228EB5 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.locale.en-US.yaml b/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.locale.en-US.yaml new file mode 100644 index 0000000000000..a03906f93dd19 --- /dev/null +++ b/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.locale.en-US.yaml @@ -0,0 +1,34 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: WiseCleaner.WiseFolderHider +PackageVersion: 5.0.8 +PackageLocale: en-US +Publisher: WiseCleaner.com, Inc. +PublisherUrl: https://www.wisecleaner.com/ +PublisherSupportUrl: https://www.wisecleaner.com/help.html +PrivacyUrl: https://www.wisecleaner.com/privacy.html +Author: WiseCleaner +PackageName: Wise Folder Hider +PackageUrl: https://www.wisecleaner.com/wise-folder-hider-free.html +License: Proprietary +Copyright: Copyright (c) 2006-2025 WiseCleaner. All rights reserved. +ShortDescription: Free File/Folder Hidden Tool +Description: |- + Wise Folder Hider is a free privacy tool for Windows that hides and password-protects files, folders, or USB drives locally, preventing unauthorized access without encryption or cloud storage. + + Key Features: + - Instant Hiding: Makes sensitive data invisible in Windows Explorer/File Explorer. + = Password Lock: Adds basic access control to hidden items (AES-256 encryption in paid version). + = Stealth Mode: Runs minimized/without tray icon. +Moniker: wisefolderhider +PurchaseUrl: https://www.wisecleaner.com/wise-folder-hider.html +Documentations: +- DocumentLabel: Online Help + DocumentUrl: https://www.wisecleaner.com/help/wisefolderhider/ +- DocumentLabel: Community Forum + DocumentUrl: https://forum.wisecleaner.com/ +- DocumentLabel: Language Packs of Wise Data Recovery + DocumentUrl: https://www.wisecleaner.com/language_WiseFolderHiderFree_4.html +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.yaml b/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.yaml new file mode 100644 index 0000000000000..aa9af6fe3c1af --- /dev/null +++ b/manifests/w/WiseCleaner/WiseFolderHider/5.0.8/WiseCleaner.WiseFolderHider.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: WiseCleaner.WiseFolderHider +PackageVersion: 5.0.8 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.installer.yaml b/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.installer.yaml new file mode 100644 index 0000000000000..3c8212ceff083 --- /dev/null +++ b/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.installer.yaml @@ -0,0 +1,22 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: XIU2.CloudflareSpeedTest +PackageVersion: 2.3.2 +InstallerType: zip +NestedInstallerType: portable +NestedInstallerFiles: +- RelativeFilePath: cfst.exe +ReleaseDate: 2025-07-09 +Installers: +- Architecture: x86 + InstallerUrl: https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.3.2/cfst_windows_386.zip + InstallerSha256: 98F142A6D9BB6F647D79D27F2957B1953FFD973A6C02CC48221227A8AC722F2F +- Architecture: x64 + InstallerUrl: https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.3.2/cfst_windows_amd64.zip + InstallerSha256: BC43B0012A2AEE361E01F97BC1F0D50DC7E4D41D7F927C198F4E6A7DE6198530 +- Architecture: arm64 + InstallerUrl: https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.3.2/cfst_windows_arm64.zip + InstallerSha256: D9C27332177E80919B5732D031E15245CAA5C583BE28039678FC9A78964527C8 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.locale.zh-CN.yaml b/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.locale.zh-CN.yaml new file mode 100644 index 0000000000000..53251a6c3e7ce --- /dev/null +++ b/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.locale.zh-CN.yaml @@ -0,0 +1,68 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: XIU2.CloudflareSpeedTest +PackageVersion: 2.3.2 +PackageLocale: zh-CN +Publisher: XIU2 +PublisherUrl: https://github.com/XIU2 +PublisherSupportUrl: https://github.com/XIU2/CloudflareSpeedTest/issues +PackageName: CloudflareSpeedTest +PackageUrl: https://github.com/XIU2/CloudflareSpeedTest +License: GPL-3.0 +LicenseUrl: https://github.com/XIU2/CloudflareSpeedTest/blob/HEAD/LICENSE +ShortDescription: 国外很多网站都在使用 Cloudflare CDN,但分配给中国内地访客的 IP 并不友好(延迟高、丢包多、速度慢)。虽然 Cloudflare 公开了所有 IP 段 ,但想要在这么多 IP 中找到适合自己的,怕是要累死,于是就有了这个软件。 +Tags: +- cdn +- cloudflare +- go +- golang +- speedtest +ReleaseNotes: |- + 更新内容 + 1. 修复 调试模式下因重定向后的地址出错,导致下载测速失败时,输出的最终地址不准确的问题 + 现在能正确显示是下载测速地址本身出错,还是其重定向后的新地址出错,以便正确定位问题 + 国内用户建议从蓝奏云下载:https://xiu.lanzoub.com/b0742hkxe + > 注意!windows_arm64 版本是提供给 ARM 架构的,别下错了! + ───────┬──────┬─────┬─────────────────────────────── + 系统 │架构 │32/64│文件选择 + ───────┼──────┼─────┼─────────────────────────────── + MacOS │x86_64│64 位│cfst_darwin_amd64.zip + ───────┼──────┼─────┼─────────────────────────────── + MacOS │ARM v8│64 位│cfst_darwin_arm64.zip + ───────┼──────┼─────┼─────────────────────────────── + Linux │x86 │32 位│cfst_linux_386.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │x86_64│64 位│cfst_linux_amd64.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │ARM v8│64 位│cfst_linux_arm64.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │ARM v5│32 位│cfst_linux_armv5.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │ARM v6│32 位│cfst_linux_armv6.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │ARM v7│32 位│cfst_linux_armv7.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │Mips │32 位│cfst_linux_mips.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │Mips │64 位│cfst_linux_mips64.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │Mipsle│32 位│cfst_linux_mipsle.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Linux │Mipsle│64 位│cfst_linux_mips64le.tar.gz + ───────┼──────┼─────┼─────────────────────────────── + Windows│x86 │32 位│cfst_windows_386.zip + ───────┼──────┼─────┼─────────────────────────────── + Windows│x86_64│64 位│cfst_windows_amd64.zip + ───────┼──────┼─────┼─────────────────────────────── + Windows│ARM v8│64 位│cfst_windows_arm64.zip + ───────┴──────┴─────┴─────────────────────────────── + > 路由器一般是 Mips、Mipsle、ARM 架构,可以通过运行 uname -m;cat /proc/cpuinfo|grep 'model name' 命令来判断(如果输出 aarch64 那么其实指的就是 ARM v8(或者叫 ARM64)),实在不清楚可以挨个都试试,能正常运行就代表选对了。 + > 路由器如果是 OpenWrt 固件,也可以尝试使用原生 OpenWrt 编译版本:原生 OpenWrt 编译运行支持 + > Android 手机大都是 ARM 架构,自行测试是 32 位(v5 / v6 / v7)还是 64 位(v8):Android 手机运行教程 + > IOS 手机要取决于安装的虚拟机是什么架构,有兴趣的可以参考一下:IOS 手机运行教程 + > Linux 系统中解压 tar.gz 压缩格式的命令:tar -zxf cfst_linux_XXX.tar.gz + > MacOS 系统下,请通过命令行进入 CFST 目录,并和 Linux 系统一样通过 ./cfst 来运行。 +ReleaseNotesUrl: https://github.com/XIU2/CloudflareSpeedTest/releases/tag/v2.3.2 +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.yaml b/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.yaml new file mode 100644 index 0000000000000..96b736fd11930 --- /dev/null +++ b/manifests/x/XIU2/CloudflareSpeedTest/2.3.2/XIU2.CloudflareSpeedTest.yaml @@ -0,0 +1,8 @@ +# Created with komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: XIU2.CloudflareSpeedTest +PackageVersion: 2.3.2 +DefaultLocale: zh-CN +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.installer.yaml b/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.installer.yaml new file mode 100644 index 0000000000000..eef19ae984ffb --- /dev/null +++ b/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.installer.yaml @@ -0,0 +1,29 @@ +# Created with WinGet Releaser using komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: xLightsSequencer.xLights +PackageVersion: '2025.07' +InstallerLocale: en-US +InstallerType: inno +Scope: machine +InstallModes: +- interactive +- silent +- silentWithProgress +InstallerSwitches: + Silent: /sp- /verysilent /norestart + SilentWithProgress: /sp- /silent /norestart +UpgradeBehavior: install +ProductCode: xLights_is1 +ReleaseDate: 2025-07-17 +AppsAndFeaturesEntries: +- ProductCode: xLights_is1 +ElevationRequirement: elevatesSelf +InstallationMetadata: + DefaultInstallLocation: '%ProgramFiles%\xLights' +Installers: +- Architecture: x64 + InstallerUrl: https://github.com/xLightsSequencer/xLights/releases/download/2025.07/xLights64_2025_7.exe + InstallerSha256: 8BCCB5A23C6A4F4DDB6DA82368CB58240F5BBF5A472966A76F20D07CD0ADB288 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.locale.en-US.yaml b/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.locale.en-US.yaml new file mode 100644 index 0000000000000..4c13b3502f51a --- /dev/null +++ b/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.locale.en-US.yaml @@ -0,0 +1,16 @@ +# Created with WinGet Releaser using komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: xLightsSequencer.xLights +PackageVersion: '2025.07' +PackageLocale: en-US +Publisher: xLightsSequencer +PublisherUrl: https://github.com/xLightsSequencer/ +PublisherSupportUrl: https://github.com/xLightsSequencer/xLights/issues +PackageName: xLights +PackageUrl: https://github.com/xLightsSequencer/xLights +License: GPL-3.0 +LicenseUrl: https://github.com/xLightsSequencer/xLights/blob/HEAD/License.txt +ShortDescription: xLights is a free and open source program that enables you to design, create and play amazing lighting displays through the use of DMX controllers, E1.31 Ethernet controllers and more. +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.yaml b/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.yaml new file mode 100644 index 0000000000000..c3fd83a38464c --- /dev/null +++ b/manifests/x/xLightsSequencer/xLights/2025.07/xLightsSequencer.xLights.yaml @@ -0,0 +1,8 @@ +# Created with WinGet Releaser using komac v2.12.1 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: xLightsSequencer.xLights +PackageVersion: '2025.07' +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/y/Yandex/Music/5.60.0/Yandex.Music.installer.yaml b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.installer.yaml new file mode 100644 index 0000000000000..7592ac9257815 --- /dev/null +++ b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.installer.yaml @@ -0,0 +1,18 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: Yandex.Music +PackageVersion: 5.60.0 +InstallerType: nullsoft +Scope: user +InstallerSwitches: + Upgrade: --updated +UpgradeBehavior: install +ProductCode: 49494f9d-1887-5500-9c55-ef4cf0614971 +ReleaseDate: 2025-07-15 +Installers: +- Architecture: x64 + InstallerUrl: https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.60.0.exe + InstallerSha256: 4C9F4AD85C4BF49884834E2CF65A7ED1A38A8F01F699AF4CC2869D2154970230 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/y/Yandex/Music/5.60.0/Yandex.Music.locale.en-US.yaml b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.locale.en-US.yaml new file mode 100644 index 0000000000000..7eb3afd0d567e --- /dev/null +++ b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.locale.en-US.yaml @@ -0,0 +1,31 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: Yandex.Music +PackageVersion: 5.60.0 +PackageLocale: en-US +Publisher: Яндекс Музыка +PublisherUrl: https://yandex.com/ +PublisherSupportUrl: https://yandex.com/support/music/ +PrivacyUrl: https://yandex.com/legal/confidential/ +Author: YANDEX LLC +PackageName: Яндекс Музыка +PackageUrl: https://music.yandex.com/ +License: Proprietary +LicenseUrl: https://yandex.com/legal/desktop_software_agreement/ +Copyright: Copyright © 2024 Яндекс Музыка +ShortDescription: Yandex Music is a service for finding and listening to music and podcasts that provides personalized recommendations for each user. +Tags: +- album +- artist +- audio +- episode +- music +- playlist +- podcast +- radio +- song +- sound +- streaming +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/y/Yandex/Music/5.60.0/Yandex.Music.locale.zh-CN.yaml b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.locale.zh-CN.yaml new file mode 100644 index 0000000000000..0dab601345192 --- /dev/null +++ b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.locale.zh-CN.yaml @@ -0,0 +1,31 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: Yandex.Music +PackageVersion: 5.60.0 +PackageLocale: zh-CN +Publisher: Яндекс Музыка +PublisherUrl: https://yandex.com/ +PublisherSupportUrl: https://yandex.com/support/music/ +PrivacyUrl: https://yandex.com/legal/confidential/ +Author: YANDEX LLC +PackageName: Яндекс Музыка +PackageUrl: https://music.yandex.com/ +License: 专有软件 +LicenseUrl: https://yandex.com/legal/desktop_software_agreement/ +Copyright: Copyright © 2024 Яндекс Музыка +ShortDescription: Yandex Music 是一项寻找和收听音乐和播客的服务,可为每位用户提供个性化推荐。 +Tags: +- 专辑 +- 广播 +- 播客 +- 歌单 +- 歌手 +- 歌曲 +- 流媒体 +- 艺人 +- 节目 +- 音乐 +- 音频 +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/y/Yandex/Music/5.60.0/Yandex.Music.yaml b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.yaml new file mode 100644 index 0000000000000..e0cfd74d3001d --- /dev/null +++ b/manifests/y/Yandex/Music/5.60.0/Yandex.Music.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: Yandex.Music +PackageVersion: 5.60.0 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0 diff --git a/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.installer.yaml b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.installer.yaml new file mode 100644 index 0000000000000..8d085c41b4287 --- /dev/null +++ b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.installer.yaml @@ -0,0 +1,23 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json + +PackageIdentifier: ZWSOFT.NetworkLicenseManager +PackageVersion: 1.3.9 +InstallerType: exe +Scope: machine +InstallModes: +- interactive +- silent +InstallerSwitches: + Silent: /install /quiet + SilentWithProgress: /install /quiet + InstallLocation: /dir "" +UpgradeBehavior: install +ProductCode: '{B53D2C4E-E455-4441-B2D2-539C6D889782}' +ReleaseDate: 2025-06-30 +Installers: +- Architecture: x64 + InstallerUrl: https://upgrade-online.zwsoft.cn/server/ZWSOFT_NetworkLicenseManager_64bit_1.3.9_8a2dcdd.exe + InstallerSha256: F2A29585F9AAACA85BAAD63300E5A7BD55934C3115295695A6814A9CA42FB8A9 +ManifestType: installer +ManifestVersion: 1.10.0 diff --git a/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.locale.en-US.yaml b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.locale.en-US.yaml new file mode 100644 index 0000000000000..d35b4bb90acf7 --- /dev/null +++ b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.locale.en-US.yaml @@ -0,0 +1,17 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json + +PackageIdentifier: ZWSOFT.NetworkLicenseManager +PackageVersion: 1.3.9 +PackageLocale: en-US +Publisher: ZWSOFT CO., LTD.(Guangzhou) +PublisherUrl: https://www.zwsoft.com/ +PublisherSupportUrl: https://www.zwsoft.com/support/zwcad +PrivacyUrl: https://www.zwsoft.com/privacy +Author: ZWSOFT CO., LTD.(Guangzhou) +PackageName: ZWSOFT Network License Manager +License: Proprietary +Copyright: © 1998-2024 ZWSOFT CO., LTD.(Guangzhou). All rights reserved. +ShortDescription: Manage network licenses for ZWSOFT products +ManifestType: defaultLocale +ManifestVersion: 1.10.0 diff --git a/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.locale.zh-CN.yaml b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.locale.zh-CN.yaml new file mode 100644 index 0000000000000..cdbd7d70bde63 --- /dev/null +++ b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.locale.zh-CN.yaml @@ -0,0 +1,17 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.1.10.0.schema.json + +PackageIdentifier: ZWSOFT.NetworkLicenseManager +PackageVersion: 1.3.9 +PackageLocale: zh-CN +Publisher: ZWSOFT CO., LTD.(Guangzhou) +PublisherUrl: https://www.zwsoft.cn/ +PublisherSupportUrl: https://www.zwsoft.cn/support/zwcad +PrivacyUrl: https://www.zwsoft.cn/privacy +Author: 广州中望龙腾软件股份有限公司 +PackageName: ZWSOFT Network License Manager +License: 专有软件 +Copyright: © 1998-2024 广州中望龙腾软件股份有限公司版权所有。 +ShortDescription: 中望网络许可证管理程序 +ManifestType: locale +ManifestVersion: 1.10.0 diff --git a/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.yaml b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.yaml new file mode 100644 index 0000000000000..7e97724c30a8d --- /dev/null +++ b/manifests/z/ZWSOFT/NetworkLicenseManager/1.3.9/ZWSOFT.NetworkLicenseManager.yaml @@ -0,0 +1,8 @@ +# Created with YamlCreate.ps1 Dumplings Mod +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json + +PackageIdentifier: ZWSOFT.NetworkLicenseManager +PackageVersion: 1.3.9 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.10.0