@@ -37,6 +37,36 @@ class DesktopWorkstationLogic extends BaseLogic
|
||||
public static function getConfig(): array
|
||||
{
|
||||
return self::present(self::loadStored());
|
||||
}
|
||||
|
||||
/** 医生公告使用的安装包清单,与自动升级检测开关独立。 */
|
||||
public static function downloads(): array
|
||||
{
|
||||
return self::downloadCatalog(self::getConfig());
|
||||
}
|
||||
|
||||
public static function downloadCatalog(array $config): array
|
||||
{
|
||||
$labels = [
|
||||
'windows_x64' => 'Windows 64位',
|
||||
'macos_arm64' => 'macOS(Apple芯片)',
|
||||
'macos_x64' => 'macOS(Intel芯片)',
|
||||
];
|
||||
$packages = [];
|
||||
foreach (self::PLATFORMS as $platform) {
|
||||
$package = self::plainPackage((array) ($config['packages'][$platform] ?? []), $platform);
|
||||
$url = parse_url($package['url']);
|
||||
if (!is_array($url) || !in_array(strtolower($url['scheme'] ?? ''), ['https', 'http'], true)
|
||||
|| empty($url['host']) || isset($url['user']) || isset($url['pass'])
|
||||
|| !preg_match('/^[a-f0-9]{64}$/', $package['sha256'])) {
|
||||
continue;
|
||||
}
|
||||
$packages[] = ['platform' => $platform, 'label' => $labels[$platform]] + $package;
|
||||
}
|
||||
return [
|
||||
'version' => self::normalizeVersion((string) ($config['latest_version'] ?? '')),
|
||||
'packages' => $packages,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user