docs/vso-distribution.schema.json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Implemented VSO distribution contracts",
  "oneOf": [
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "product",
        "generation",
        "version",
        "platform",
        "adapter",
        "launcher",
        "launcherType",
        "requirements",
        "filesManifest",
        "persistentData",
        "update",
        "uninstall"
      ],
      "properties": {
        "schemaVersion": {
          "const": 1
        },
        "product": {
          "const": "VicoSafeOptimizer"
        },
        "generation": {
          "const": "7"
        },
        "version": {
          "type": "string",
          "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
        },
        "platform": {
          "const": "windows-x64"
        },
        "adapter": {
          "const": "vso7-classic-v1"
        },
        "launcher": {
          "const": "START VSO7.bat"
        },
        "launcherType": {
          "const": "Batch"
        },
        "requirements": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "host",
            "minimumVersion",
            "architecture"
          ],
          "properties": {
            "host": {
              "type": "string"
            },
            "minimumVersion": {
              "type": "string"
            },
            "architecture": {
              "const": "x64"
            }
          }
        },
        "filesManifest": {
          "const": "SHA256SUMS.txt"
        },
        "persistentData": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "base",
              "path",
              "ownership",
              "removeByDefault"
            ],
            "properties": {
              "base": {
                "enum": [
                  "Installation",
                  "ProgramData",
                  "LocalAppData"
                ]
              },
              "path": {
                "type": "string",
                "minLength": 1
              },
              "ownership": {
                "enum": [
                  "Installation",
                  "SharedOrUntracked"
                ]
              },
              "removeByDefault": {
                "type": "boolean"
              }
            }
          }
        },
        "update": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "compatibleGenerations",
            "preserveUnknownFiles"
          ],
          "properties": {
            "compatibleGenerations": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "preserveUnknownFiles": {
              "const": true
            }
          }
        },
        "uninstall": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "restoreWindowsTweaks",
            "preserveUnknownFiles"
          ],
          "properties": {
            "restoreWindowsTweaks": {
              "const": false
            },
            "preserveUnknownFiles": {
              "const": true
            }
          }
        }
      }
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "product",
        "generation",
        "version",
        "platform",
        "adapter",
        "launcher",
        "launcherType",
        "requirements",
        "filesManifest",
        "persistentData",
        "update",
        "uninstall",
        "packageType",
        "requiredFiles",
        "optionalFiles"
      ],
      "properties": {
        "schemaVersion": {
          "const": 2
        },
        "product": {
          "const": "VicoSafeOptimizer"
        },
        "generation": {
          "const": "7"
        },
        "version": {
          "type": "string",
          "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
        },
        "platform": {
          "const": "windows-x64"
        },
        "adapter": {
          "const": "vso7-classic-v1"
        },
        "launcher": {
          "const": "START VSO7.bat"
        },
        "launcherType": {
          "const": "Batch"
        },
        "requirements": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "host",
            "minimumVersion",
            "architecture"
          ],
          "properties": {
            "host": {
              "type": "string"
            },
            "minimumVersion": {
              "type": "string"
            },
            "architecture": {
              "const": "x64"
            }
          }
        },
        "filesManifest": {
          "const": "SHA256SUMS.txt"
        },
        "persistentData": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "base",
              "path",
              "ownership",
              "removeByDefault"
            ],
            "properties": {
              "base": {
                "enum": [
                  "Installation",
                  "ProgramData",
                  "LocalAppData"
                ]
              },
              "path": {
                "type": "string",
                "minLength": 1
              },
              "ownership": {
                "enum": [
                  "Installation",
                  "SharedOrUntracked"
                ]
              },
              "removeByDefault": {
                "type": "boolean"
              }
            }
          }
        },
        "update": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "compatibleGenerations",
            "preserveUnknownFiles"
          ],
          "properties": {
            "compatibleGenerations": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "preserveUnknownFiles": {
              "const": true
            }
          }
        },
        "uninstall": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "restoreWindowsTweaks",
            "preserveUnknownFiles"
          ],
          "properties": {
            "restoreWindowsTweaks": {
              "const": false
            },
            "preserveUnknownFiles": {
              "const": true
            }
          }
        },
        "packageType": {
          "const": "PortableZip"
        },
        "requiredFiles": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "path",
              "role"
            ],
            "properties": {
              "path": {
                "type": "string",
                "minLength": 1
              },
              "role": {
                "enum": [
                  "Application",
                  "Configuration",
                  "Cache",
                  "Log",
                  "Temporary",
                  "Recovery"
                ]
              }
            }
          }
        },
        "optionalFiles": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "path",
              "role"
            ],
            "properties": {
              "path": {
                "type": "string",
                "minLength": 1
              },
              "role": {
                "enum": [
                  "Application",
                  "Configuration",
                  "Cache",
                  "Log",
                  "Temporary",
                  "Recovery"
                ]
              }
            }
          }
        }
      }
    }
  ]
}