OpenCode
Paquet d'installation silencieuse pour OpenCode
2.1.2-2
Development
Development
Les paquets PREPROD sont des paquets construits via LUTI.
Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.
- package: tis-opencode
- name: OpenCode
- version: 2.1.2-2
- categories: Development
- maintainer: Tranquil IT, WAPT TEAM, Kevin Cherel
- editor: Anomaly Innovations
- licence: MIT
- locale: all
- target_os: windows
- impacted_process: OpenCode.exe
- architecture: x64
- signature_date:
- size: 238.35 Mo
- homepage : https://opencode.ai/
- depends:
package : tis-opencode
version : 2.1.2-2
architecture : x64
section : base
priority : optional
name : OpenCode
categories : Development
maintainer : Tranquil IT, WAPT TEAM, Kevin Cherel
description : OpenCode is an open source AI coding agent that helps you write code in your terminal, IDE or desktop app.
depends : tis-7zip
conflicts :
maturity : PREPROD
locale : all
target_os : windows
min_wapt_version : 2.3
sources : https://opencode.ai/download
installed_size :
impacted_process : OpenCode.exe
description_fr : OpenCode est un agent de codage IA open source qui vous aide à écrire du code dans votre terminal, votre IDE ou une application de bureau.
description_pl : OpenCode to open source'owy agent AI do programowania, który pomaga pisać kod w terminalu, IDE lub aplikacji desktopowej.
description_de : OpenCode ist ein quelloffener KI-Coding-Agent, der Ihnen hilft, Code in Ihrem Terminal, Ihrer IDE oder einer Desktop-Anwendung zu schreiben.
description_es : OpenCode es un agente de programación con IA de código abierto que le ayuda a escribir código en su terminal, su IDE o una aplicación de escritorio.
description_pt : OpenCode é um agente de programação com IA de código aberto que ajuda você a escrever código no terminal, no IDE ou em um aplicativo de desktop.
description_it : OpenCode è un agente di programmazione IA open source che ti aiuta a scrivere codice nel terminale, nell'IDE o in un'applicazione desktop.
description_nl : OpenCode is een open source AI-programmeeragent die u helpt code te schrijven in uw terminal, IDE of desktopapplicatie.
description_ru : OpenCode представляет собой ИИ-агента для программирования с открытым исходным кодом, который помогает писать код в терминале, IDE или настольном приложении.
audit_schedule :
editor : Anomaly Innovations
keywords : opencode,ai,agent,coding,code,assistant,llm,terminal
licence : MIT
homepage : https://opencode.ai/
package_uuid : 1f3013d0-7c51-4a85-a251-f3f3f5a096de
valid_from :
valid_until :
forced_install_on :
changelog : https://opencode.ai/changelog
min_os_version : 10.0
max_os_version :
icon_sha256sum : 2ef8d582e62e65a55adf11d09f0ef621d56592cd7e319178dff4c968aae27ba2
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-10-21T05:00:53.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature : njqR3bIJf1MHDPBBwus3q+PDBio8iwPUtsUvIwtG10Hzom75WQwfp+YNjS6NoH0jyOJpiodqqUx20LH2KuVePBmkFDuPhydPqF0RAg8qV42OphLdVeLgZhaQZqFbAgf+5/EflVukQG2tDO0S3HIm5hNi6MctrGopFbTa4+lQINfRmcvo/d1u09DAhm+aHw0jjjAlPVaSQxQfcwMMmNr/hL7CuplceHp/4y1yoIC94MeZObIyrmnKlUMFqfroqQmI21WSDUumBwnfgo3Wtutlm4mI1ZR/Sf2CR7IWQxOwWLdnbh5Of5GDbQNolIOk2xcFu4SbO8BfhZ9Ku5CrGvnoug==
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
app_name = "OpenCode"
app_dir = makepath(programfiles, app_name)
app_path = makepath(app_dir, "OpenCode.exe")
legacy_app_dir = makepath(programfiles32, app_name)
temp_dir = "OpenCode_temp"
installed_version = get_file_properties(app_path).get("ProductVersion", "")
def install():
bin_name = glob.glob("opencode-desktop-win-*.exe")[0]
# Removing the install made by previous package revisions in Program Files (x86)
if isdir(legacy_app_dir):
print(f"Removing: {legacy_app_dir}")
killalltasks(ensure_list(control.impacted_process))
remove_tree(legacy_app_dir)
remove_programs_menu_shortcut(app_name)
# Uninstall older version before new one
if installed_version and Version(installed_version) < Version(control.get_software_version()):
uninstall()
# The NSIS installer only supports a per-user install, extracting the application archive instead
if isdir(temp_dir):
remove_tree(temp_dir)
print(f"Extracting: {bin_name}")
unzip_with_7zip(bin_name, temp_dir)
app_7z = glob.glob(makepath(temp_dir, "$PLUGINSDIR", "app-*.7z"))[0]
print(f"Extracting: {app_7z}")
killalltasks(ensure_list(control.impacted_process))
unzip_with_7zip(app_7z, app_dir)
remove_tree(temp_dir)
# Disabling automatic updates: the desktop updater without its feed, and the bundled CLI background service
remove_file(makepath(app_dir, "resources", "app-update.yml"))
set_environ_variable("OPENCODE_DISABLE_AUTOUPDATE", "1")
create_programs_menu_shortcut(app_name, target=app_path)
def audit():
# Auditing software
audit_status = "OK"
if Version(installed_version) < Version(control.get_software_version()):
print(f"{app_name} is installed in version ({installed_version}) instead of ({control.get_software_version()})")
audit_status = "WARNING"
elif isdir(app_dir) and not dir_is_empty(app_dir):
print(f"{app_name} ({installed_version}) is installed")
audit_status = "OK"
else:
print(f"{app_name} is not installed")
audit_status = "ERROR"
return audit_status
def uninstall():
# Uninstalling software
killalltasks(ensure_list(control.impacted_process))
if isdir(app_dir):
remove_tree(app_dir)
# Removing shortcuts
remove_programs_menu_shortcut(app_name)
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import waptlicences
def get_manifest(manifest_url, proxies):
manifest = wgets(manifest_url, proxies=proxies)
if isinstance(manifest, bytes):
manifest = manifest.decode("utf-8")
version = None
files = []
for line in manifest.splitlines():
line = line.strip()
if line.startswith("version:"):
version = line.split(":", 1)[1].strip()
elif line.startswith("- url:"):
files.append(line.split(":", 1)[1].strip())
return version, files
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
app_name = control.name
base_url = "https://opencode.ai/update/api/latest/desktop/opencode"
update_dict = {
"windows-x64": ("latest.yml", "-win-x64.exe"),
"windows-arm64": ("latest.yml", "-win-arm64.exe"),
"darwin-x64": ("latest-mac.yml", "-mac-x64.dmg"),
"darwin-arm": ("latest-mac.yml", "-mac-arm64.dmg"),
"debian-x64": ("latest-linux.yml", "-linux-amd64.deb"),
"debian-arm64": ("latest-linux-arm64.yml", "-linux-arm64.deb"),
"redhat_based-x64": ("latest-linux.yml", "-linux-x86_64.rpm"),
"redhat_based-arm64": ("latest-linux-arm64.yml", "-linux-aarch64.rpm"),
}
os_type = control.target_os.split("(")[0] + "-" + ensure_list(control.architecture)[0]
manifest_name, bin_suffix = update_dict[os_type]
api_url = f"{base_url}/{manifest_name}"
print("API used is: %s" % api_url)
version, files = get_manifest(api_url, proxies)
print(f"Latest {app_name} version is: {version}")
for to_download in files:
if to_download.endswith(bin_suffix):
download_url = to_download
latest_bin = download_url.rsplit("/", 1)[-1]
latest_bin_extension = latest_bin.rsplit(".", 1)[-1]
break
if isfile(latest_bin):
remove_file(latest_bin)
print(f"Downloading: {latest_bin}")
wget(download_url, latest_bin, proxies=proxies)
if latest_bin_extension == "exe":
expected_issuer = "Anomaly Innovations, Inc https://anoma.ly/"
sign_name = waptlicences.check_exe_signing_certificate(latest_bin)[0]
if sign_name != expected_issuer:
error(f"Bad issuer {sign_name} != {expected_issuer}")
# Deleting outdated binaries
for f in glob.glob(f"*.{latest_bin_extension}"):
if f != latest_bin:
remove_file(f)
# Changing version of the package
if Version(version) > Version(control.get_software_version()):
print(f"Software version updated (from: {control.get_software_version()} to: {Version(version)})")
package_updated = True
else:
print(f"Software version up-to-date ({Version(version)})")
control.set_software_version(version)
control.save_control_to_wapt()
return package_updated
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
8d616f7e159db539d7515a69988db6821830fd35e5532e2ca71a364f1c5d6c28 : WAPT/control
2ef8d582e62e65a55adf11d09f0ef621d56592cd7e319178dff4c968aae27ba2 : WAPT/icon.png
3c79d4280ad5d12966d18e0e1ce6dcf51dca045741726ef91557cc16fa15f4fa : luti.json
31271750c1eeba310b1eb541c0efbcf51b9810e57dad4d7c8b9625277c4b2267 : opencode-desktop-win-x64.exe
581d064c60d8edf15bafa9fea0cfc5d1a5c686cbdbe14be217daad8941533ba2 : setup.py
10bc1d8ab1e79493a0c0fe414adcb221132bec09c1f7c537047adca04e9549fd : update_package.py