کتابخانه‌ی استاندارد · وب و مرورگر

نصب ساز رومیزی gui/webview/bundle

آنچه salam bundle برای ساختن نصب‌کننده اجرا می‌کند.

واردسازی رابط گرافیکی.نمایش وب.نصب ساز رومیزی

این بسته همان چیزی است که با فرمان salam bundle اجرا می‌شود. جدول [app] در salam.toml را می‌خواند، برنامه را می‌سازد، دارایی‌ها را فشرده می‌کند و نصب‌کننده می‌سازد. برای استفاده از آن ساختن نصب‌کننده را ببینید.

جدول [app]

هر چه salam bundle لازم دارد در جدول [app] پرونده‌ی salam.toml است. فقط شناسه و نام مهم‌اند: نگارش پیش‌فرض ۰٫۱٫۰ است، ورودی main.salam و دسته Utility. نام کوتاه از نام برای نام پرونده‌ها ساخته می‌شود. اگر جدولی نباشد خواندن شناسنامه نادرست برمی‌گرداند.

gui-webview-bundle-guide-manifest.salam
واردسازی رابط گرافیکی.نمایش وب.نصب ساز رومیزی
واردسازی ورودی خروجی

تابع ریشه:
    متن := "[app]\nid = \"com.example.notes\"\nname = \"Notes\"\nversion = \"1.2.0\"\nassets = \"www\"\ncategory = \"Utility\"\n"
    ورودی خروجی.نوشتن پرونده("salam.toml"، متن)
    ناپایا ش := نصب ساز رومیزی.شناسنامه {}
    اگر وارونه نصب ساز رومیزی.خواندن شناسنامه("salam.toml"، ش):
        سرچاپ "جدول [app] نیست"
        برگشت ۱
    پایان
    سرچاپ ش.شناسه
    سرچاپ ش.نام، ش.نگارش
    سرچاپ "پرونده‌ی اصلی:"، ش.ورودی
    سرچاپ "دارایی‌ها:"، ش.دارایی ها
    سرچاپ "نام کوتاه:"، ش.نام کوتاه
پایان
خروجیcom.example.notes Notes 1.2.0 پرونده‌ی اصلی: main.salam دارایی‌ها: www نام کوتاه: notes

قالب‌ها و هدف‌ها

قالب‌های پیش‌فرض در لینوکس tar و deb، در ویندوز zip و در مک app و tar هستند. بقیه را با --format بنویسید؛ هر کدام ابزارش را روی PATH می‌خواهد.

$ salam bundle --format=rpm,appimage      # rpmbuild, appimagetool
$ salam bundle --target=x86_64-w64-windows-gnu --format=nsis   # makensis
$ salam bundle --target=arm64-apple-macos --format=app,dmg     # hdiutil
$ salam bundle --output=dist

ساخت برای سیستم دیگر به نرم‌افزار اضافه نیاز ندارد، چون خود کامپایلر برنامه‌های ویندوز و مک را پیوند می‌دهد. نماد PNG به .ico و .icns تبدیل می‌شود. چیزی امضا نمی‌شود، پس پیش از دادن برنامه به دیگران خودتان امضا و تایید کنید.

موتور وب هم بخشی از جدول [app] است. به‌طور پیش‌فرض برنامه از وب‌ویوی خود سیستم‌عامل استفاده می‌کند. با engine = "chromium" یا --engine=chromium برنامه با Chromium Embedded Framework ساخته می‌شود و باید runtime (یا --runtime=DIR یا متغیر محیطی SALAM_CEF_DIR) را به پوشه‌ای بدهید که کتابخانه‌ی ساخته‌شده‌ی salam_webview_cef، برنامه‌ی salam_cef_helper و پرونده‌های اجرایی CEF در آن است. این پوشه کنار برنامه کپی می‌شود، آن هم فقط برای tar در لینوکس و zip در ویندوز. اینکه موتور کرومیوم امروز چه کارهایی را می‌تواند ببینید در انتخاب موتور وب.

ساخت نصب‌کننده در CI

همین فرمان را روی یک ران‌کننده‌ی لینوکس برای هر سیستم با --target و --output جدا اجرا کنید و نتیجه‌ها را بارگذاری کنید. جریان desktop.yml در مخزن سلام همین کار را می‌کند و بعد هر نتیجه را روی ویندوز، مک و لینوکس واقعی اجرا می‌کند.

گونه‌ها

شناسنامه Manifest

ساختار شناسنامه
جدول [app] در salam.toml.
نامانگلیسیگونهتوضیح
شناسهidرشته = ""شناسه‌ی برنامه.
نامnameرشته = ""نامی که کاربر می‌بیند.
نگارشversionرشته = "0.1.0"نگارش.
ورودیmainرشته = "main.salam"پرونده‌ی ورودی؛ پیش‌فرض main.salam.
دارایی هاassetsرشته = ""پوشه‌ای که در برنامه بسته می‌شود.
نمادiconرشته = ""نماد PNG که برای هر سیستم تبدیل می‌شود.
توضیحdescriptionرشته = ""یک خط درباره‌ی برنامه.
ناشرpublisherرشته = ""ناشر برنامه.
دستهcategoryرشته = "Utility"دسته‌ی منوی میزکار.
نام کوتاهslugرشته = ""نام پرونده که از نام برنامه ساخته می‌شود.
موتورengineرشته = "system"موتور وب برنامه: system (وب‌ویوی خود سیستم‌عامل، پیش‌فرض) یا chromium.
پوشه موتورruntimeرشته = ""پوشه‌ی پرونده‌های اجرایی کرومیوم که با موتور chromium به کار می‌رود.
gui-webview-bundle-Main.salam
واردسازی رابط گرافیکی.نمایش وب.نصب ساز رومیزی
واردسازی سیستم عامل

تابع ریشه:
    ناپایا م := نصب ساز رومیزی.شناسنامه {
        شناسه = "com.example.app"، نام = "برنامه"، نگارش = "1.0"، ورودی = "main.salam"، دارایی ها = "www"، نماد = "icon.png"، توضیح = "یک برنامه"، ناشر = "نمونه"، دسته = "Utility"، نام کوتاه = "app"، موتور = "system"، پوشه موتور = ""
    }
    سرچاپ نصب ساز رومیزی.خواندن شناسنامه("salam.toml"، م)، م.نام
    برگشت نصب ساز رومیزی.اجرا(سیستم عامل.آرگومان ها())
پایان

تابع‌ها

خواندن شناسنامه ReadManifest

تابع خواندن شناسنامه(path: رشته، out &: شناسنامه): منطقی
جدول [app] یک پرونده را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-webview-bundle-Main.salam

اجرا Main

تابع اجرا(args: وکتور<رشته>): صحیح
آنچه salam bundle اجرا می‌کند. کد خروج را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-webview-bundle-Main.salam