> ## Documentation Index
> Fetch the complete documentation index at: https://docs.soundcloud-desktop.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# Как обновить приложение

> Установщик, dmg и AppImage обновляются в один клик. Остальное - одной командой

export const Download = ({file = "windows", lang = "ru"}) => {
  const mirror = "https://images.scnative.dev/x-target/";
  const desktop = "zxcloli666/SoundCloud-Desktop";
  const android = "okeydw/SoundCloud-Android";
  const site = lang === "en" ? "https://getsoundcloud.app/download?lang=en" : "https://getsoundcloud.app/download";
  const files = {
    "windows": {
      repo: desktop,
      match: /x64-setup\.exe$/i,
      ru: "Скачать для Windows",
      en: "Download for Windows",
      arch: "x64"
    },
    "windows-msi": {
      repo: desktop,
      match: /\.msi$/i,
      ru: "Скачать MSI",
      en: "Download MSI",
      arch: "x64"
    },
    "windows-portable": {
      repo: desktop,
      match: /portable\.exe$/i,
      ru: "Скачать portable",
      en: "Download portable",
      arch: "x64"
    },
    "mac-arm": {
      repo: desktop,
      match: /aarch64\.dmg$/i,
      ru: "Скачать для Apple Silicon",
      en: "Download for Apple Silicon",
      arch: "M1-M4"
    },
    "mac-intel": {
      repo: desktop,
      match: /x64\.dmg$/i,
      ru: "Скачать для Intel Mac",
      en: "Download for Intel Mac",
      arch: "Intel"
    },
    "deb": {
      repo: desktop,
      match: /amd64\.deb$/i,
      ru: "Скачать .deb",
      en: "Download .deb",
      arch: "x64"
    },
    "deb-arm": {
      repo: desktop,
      match: /arm64\.deb$/i,
      ru: "Скачать .deb",
      en: "Download .deb",
      arch: "ARM64"
    },
    "rpm": {
      repo: desktop,
      match: /x86_64\.rpm$/i,
      ru: "Скачать .rpm",
      en: "Download .rpm",
      arch: "x64"
    },
    "rpm-arm": {
      repo: desktop,
      match: /aarch64\.rpm$/i,
      ru: "Скачать .rpm",
      en: "Download .rpm",
      arch: "ARM64"
    },
    "appimage": {
      repo: desktop,
      match: /amd64\.appimage$/i,
      ru: "Скачать AppImage",
      en: "Download AppImage",
      arch: "x64"
    },
    "appimage-arm": {
      repo: desktop,
      match: /aarch64\.appimage$/i,
      ru: "Скачать AppImage",
      en: "Download AppImage",
      arch: "ARM64"
    },
    "flatpak": {
      repo: desktop,
      match: /\.flatpak$/i,
      ru: "Скачать .flatpak",
      en: "Download .flatpak",
      arch: "x64"
    },
    "android-full": {
      repo: android,
      match: /full.*\.apk$/i,
      ru: "Скачать APK",
      en: "Download APK",
      arch: "Full"
    },
    "android-lite": {
      repo: android,
      match: /lite.*\.apk$/i,
      ru: "Скачать APK",
      en: "Download APK",
      arch: "Lite"
    }
  };
  const target = files[file] || files.windows;
  const api = `https://api.github.com/repos/${target.repo}/releases/latest`;
  const cacheKey = `scd-latest:${target.repo}`;
  const [asset, setAsset] = useState(null);
  const loadRelease = async () => {
    try {
      const cached = JSON.parse(sessionStorage.getItem(cacheKey) || "null");
      if (cached && Date.now() - cached.at < 600000) return cached.release;
    } catch (e) {}
    let response = await fetch(api).catch(() => null);
    if (!response || !response.ok) {
      response = await fetch(mirror, {
        headers: {
          "X-Target": btoa(api)
        }
      });
    }
    const release = await response.json();
    try {
      sessionStorage.setItem(cacheKey, JSON.stringify({
        at: Date.now(),
        release
      }));
    } catch (e) {}
    return release;
  };
  useEffect(() => {
    loadRelease().then(release => {
      const found = release.assets.find(a => target.match.test(a.name));
      if (found) setAsset({
        ...found,
        version: release.tag_name
      });
    }).catch(() => {});
  }, [file]);
  const megabytes = asset ? Math.max(1, Math.round(asset.size / 1048576)) : null;
  const details = asset ? `${target.arch} · ${megabytes} ${lang === "en" ? "MB" : "МБ"} · ${asset.version.replace(/^v/, "")}` : target.arch;
  return <div className="not-prose flex flex-wrap items-center gap-x-4 gap-y-2 my-4">
      <a href={asset ? mirror + btoa(asset.browser_download_url) : site} className="inline-flex items-center gap-3 rounded-xl px-5 py-3 text-white no-underline hover:-translate-y-0.5 transition-transform" style={{
    background: "linear-gradient(135deg, #C24100 0%, #DD4A00 100%)",
    boxShadow: "0 6px 24px rgba(255,85,0,0.25)"
  }}>
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M12 3v12" />
          <path d="m7 10 5 5 5-5" />
          <path d="M5 21h14" />
        </svg>
        <span className="flex flex-col leading-tight">
          <span className="font-semibold text-base">{target[lang] || target.ru}</span>
          <span className="text-xs opacity-90">{details}</span>
        </span>
      </a>
      {asset && <a href={asset.browser_download_url} className="text-sm opacity-70 hover:opacity-100 no-underline">
          {lang === "en" ? "or from GitHub" : "или с GitHub"}
        </a>}
    </div>;
};

