WiX.Py: kami mengumpulkan paket MSI "dalam tiga baris"

Tidak ada waktu atau keinginan untuk mempelajari file WiX kilometer untuk membangun installer MSI untuk proyek Anda, sambil terjun ke dalam jurang MSDN? Apakah Anda ingin memasang installer, menjelaskannya dalam istilah yang sederhana dan mudah dipahami, dalam beberapa baris? Apakah ada kecenderungan klinis terhadap cross-platform dan dibangun di bawah Linux & Docker? Kalau begitu, di bawah luka!


Pengembang Terdorong


Sebenarnya, dengan β€œWishlist” inilah proyek editor grafis vektor lintas-platform kami muncul beberapa bulan yang lalu.


Kami tahu tentang WiX Toolset (Windows Installer XML), tetapi bahkan melihat sekilas tutorial di situs resmi membuat saya sedih dan putus asa - perendaman serius dalam deskripsi XML installer tidak bisa dilakukan. Kami menggunakan MakeMsi yang lebih sederhana, tetapi memiliki banyak kekurangan. Dan lagi, semua alat ini tidak cocok untuk membangun MSI di Linux.


Pencarian mengarah ke proyek wixl , yang membangun MSI di Linux, tetapi menderita cacat fungsional yang serius dan membutuhkan file XML yang sama dengan ukuran mengerikan seperti WiX.


Akibatnya, untuk mendapatkan alat yang tepat untuk perakitan, kami menerapkan kembali logika wixl dalam python, memperbaiki banyak kekurangan dan menambahkan fungsionalitas yang diperlukan, dan membuat proyek lintas-platform. Ini adalah bagaimana WIX.Py muncul, kompiler MSI dengan ambang masuk yang sangat rendah.


Bagaimana WiX.Py Bekerja


Proses pembuatan paket MSI disederhanakan sampai batas:


  1. Dalam folder arbitrer (mis. build ), kami membentuk konten untuk instalasi dalam bentuk yang akan berada di komputer target.


  2. Kami mengisi file JSON kecil. Sebagai contoh:


     { "Name": "MyApp", "UpgradeCode": "3AC4B4FF-10C4-4B8F-81AD-BAC3238BF690", "Version": "0.1", "Manufacturer": "My Company", "Description": "MyApp 0.1 Installer", "Comments": "Licensed under GPLv3+", "Keywords": "wxs, xml, build", "Win64": true, "_CheckX64": true, "_AppIcon": "resources/myapp.ico", "_ProgramMenuFolder": "My Company", "_Shortcuts": [ {"Name": "MyApp", "Description": "MyApplication", "Target": "myapp.exe", "AddOnDesktop": true, "OpenWith": [".xml", ".wxs", ".yml"] } ], "_SourceDir": "build/", "_InstallDir": "myapp-0.1", "_OutputName": "myapp-0.1_win64.msi", "_OutputDir": "./" } 

  3. Kami menghasilkan paket MSI dengan perintah:


     wix.py <_>.json 


Ya, ini adalah contoh yang berfungsi penuh dari paket MSI yang akan memeriksa sebelum menginstal bahwa Windows 64bit akan menginstal aplikasi dalam Program Files , menambahkan aplikasi ke menu program dan desktop, dan melampirkan format file yang ditentukan ke aplikasi yang diinstal. Tidak ada keajaiban dan perdukunan dengan register.


Anda selanjutnya dapat mengurangi contoh menjadi 5-6 baris, tetapi kemudian fungsionalitas penginstal akan sangat sedikit.


Menggunakan WiX.Py, perakitan MSI dapat dilakukan pada Windows dan Linux, termasuk dalam wadah buruh pelabuhan. Karena basis libmsi dapat dibangun di atas banyak sistem UNIX lainnya (mis. MacOS), secara resmi WiX.Py juga dapat digunakan pada mereka, tetapi ini tidak masuk akal secara praktis.


Anda dapat menemukan deskripsi berbagai nuansa dalam dokumentasi proyek .


Kesimpulan


Jika WiX.Py cocok untuk Anda dalam memecahkan masalah dalam membuat paket MSI, tetapi tidak memiliki fungsionalitas apa pun, buka situs web kami https://wix.sk1project.net dan buat permintaan untuk memperluas fungsionalitas. Hal yang sama berlaku untuk bug yang terdeteksi - laporkan dan kami akan menanganinya. Di sana, di situs Anda akan menemukan kode sumber dan paket siap pakai untuk platform yang berbeda.


Jika ada keinginan untuk membandingkan dengan WiX, maka di HabrΓ© sudah ada artikel di WiX: 1 , 2 , 3 , 4 .

Source: https://habr.com/ru/post/id424091/


All Articles