<Steps>
  <Step title="Проверьте обновления">
    Откройте **Настройки -> Общее -> Обновления** и нажмите **Проверить обновления**. Если написано **У вас последняя версия**, обновлять нечего.
  </Step>

  <Step title="Установите">
    Нажмите **Обновить**, затем **Установить и перезапустить**. Настройки, вход и кэш останутся.
  </Step>
</Steps>

<Info>
  Приложение само проверяет обновления при запуске и каждые 6 часов, если вы вошли и есть интернет. Свою версию и способ обновления видно в той же карточке: **Обновления ставятся в один клик** или **Обновления ставятся вручную**.
</Info>

## Обновления ставятся вручную

<Tabs>
  <Tab title="Windows" icon="windows" iconType="brands">
    **Установщик** и **MSI-установщик** обновляются в один клик, шаги выше.

    Если в карточке написано **Portable**:

    <Steps>
      <Step title="Выйдите из приложения">
        Нажмите **^** у часов, правой кнопкой нажмите на значок и выберите **Quit**. Не закрылось: [как выйти полностью](/fix/wont-close).
      </Step>

      <Step title="Скачайте новый файл">
        <Download file="windows-portable" lang="ru" />
      </Step>

      <Step title="Замените старый файл">
        Положите `soundcloud-desktop-portable.exe` на место старого. Настройки останутся.
      </Step>
    </Steps>

    Хотите обновляться в один клик? Поставьте [установщик](/install/windows).
  </Tab>

  <Tab title="macOS" icon="apple" iconType="brands">
    В один клик, шаги выше. Вручную:

    1. Нажмите **Cmd+Q**.
    2. Откройте новый dmg ([какой файл](/install/download)).
    3. Перетащите **soundcloud-desktop** в **Программы** с заменой старого.
  </Tab>

  <Tab title="Linux" icon="linux" iconType="brands">
    AppImage обновляется в один клик, шаги выше. Для deb, rpm и AppImage вручную сначала скачайте новый файл ([какой](/install/download)) и откройте терминал в его папке.

    <CodeGroup>
      ```bash Ubuntu, Debian theme={null}
      sudo apt install ./soundcloud-desktop_*_amd64.deb
      ```

      ```bash Fedora, openSUSE theme={null}
      # Fedora
      sudo dnf install ./soundcloud-desktop-*.x86_64.rpm
      # openSUSE
      sudo zypper install ./soundcloud-desktop-*.x86_64.rpm
      ```

      ```bash Arch theme={null}
      yay -Syu soundcloud-bin
      ```

      ```bash Flatpak theme={null}
      # или обновите в центре приложений
      flatpak update io.github.zxcloli666.SoundcloudDesktop
      ```

      ```bash AppImage theme={null}
      # закройте приложение и замените старый файл новым, затем:
      chmod +x soundcloud-desktop_*_amd64.AppImage
      ```
    </CodeGroup>

    После установки выйдите из приложения через трей и запустите снова ([как](/fix/wont-close)). Точную команду для вашей копии показывает окно обновления: кнопка **Скопировать команду**.
  </Tab>
</Tabs>

## Не получается

<AccordionGroup>
  <Accordion title="Нужно ли удалять старую версию">
    Нет. Ставьте новую поверх старой: настройки и кэш останутся.
  </Accordion>

  <Accordion title="Обновление не приходит">
    Окно не появляется, если вы не вошли в аккаунт, нет интернета или вы уже нажали **Позже** (до перезапуска приложения). Нажмите **Проверить обновления** в **Настройки -> Общее -> Обновления**.
  </Accordion>

  <Accordion title="Не получилось установить обновление автоматически">
    Нажмите **Скачать** в том же окне и поставьте файл поверх старой версии.
  </Accordion>

  <Accordion title="Не удалось связаться с GitHub для проверки обновлений">
    [Скачайте новую версию](/install/download) и поставьте поверх старой. Настройки и вход сохранятся.
  </Accordion>

  <Accordion title="Нет кнопки обновления в настройках">
    Такая старая версия сама не обновится. Один раз [скачайте новую](/install/download) и поставьте поверх старой: настройки сохранятся. Попросит войти заново - войдите. Дальше обновляйтесь, как описано выше.
  </Accordion>

  <Accordion title="Flatpak: Каталог не пуст или обновлений не видно">
    Один раз переустановите из нового файла. Скачайте его, откройте терминал в его папке и выполните команду:

    <Download file="flatpak" lang="ru" />

    ```bash theme={null}
    flatpak install --user --reinstall soundcloud-desktop.flatpak
    ```
  </Accordion>

  <Accordion title="Поставил новую версию, а открылась старая">
    Старая копия ещё работает в трее. [Как выйти полностью](/fix/wont-close).
  </Accordion>

  <Accordion title="Как откатиться на старую версию">
    Не стоит: старые версии перестают работать после изменений на серверах. При любой проблеме сначала обновитесь.
  </Accordion>
</AccordionGroup>

<Card title="Не помогло? Напишите нам" icon="life-ring" href="/help/contact" horizontal>
  Приложите desktop.log и отчёт Проверки сети.
</Card>


## Related topics

- [Лайки и плейлисты не совпадают с SoundCloud](/fix/sync.md)
- [Треки не грузятся или висят на 1%](/fix/tracks-not-loading.md)
- [Удалить или переустановить начисто](/install/uninstall.md)
- [Не закрывается или открывается старая версия](/fix/wont-close.md)
- [Установка на Windows](/install/windows.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.