Manfaat perusahaan menggunakan file MSI

57

Apa keuntungan menggunakan file .msi dibandingkan file setup.exe biasa?

Saya memiliki kesan bahwa penyebaran lebih mudah pada mesin yang pengguna memiliki sedikit izin, tetapi tidak yakin tentang detailnya.

Fitur apa yang dimiliki msiexec.exe yang membuat penyebaran lebih mudah daripada menggunakan skenario setup.exe?

Adakah tips atau trik saat menggunakan aplikasi .msi?

Frode Lillerud
sumber

Jawaban:

42

Hanya beberapa manfaat:

  • Dapat diiklankan (sehingga pemasangan sesuai permintaan bisa terjadi).
  • Seperti iklan, fitur dapat diinstal segera setelah pengguna mencoba menggunakannya.
  • Manajemen negara dipertahankan sehingga Penginstal Windows menyediakan cara untuk memungkinkan administrator melihat apakah aplikasi diinstal pada mesin.
  • Kemampuan untuk memutar kembali jika instalasi gagal.

Saya pikir ketika saya menggunakan perangkat lunak dalam pengaturan perusahaan: menyebarkan perangkat lunak melalui MSI hampir menyenangkan. Sebaliknya, saya hampir selalu menemukan diri saya takut menyebarkan perangkat lunak ketika berada di wadah lain.

Untuk beberapa info tambahan tentang memanipulasi instalasi MSI, ketikkan msiexecke dalam dialog Run.

Matt Hanson
sumber
3
+1 - Saya tidak melihat yang ini di '09 (saya pikir situs itu mungkin masih dalam versi beta saat itu), tapi saya suka bit "... Saya hampir selalu menemukan diri saya takut ...". Saya benar - benar merasa seperti itu (meskipun, agar adil, beberapa "MSI" membuat saya merasakan hal yang sama ... Java ... Google Chrome ...).
Evan Anderson
74

UPDATE, Juli 2018 : Ringkasan yang sangat padat dari informasi di bawah ini tersedia di stackoverflow: Manfaat Utama MSI ( "executive summary"- semacam).


Saya telah bekerja dalam pengembangan sebagai manajer rilis , insinyur bangunan , pengembang pengaturan dan sebagai pembuat paket aplikasi dan insinyur penempatan di perusahaan besar.

Ini adalah ulasan fitur MSI konseptual dan dunia nyata (dan terburuk) terbaik . Masalah desain yang paling umum ditemukan dalam file MSI disajikan sebagai jawaban terpisah di bawah ini . Tidak berpura-pura lengkap - benar-benar hanya "tempat sampah otak" yang berantakan - dimaksudkan sebagai "barang yang tidak dapat ditemukan di buku" (mungkin karena alasan yang baik).

Saya juga ingin menyarankan artikel MSDN ini sebagai bacaan yang bagus: Pemasang Windows: Manfaat dan Implementasi untuk Administrator Sistem .


Standardisasi:

Singkatnya, MSI adalah tentang standardisasi, dan tentang berurusan dengan " bau penyebaran " dari teknologi installer warisan. Seluruh koleksi desain arsitektur instalasi yang buruk yang menyebabkan masalah penyebaran berulang.

Secara keseluruhan MSI menyediakan kerangka kerja yang komprehensif dan terstandarisasi untuk installer, yang pada dasarnya juga mencakup fitur uninstall dan built-in dan opsi untuk silent running dengan GUI standar yang dapat dipicu dari jarak jauh .

Fitur-fitur ini sendiri merupakan peningkatan besar-besaran dari teknologi instalasi sebelumnya yang memperlakukan pencopotan pemasangan dan diam berjalan secara serampangan - mungkin fitur yang paling penting untuk penyebaran perusahaan bersama dengan manajemen paket jarak jauh yang dapat diandalkan melalui Active Directory atau alat administrasi jarak jauh khusus seperti Microsoft SCCM (sebelumnya SMS), IBM Tivoli , CA Unicenter, dan sejenisnya.

Seseorang menduplikasi versi sebelumnya dari jawaban ini . Mungkin membaca lebih cepat?


Pemasang Lama "Deployment Smells"

MSI secara aktif mencegah penyebaran bau oleh desain. Topik-topik ini dibahas di bagian selanjutnya di bawah ini, tetapi sebagai daftar cepat masalah yang paling dikenal dengan installer lama dan teknologi penyebaran yang lebih lama adalah:

  • 1) mereka terkadang menurunkan dan menimpa file yang dibagikan dan versi dengan sedikit perhatian terhadap dll-neraka yang dihasilkan
  • 2) sering kali tidak ada rutinitas pencopotan yang disertakan dengan penginstal, atau tidak lengkap dan andal - terutama jika dijalankan secara diam-diam. Ini adalah masalah yang sangat besar bagi manajemen BUMN
  • 3) instalasi diam jarang didukung dengan benar. Keandalannya buruk, dan sering kali orang harus merekam proses instalasi dengan pilihan dialog dan ini tidak sesuai dengan kondisi yang tidak terduga seperti dialog kesalahan atau dialog peringatan yang tidak direkam dalam proses asli
  • 4) installer tidak mencatat apa yang telah diinstal dan karenanya tidak ada cara otomatis untuk memverifikasi file pada disk untuk memeriksa apakah masih ada versi yang diinstal pada awalnya oleh installer
  • 5) mereka menampilkan parameter baris perintah yang tidak dapat diprediksi, tidak dapat diandalkan dan tidak standar untuk instalasi yang dapat dieksekusi
  • 6) mengikuti dari baris perintah yang tidak standar dan kurangnya standar, sulit untuk menyesuaikan installer dengan nilai-nilai spesifik yang diperlukan untuk penyebaran perusahaan dengan cara yang dapat diandalkan dan dapat diprediksi.
  • 7) pengguna normal tidak dapat menjalankan instalasi ini, dan orang sering harus dipusingkan dengan hak admin sementara (gunakan "jalankan sebagai" jika itu cukup, atau login sebagai admin, instal dan kemudian logout - ini login penuh dan pembuatan profil kadang-kadang diperlukan untuk menginstal untuk menyelesaikan)
  • 8) yang setup.exe installer akan sering tidak mengembalikan kode kesalahan yang tepat atau kode sukses, dan kadang-kadang akan keluar segera dan tendangan dari proses lain yang akan menyelesaikan instalasi sehingga sulit untuk menentukan apakah install selesai - terutama melalui batch mengajukan
  • 9) sebagian besar file setup.exe memungkinkan file untuk diekstraksi, tetapi tidak dengan cara yang dapat diandalkan dan dapat diprediksi - Anda biasanya harus menghabiskan banyak waktu mencari switch yang tepat untuk menyelesaikannya
  • 10) penebangan pada umumnya buruk dan agak serampangan di beberapa alat. Debugging dengan file log jarang menghasilkan kejelasan, tetapi sedikit membantu
  • 11) tidak ada transparansi dalam apa yang dilakukan penginstal dan tidak ada atau tidak dapat dikembalikan untuk membatalkan perubahan setelah instalasi gagal
  • 12) ada ada cara standar industri dari penggelaran komponen runtime bersama apakah mereka beroperasi komponen sistem, komponen pihak ketiga atau Anda sendiri

Daftar ini berlanjut dengan banyak kelemahan penyebaran penting dan diakui lainnya . Jelas dalam dunia penyebaran perusahaan bahwa masalah ini muncul paling sering, dan telah menghasilkan bisnis " pengemasan ulang aplikasi " di mana penginstal lama ditangkap dengan teknologi pemindaian disk dan registri untuk membuat file MSI yang sesuai standar. untuk penyebaran yang andal.

Pengemasan ulang aplikasi adalah pekerjaan spesialis dan umumnya menghasilkan file MSI berkualitas tinggi jika dilakukan dengan benar oleh orang yang berpengetahuan, tetapi tidak mungkin untuk mengemas kembali semua aplikasi karena logika registrasi yang kompleks yang harus dijalankan secara interaktif agar aplikasi tertentu dapat bekerja.


Manfaat MSI - Ringkasan Pendek

Dalam bahasa sederhana , manfaat MSI yang sangat penting adalah (tanpa urutan tertentu):

  • 1) uninstall selalu tersedia untuk setiap paket kecuali dinonaktifkan secara aktif
  • 2) ini sama untuk logging , yang bagus dan terstandarisasi, meskipun verbose (alat seperti WiLogUtl.exe dapat digunakan untuk menganalisis file log)
  • 3) apa yang dilakukan oleh file MSI (semi-) transparan atau "dapat diperiksa" untuk sebagian besar. Pengecualiannya adalah tindakan khusus - (lihat bagian transparansi di bawah)
  • 4) pengaturan kustomisasi dilakukan dengan cara standar ( transformasi )
  • 5) tidak perlu dipusingkan dengan hak admin sementara karena penginstalan berjalan meningkat melalui iklan Direktori Aktif, kebijakan grup, atau administrasi jarak jauh. Beberapa kualifikasi di sini. Lihat juga cuplikan layar ini dari editor objek kebijakan grup.
  • 6) diam menginstal / menghapus instalan melalui alat manajemen atau menggunakan msiexec.exe berfungsi dengan baik
  • 7) ada dukungan rollback penuh untuk instalasi yang gagal. Jika Anda menginstal secara manual pada kotak ada beberapa kualifikasi yang perlu Anda ketahui.
  • 8) file MSI cocok untuk inspeksi dan validasi untuk konsistensi dan validitas logis karena mereka sesuai dengan skema database ( lihat contoh validasi )
  • 9) pembaruan adalah tipe standar, meskipun rumit dan sering rawan kesalahan untuk paket yang tidak berpengalaman
  • 10) yang ekstraksi file dari MSI adalah fitur built-in (cek artikel terkait untuk gambaran singkat yang baik)
  • 11) baris perintah Penginstal Windows, msiexec.exe , fitur kontrol berbutir sangat baik tentang bagaimana urutan instalasi harus dilakukan, dan semua opsi bekerja dengan semua standar file MSI yang sesuai (set level log, jalankan secara diam-diam / interaktif / semi-diam) , atur parameter instalasi, terapkan transformasi dll ...).
  • 12) menggabungkan modul adalah mekanisme MSI untuk mengirimkan file bersama dengan beberapa paket MSI. Ini adalah modul yang dapat dikonsumsi atau kumpulan logika instalasi yang dapat digabung dengan paket MSI apa pun pada waktu kompilasi. Wix telah memperluas dan meningkatkan konsep ini dengan penggunaan file-file Wix termasuk - sebuah konsep yang menurut saya lebih unggul untuk menggabungkan modul - terutama untuk file Anda sendiri (yaitu bukan file OS)
  • 13) mesin penginstal windows itu sendiri memiliki mekanisme untuk mencegah overwriting file berversi atau modifikasi saat instalasi. Ini dikendalikan oleh logika penggantian file yang agak rumit . Meskipun efisien dan bagus, logikanya dapat menjadi masalah karena banyak pengembang menghadapi masalah karena tidak dapat menimpa file konfigurasi yang dimodifikasi ketika melakukan peningkatan. Solusi untuk masalah-masalah ini umumnya perubahan kecil dalam desain aplikasi untuk menghindari penyebaran anti-pola umum - meskipun itu adalah diskusi besar sendiri.

Di dunia nyata saya telah menemukan aspek - aspek yang kurang berhasil untuk memasukkan tambalan (sangat kompleks), MSI-GUI (fitur sederhana, cukup kompleks, kurang fleksibel), ketahanan (dapat menyebabkan sulitnya men-debug masalah pengulangan perbaikan sendiri ), dan kompleksitas keseluruhan berurusan dengan teknologi untuk pemula (kompleksitas operasi dasar yang tinggi di waktu - misalnya upgrade, GUI dan banyak detail yang berinteraksi menyebabkan hasil yang tidak terduga, dll ...). Kecepatan proses instalasi juga melambat karena peningkatan overhead MSI. Lihat beberapa tips untuk meningkatkan kecepatan instalasi MSI .

Sisa dari teks ini membahas beberapa aspek MSI ini secara lebih rinci.


Transparansi (format pemasang terbuka)

File MSI pada dasarnya adalah database SQL-Server yang dipreteli yang disimpan sebagai file penyimpanan berstruktur COM - pada dasarnya sistem file dalam file atau kumpulan aliran data. Ini adalah tipe file yang digunakan dalam dokumen Microsoft Office , dan menghasilkan format standar yang dapat ditinjau dan diperiksa - masalah besar bagi perusahaan besar.

Dengan pengecualian tindakan khusus yang dikompilasi, file MSI adalah kotak putih . Jika pengaturan mengubah sesuatu yang gila seperti pengaturan jaringan di seluruh sistem, Anda dapat melihatnya menggunakan alat yang sesuai . Pengecualian penting dikompilasi tindakan kustom - yang merupakan kotak hitam . Persyaratan logo Windows memerlukan tindakan khusus untuk dijelaskan untuk menjelaskan apa yang mereka lakukan, tetapi ini sering diabaikan oleh pengembang penyiapan. Semoga munculnya Wix akan meningkatkan ini.

Untuk menentukan apa yang dilakukan tindakan kustom terkompilasi tersebut dalam arti teknis, tangkapan setup diperlukan. Ini hampir tidak pernah dilakukan dalam pengalaman saya. Lebih umum untuk menghubungi vendor untuk mendapatkan informasi jika perangkat lunak memerlukan persetujuan untuk penerapan perusahaan, dan mungkin itu adalah aplikasi itu sendiri yang mencegah penggunaannya, dan bukan hanya pengaturan.

Kemampuan penyesuaian (transformasi)

MSI dapat dikustomisasi melalui transformasi agar sesuai dengan kebutuhan dan standar organisasi sementara masih memungkinkan interoperabilitas dengan pembaruan pemasang vendor. Anda tidak mengubah pemasang itu sendiri, Anda membuat kustomisasi dalam file terpisah, khusus organisasi yang disebut transform (.mst file) (fragmen basis data atau ubah transaksi jika Anda mau). Anda bebas untuk menonaktifkan tindakan khusus dan secara umum mengubah, menimpa, atau menonaktifkan apa pun di penginstal, dan Anda bahkan dapat menambahkan hal-hal baru, termasuk file. File transformasi juga kadang-kadang digunakan untuk melokalkan file MSI ke berbagai bahasa. Beberapa transformasi dapat diterapkan ke satu MSI, di sini adalah sampel dengan jalur terpotong :

msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"

Penjelasan Parameter Cepat:

/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.

Manajemen dan pelaporan

Pemasang Windows memiliki basis data komprehensif untuk semua item yang telah dipasang produk dalam registri ( HKEY_CLASSES_ROOT \ Installer - jangan pernah mengubah apa pun di sini secara langsung! Itu juga berlaku untuk para ahli).

Anda dapat menentukan apakah suatu produk diinstal, fitur apa yang diinstal, dan versi file apa yang diinstal. Selain itu, Anda bisa mendapatkan daftar tambalan apa pun yang telah diterapkan pada produk dasar, jika ada. Anda dapat mengakses database ini melalui Win32, COM atau .NET yang mendukung API menggunakan berbagai skrip, konfigurasi, dan alat admin seperti Microsoft SCCM , IBM Tivoli , CA Unicenter dll ...

Keamanan (hak tinggi sementara)

MSI juga mencakup prinsip "hak tinggi" yang memungkinkan pengguna terbatas untuk memicu pemasangan produk yang memerlukan hak admin untuk menginstal. Ini adalah bagian dari " fitur iklan " yang memungkinkan administrator membuat installer tersedia untuk pengguna tanpa benar-benar menginstalnya di semua workstation. Pemasang itu sendiri harus dikarang dengan benar pada beberapa akun inti agar konsep hak tinggi ini berfungsi dengan benar. Pengguna dapat memicu pemasangan produk sendiri, atau pemasangan mungkin dikendalikan oleh sistem penyebaran khusus seperti SCCM, Tivoli, Unicenter (biasanya perusahaan besar). Tidak perlu dipusingkan dengan hak admin sementara untuk membuat semuanya berfungsi yang sering terjadi dengan installer lama.

Basis data instalasi yang komprehensif juga memastikan bahwa Anda memiliki gambaran lengkap tambalan yang diinstal dan karenanya kemungkinan untuk mendeteksi kerentanan keamanan melalui otomatisasi dan alat admin.

Validasi

File MSI dapat diperiksa dengan aturan validasi untuk memastikannya sesuai dengan sejumlah aturan konsistensi internal (disebut sebagai ICE). Perusahaan dapat membuat cek ICE mereka sendiri untuk menegakkan aturan dan persyaratan perusahaan khusus. Ini sangat membantu dengan QA. Alasan validasi dimungkinkan adalah karena sifat referensi diri dari database relasional dan skema database terkait. Basis data harus konsisten secara internal dan sesuai dengan skema sendiri terkait dengan kunci asing, tipe data, lebar bidang, versi skema, dll. Validasi juga melampaui ini dan mampu mendeteksi cacat logis asli dan kesalahan dalam paket. , tidak hanya memformat dan mengetikkan kekurangan. Misalnya dapat mendeteksi file atau tipe file yang sedang digunakan untuk tujuan yang salah sasaran.

Ketahanan (Perbaikan sendiri)

Fitur instalasi admin Windows installer menyediakan cara standar untuk mengekstrak file sumber dari MSI ( berikut adalah beberapa informasi tambahan tentang topik ini ). File-file sumber ini kemudian dapat dibagikan dan tersedia untuk semua workstation untuk instalasi. Ini memastikan perbaikan, penghapusan instalasi dan modifikasi operasi selesai tanpa meminta media instalasi pada CD atau sejenisnya. Ini sangat penting untuk menambal dan memperbarui operasi yang mungkin memerlukan akses ke file sumber versi lama dalam keadaan khusus.

Ada juga masalah umum dengan fitur ketahanan ini. Sebagian besar administrator mengalami mesin dengan siklus perbaikan-diri siklus yang sepertinya tidak pernah berhenti. Ikuti tautan untuk daftar panjang penyebab masalah ini. Dan lagi, ini adalah versi yang lebih pendek yang mungkin lebih mudah dibaca.

Kembalikan

Instalasi file MSI biasanya akan memicu pembuatan titik pemulihan . Selanjutnya semua file dan item registri diganti atau ditimpa selama instalasi akan disimpan dan dikembalikan jika instalasi gagal untuk menyelesaikan, kecuali perubahan yang dilakukan dalam tindakan kustom.

Tindakan khusus harus menerapkan dukungan rollback mereka sendiri untuk kepatuhan logo Windows. Ini sering diabaikan, tetapi melibatkan pembuatan tindakan khusus kedua untuk membatalkan perubahan yang dibuat oleh tindakan khusus utama.

Rollback memastikan bahwa workstation dibiarkan dalam keadaan stabil bahkan jika instalasi gagal. The Script rollback yang sebenarnya disimpan dalam folder tersembunyi langsung pada sistem drive - umumnya C: \ Config.MSI , dan berisi file dengan ekstensi .RBS dan .RBF - Rollback Script Files . Seperti yang Anda harapkan file MSI yang dirancang dengan buruk dapat melanggar fitur bawaan Windows di sini, lihat posting saya yang lain di utas ini untuk lebih jelasnya.

Ada beberapa cara untuk menonaktifkan rollback dan mempercepat pemasangan. Umumnya tidak disarankan, tetapi di sini ada detail tentang properti MSIFASTINSTALL dan DISABLEROLLBACK . Ini adalah fitur yang rumit, tetapi di sini adalah ikhtisar rollback cepat .

Penambalan & Pembaruan

Meskipun sangat kompleks, menambal dalam installer Windows sepenuhnya dikelola dan terdaftar pada sistem sehingga keadaan keamanan sistem dapat ditentukan dengan memeriksa apa yang telah diinstal. Pembaruan distandarisasi untuk beberapa varian dasar, dan ini memungkinkan pembaruan dilakukan dengan tingkat kepastian yang lebih tinggi asalkan Anda dapat menangani kompleksitas yang terlibat. Sistem penempatan akan dapat melaporkan pembaruan apa yang gagal dan mengapa.

Dalam pandangan subyektif, penambalan berfungsi dengan baik untuk 2 penggunaan dasar : 1 ) perbaikan terbaru kecil untuk produk yang dikirim, dan 2 ) menambal produk yang dipasang untuk memperbaiki urutan pemasangan yang salah yang mencegah penghapusan pembersihan produk.

Patch hanyalah mekanisme pengiriman untuk pembaruan yang sudah berfungsi . Karena itu hanya sebuah wadah yang lebih rumit dan rawan kesalahan daripada pengaturan asli itu sendiri. Aturan nomor satu untuk suatu tambalan adalah ia harus lebih kecil dari MSI asli atau tidak ada alasan yang jelas untuk mengirimkan tambalan sama sekali. Sebuah tambalan bisa menjadi besar dengan cepat jika menargetkan beberapa versi produk.

Logging (memang verbose)

Windows Installer menyediakan fitur logging standar yang jauh lebih unggul dari inkarnasi sebelumnya, meskipun hampir terlalu banyak bertele-tele. File log dapat diuraikan menggunakan penganalisis log , dan level log kustom dapat digunakan untuk menghilangkan pembuatan file log terlalu besar dengan informasi yang tidak perlu. Untuk keperluan debugging, logging verbose sangat berguna. Lihat blog Rob Mensching untuk cara manual yang baik untuk membaca file log MSI (pada dasarnya Anda mencari " nilai 3 " dalam file log). Berikut adalah contoh perintah baris yang melakukan logging verbose:

msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"

Artikel ini dari Robert Macdonald dari Tim Pemasang Windows sangat direkomendasikan sebagai tampilan praktis pada log MSI: Cara Menafsirkan Log Pemasang Windows .


Kesimpulan

Tidak semuanya baik tentang Penginstal Windows . Its kompleksitas dapat membingungkan di kali, tapi untuk perusahaan besar file MSI yang jauh lebih unggul dengan bentuk lain dari penyebaran ketika Anda memperhitungkan daftar manfaat di atas.

Paradigma installer baru (pernyataan SQL besar)

Untuk memahami " paradigma " baru, penting untuk memahami bahwa MSI dimaksudkan sebagai deskripsi deklaratif tentang apa yang akan terjadi pada sistem target, daripada urutan kejadian yang pasti. Saya kira Anda bisa menganggapnya sebagai pernyataan SQL besar . Misalnya Anda mendeklarasikan item yang ingin Anda tambahkan atau modifikasi ke file INI. Saat instalasi berjalan, perubahan dilacak dan rollback tersedia sehingga perubahan dapat dikembalikan jika instalasi gagal. Ini benar-benar berfungsi seperti " automagic ", dan dapat diandalkan jika dilakukan dengan benar.

Tindakan Kustom (tersangka biasa)

Ini adalah sakit kepala besar bagi pengembang MSI berpengalaman untuk melihat orang-orang mengandalkan tindakan kustom yang kompleks dan tidak dapat diandalkan untuk fungsionalitas yang lebih baik diimplementasikan dengan fitur MSI bawaan. Bagian signifikan dari semua kesalahan MSI dan masalah rollback disebabkan oleh tindakan kustom yang salah, dan sebagian besar kesalahan lainnya disebabkan oleh penggunaan yang salah dari desain MSI (lihat jawaban terpisah untuk daftar kesalahan MSI umum).

Selain fitur MSI bawaan, semakin banyak fungsi kustom kini tersedia melalui kerangka kerja baru seperti Wix - cara XML untuk mengkompilasi file MSI, sehingga semakin sedikit kebutuhan akan logika tindakan khusus yang kompleks untuk sebagian besar operasi.

MSI fitur dukungan penuh untuk menangani penggabungan pengaturan file ini, font, variabel lingkungan, kunci registri, informasi COM, pintasan, ekstensi file, kondisi peluncuran, instalasi GAC, ODBC, dll ...

WIX melangkah lebih jauh dengan dukungan untuk fitur - fitur yang sangat canggih seperti ekstensi SQL server, instalasi dan konfigurasi IIS, penghitung kinerja, pengecekan DirectX dan tugas-tugas yang terkait dengan game, .NET generasi gambar asli, COM +, driver, aturan firewall, ekstensi PowerShell, penutupan aplikasi, manajemen pengguna, grup, berbagi, dan banyak lagi. Agak terlibat untuk berurusan, tetapi jauh lebih dapat diandalkan daripada tindakan kustom Anda sendiri.

Hindari Tindakan Kustom Berapapun Biaya Jika Mungkin

Untuk mencoba untuk memasukkannya ke dalam perspektif: ini built-in dan solusi siap pakai yang dibuat oleh para ahli penyebaran terbaik yang tersedia , dan mereka diuji oleh ribuan, puluhan ribu atau bahkan jutaan pengguna (untuk built-in barang-barang di MSI diri). Apakah Anda benar-benar berpikir dapat melakukan tindakan kustom Anda sendiri dengan lebih baik? Menggunakan tindakan khusus harus menjadi peristiwa langka, dan harus benar-benar diperlukan untuk mencapai sesuatu yang unik untuk produk yang Anda instal . Dan Anda harus menulis dukungan rollback yang tepat juga, yang cukup terlibat.

Menulis tindakan khusus hampir selalu merupakan kesalahan , tetapi ada kasus asli ketika Anda benar-benar membutuhkan fleksibilitas juga. Seperti biasa, penting untuk memilih pertempuran Anda dengan baik. Ini mungkin tugas yang menyenangkan pada awalnya, tetapi Anda mungkin akan menghadapi banyak masalah tak terduga dan menghabiskan banyak waktu yang mahal. Maksud saya ini sangat serius. Saya telah menulis serangkaian tindakan khusus C ++ untuk penggunaan korporat sendiri (untuk menghilangkan tindakan kustom VBScript yang rentan kesalahan) - ini bukan jalan di taman, dan meskipun pengkodean mungkin bukan yang paling sulit di dunia, debugging dan pengujian dan hookup ke file MSI yang sebenarnya sangat singkat. Beberapa waktu meneliti opsi siap pakai yang tersedia kemungkinan akan menghemat minggu kerja pengembangan, dan menghasilkan keandalan penyebaran yang jauh lebih besar.

Gunakan Urutan Peluncuran Aplikasi

Poin yang sangat penting adalah bahwa banyak konfigurasi aplikasi harus terjadi pada peluncuran aplikasi ketika Anda memiliki konteks runtime yang dapat diprediksi dan penanganan kesalahan yang baik tersedia, dan tidak dalam pengaturan yang hanya berjalan sekali dan fitur peniruan yang sangat rumit , pengurutan , pengkondisian dan runtime kompleksitas .

Pengaturan Anda tidak boleh mengonfigurasi aplikasi, itu harus menyiapkan aplikasi untuk konfigurasi pada peluncuran pertama . Khususnya pengaturan Anda harus menulis semua pengaturan yang memerlukan hak - hak tinggi - menulis ke HKLM, mendaftarkan layanan, menginstal ke jalur per-mesin dan segala hal yang aplikasi tidak dapat menulis sendiri dengan hak pengguna biasa.

Jika Anda seorang pengembang pengaturan, Anda harus menawarkan untuk terlibat mengode urutan peluncuran aplikasi alih-alih menulis tindakan kustom pengaturan . Jika tidak ada yang lain, untuk menghindari terlihat seperti Anda mencoba "memberikan tanggung jawab" kepada orang lain. Dalam urutan peluncuran ini Anda dapat menulis kode yang jauh lebih andal dan dapat diuji yang lebih mudah untuk mendapatkan bantuan dari personel QA untuk diuji (mereka sering tidak memahami pengujian penempatan serta pengujian aplikasi).

Kompleksitas Penataan

Inti dari kompleksitas pengaturan berpusat pada fakta bahwa kesalahan bersifat kumulatif (Anda mengelola proses pengiriman, bukan hanya kompilasi ulang cepat), kesalahan sangat sulit untuk di-debug (tidak ada akses ke sistem di mana kesalahan terjadi), dan sistem target negara berbeda dalam hampir setiap cara yang bisa dibayangkan . Silakan lihat jawaban ini untuk diskusi yang lebih menyeluruh tentang kompleksitas ini dan bagaimana sistem target dapat waspada dalam sejumlah cara yang mengejutkan: Pemasang Windows dan pembuatan WiX, dan Kompleksitas Penempatan (lihat di bagian bawah).

WiX (solusi MSI terbaik untuk beberapa tujuan)

Baca pengantar cepat WiX ini untuk deskripsi cara berbasis XML baru untuk mengkompilasi file MSI. File sumber berbasis teks memberikan kontrol sumber yang jauh lebih baik daripada sebelumnya. Ini adalah toolkit sumber terbuka gratis yang sangat dianjurkan .

NB : Lihat di bagian lain utasnya untuk mengetahui secara cepat masalah desain umum dengan file MSI - ini sangat tidak lengkap, tetapi harus layak dibaca. Saya tidak ingin menambahkan itu ke balasan ini karena tidak 100% terkait, tetapi untuk penggunaan di dunia nyata itu adalah topik penting.


Beberapa informasi inti MSI untuk sys-admin:

(maafkan "promosi" yang tidak tahu malu - itu untuk akses dan pengambilan yang mudah)

Berikut adalah beberapa tautan ke topik yang mungkin bermanfaat bagi administrator sistem dalam upaya mereka untuk mengendalikan penyebaran di jaringan mereka:

Topik panduan khusus:

Topik Konseptual / Praktik Terbaik:

Stein Åsmul
sumber
24

Jawaban ini sangat banyak pekerjaan yang sedang berjalan dan garis besar kasar. Selamat datang, penambahan, pertanyaan, dan pembaruan. Daftar ini tidak berarti lengkap. Tambahkan komentar dengan informasi tentang paket yang merepotkan.


Masalah Umum dan Cacat Desain Terlihat pada Paket MSI

Saya juga harus memperingatkan bahwa banyak file MSI mengandung kesalahan, terkadang yang serius, tetapi pembuat paket aplikasi yang terlatih akan dapat mendeteksi hal ini dan dalam banyak kasus menghilangkan masalah. Saya menambahkan ini sebagai jawaban terpisah karena pada dasarnya menjawab pertanyaan yang berbeda, tetapi saya merasa ini relevan di utas yang sama.

Rincian teknis yang terlibat dalam MSI sangat rumit . Pada tingkat dasar ini adalah tentang penguraian file dan pengaturan registri Anda menjadi komponen (instalasi atom) dan fitur (bagian aplikasi yang dapat dipilih pengguna untuk menginstal, misalnya fitur kamus). Ada sejumlah aturan praktik terbaik untuk memisahkan komponen, dan banyak kesalahan dalam file MSI di sini. Kesalahan ini umumnya ditangani dengan standarisasi pada penggunaan "upgrade besar".

Instalasi aktual dilakukan dalam sejumlah urutan instalasi, beberapa dengan hak tinggi . Semua hal ini didefinisikan dalam tabel basis data, dan di sinilah MSI sangat rumit untuk dipahami dan ditangani. Tersebar di seluruh urutan instalasi adalah tindakan standar dan kustom. Tindakan standar dirancang oleh Microsoft dan perlu dilakukan (urutan terkadang dapat dimodifikasi). Tindakan kustom tersedia untuk vendor untuk melakukan logika kustom yang tidak tercakup oleh MSI itu sendiri. Ini bisa dalam bentuk skrip atau kompilasi. Tindakan kustom dapat langsung (dijalankan sekaligus, tidak boleh mengubah sistem tetapi sering dilakukan) atau ditangguhkan (ditulis ke dalam skrip eksekusi yang kemudian dieksekusi sebagai transaksi dan karenanya mendukung rollback).

Kesalahan umum dalam MSI adalah (tanpa urutan tertentu - dan disajikan sebagai kekacauan nyata):

  • kesalahan pembuatan komponen (tidak mengikuti praktik terbaik). Ini dapat menyebabkan masalah untuk menambal dan meningkatkan dengan gejala misterius seperti file yang hilang dan pengaturan atau tambalan yang meledak dengan kesalahan yang tidak masuk akal. Untuk menyederhanakan orang harus menggunakan satu file per komponen kecuali jumlah file sangat besar.
  • perbarui masalah yang berkaitan dengan data pengguna yang ditimpa atau disetel ulang. Lihat detail lebih lanjut di bawah ini.
  • penjadwalan tindakan kustom yang salah di luar "bagian yang ditransaksikan" dari urutan instalasi atau tindakan kustom dari tipe yang salah ditempatkan secara tidak benar. Hal ini sering menyebabkan tindakan gagal (tidak ada hak tinggi) ketika dijalankan dari jarak jauh melalui sistem penyebaran dan rollback secara efektif lumpuh karena hanya tindakan yang ditransaksikan yang dibatalkan. Transaksi Pemasang Windows (pikir komit transaksi basis data) berjalan antara tindakan standar InstallInitialize dan InstallFinalize dalam urutan instalasi utama dan berjalan dengan hak yang lebih tinggi . Semua perubahan pada sistem harus dilakukan dalam transaksi ini - hal lain salah (tapi sayangnya cukup umum).
  • penggunaan tindakan kustom mode langsung untuk membuat perubahan pada sistem di luar urutan instalasi yang ditransaksikan . Ini mematahkan dukungan rollback dan umumnya akan memicu kesalahan keamanan karena tindakan kustom mode langsung tidak berjalan dengan hak pengguna yang ditingkatkan di mana pun mereka ditempatkan dalam urutan instalasi.
  • desain yang salah yang menyebabkan siklus perbaikan diri berulang terjadi tanpa alasan yang jelas. Berikut adalah artikel lain tentang hal ini, dari installsite.org
  • tindakan kustom yang tidak mematuhi penindasan GUI dalam mode instalasi tanpa pengawasan dapat menampilkan dialog modal yang menyebabkan penyebaran gagal sepenuhnya ketika dijalankan secara diam-diam. Masalah ini bersama dengan perbedaan keseluruhan antara mode diam dan mode interaktif dijelaskan secara lebih rinci di sini (agak bertele-tele dan bertele-tele): Menghapus instalasi dari Control Panel berbeda dari Hapus dari .msi
  • beberapa tindakan khusus dalam paket yang ditulis secara keliru dimasukkan hanya dalam urutan antarmuka pengguna . Ini menyebabkan mereka tidak dapat dijalankan dalam mode instalasi diam. Ini serius untuk penyebaran perusahaan karena pemasangan diam digunakan di sini hampir secara eksklusif. Masalah ini juga dapat memengaruhi makna penghapusan instalan yang mungkin harus Anda lakukan untuk menghapus instalan secara interaktif untuk menghapus instalan untuk memastikan semua tindakan kustom pembersihan berjalan. Sekali lagi, lihat tautan di bullet point sebelumnya untuk deskripsi tingkat antarmuka pengguna yang lebih panjang.
  • setup berisi file yang tidak dimaksudkan untuk digunakan di lokasi yang mereka instal. Biasanya file sistem yang harus diinstal berdampingan di folder assembly winxs.
  • kecepatan instalasi yang lambat adalah "masalah" lain yang banyak dilaporkan dengan MSI. Berikut adalah beberapa tips tentang masalah ini . Secara keseluruhan Penginstal Windows fitur sedikit overhead karena persyaratan registrasi yang berat dalam registri untuk apa yang sedang diinstal.
  • menimpa informasi khusus atau file data bersama . Ini bisa terjadi jika file INI diinstal melalui tabel File dan bukan tabel IniFile misalnya. Dalam kasus yang terakhir ini diperlakukan seperti "transaksi perubahan" dalam kasus sebelumnya itu adalah operasi penggantian file, yang umumnya salah kecuali file INI Anda memiliki bagian format tidak standar atau komentar besar yang Anda ingin digunakan dengan file Anda (umum untuk tertentu alat pengembang).
  • yang aturan yang kompleks untuk berkas Timpa dapat menyebabkan file yang akan ditimpa tidak sengaja, atau tidak diperbarui sama sekali - ini adalah masalah MSI klasik. Periksa artikel ini untuk mengetahui bagaimana Anda dapat memaksa menimpa file yang tidak akan ditingkatkan . Aturan dapat sedikit diubah oleh pengaturan khusus untuk properti REINSTALLMODE yang ditetapkan pada tingkat baris perintah msiexec.exe (menimpa versi yang lebih lama, menimpa versi yang sama, menimpa versi apa pun dll ...) dan mereka bekerja secara berbeda untuk file data dan file versi. Detail dalam SDK . Memahami ini sangat penting, dan itu adalah desain yang sering disukai bahkan ketika dipahami.
  • pendaftaran sendiri file COM selama instalasi dapat memicu peringatan keamanan atau menyebabkan masalah dengan berbagai cara. Lihat artikel ini: Mendaftar sendiri dianggap berbahaya .
  • variasi pada masalah penggantian file adalah kasus ketika peningkatan besar (yang mencopot pemasangan dan menginstal ulang produk) mencopot pemasangan file yang dimodifikasi, dan menginstal ulang versi default. Dalam kasus ini , konten terlihat dikembalikan atau ditimpa ketika sebenarnya itu dihapus terlebih dahulu dan kemudian diinstal ulang.
  • layanan yang berjalan dengan kredensial pengguna khusus dapat kehilangan kredensial mereka selama skenario peningkatan utama serta memiliki file pengaturan (tampaknya) kembali ke default (mereka benar-benar dihapus dan diinstal ulang). Sebagai catatan: menurut saya layanan yang berjalan dengan kredensial pengguna adalah cacat desain.
  • properti publik tidak diteruskan dengan benar dari klien ke proses server mencegah tindakan kustom dari menyelesaikan seperti yang diharapkan. Ini melibatkan memperbarui properti SecureCustomActionProperties.
  • Beberapa aplikasi tidak dapat berjalan dengan baik untuk pengguna lain daripada yang menginstal pengaturan awalnya. Ini adalah kesalahan desain yang serius, tetapi umumnya dapat diperbaiki oleh pembuat paket aplikasi yang berpengalaman menggunakan penyembuhan sendiri atau ActiveSetup untuk menambahkan kunci registri HKCU dan file profil pengguna . Ini adalah subjek yang cukup kompleks, dan dapat memerlukan sedikit seni hitam untuk bisa bekerja. Sebagai catatan: solusi sebenarnya, menurut saya, adalah mengubah aplikasi itu sendiri untuk dapat menginisialisasi semua pengaturan per pengguna berdasarkan pengaturan default dan templat yang disalin dari lokasi per mesin atau berdasarkan standar internal aplikasi (dari Kode sumber).
  • Beberapa file MSI mengacaukan keamanan untuk file yang diinstal dengan menetapkan hak baca / tulis penuh untuk non-administrator di sini, di sana, dan di mana-mana. Di lain waktu aplikasi berhenti bekerja pada versi Windows yang lebih baru karena kurang izin. Pemaket aplikasi menghadapi analisis kebutuhan izin khusus suatu aplikasi cukup sering. Biasanya beberapa izin tambahan diperlukan di HKLM atau di suatu tempat di% ProgramFiles%
  • Beberapa pengaturan Installshield kembali pada hari itu akan mencoba untuk terhubung ke Internet selama instalasi. Ini mengerikan untuk skenario penyebaran perusahaan di mana penyebaran dikontrol dengan ketat, dan penginstal tidak akan pernah diizinkan mengunduh konten baru langsung dari Internet.
  • Masalah jaringan lainnya adalah ketika pengaturan mencoba menampilkan GUI di mana orang memasukkan data yang divalidasi di Internet saat mereka menginstal, atau hanya untuk menampilkan konten langsung dari situs web mereka. Ini biasanya alamat email, informasi kontak, kunci lisensi dan hal-hal semacam itu. Koneksi dapat gagal sepenuhnya karena berbagai alasan, seringkali karena konfigurasi proxy yang hilang di lingkungan perusahaan (tidak ada koneksi langsung ke Internet, semua lalu lintas Internet dialihkan melalui server cache tertentu dan setiap proses perlu memberikan kredensial untuk melewati firewall) . Berikut adalah artikel tentang bahaya memvalidasi lisensi melalui pengaturan .
  • Installshield digunakan untuk menginstal runtime untuk bahasa Installcript -nya . Ini Setup prasyarat umumnya termasuk dalam setup.exe, dan itu adalah sumber legendaris masalah . Ada banyak versi, beberapa inkompatibilitas, dan sejumlah kesalahan runtime dulu terjadi. Karena versi 12 (atau sekitar) runtime ini sekarang diinstal dengan andal, dan itu adalah kompilasi ke asli atau menjalankan kotak pasir (saya tidak yakin yang mana, satu atau yang lain - mungkin kotak pasir) dengan cara yang dapat diandalkan. Pengaturan Installshield yang lebih lama mungkin menampilkan masalah penyebaran ini. Ada situs dukungan lawas dari Installshield untuk masalah seperti ini: http://consumer.installshield.com/common.asp
  • Beberapa pengaturan dapat menampilkan perilaku pemasangan yang tidak menentu atau bug yang terputus-putus ketika dijalankan pada mesin yang diatur untuk bahasa yang berbeda dari bahasa Inggris, atau bahkan ketika Anda menjalankan versi pengaturan yang diterjemahkan (diterjemahkan) pada mesin Inggris. Ini bisa murni kegagalan runtime, atau kasus ketika fitur kotak dialog lokal memotong teks atau pemformatan yang salah atau terjemahan yang salah atau banyak jenis kesalahan lain yang berkaitan dengan lokalisasi bahasa- seluruh bidang keahlian sendiri (menerjemahkan teks dalam gambar, menerjemahkan perangkat lunak itu sendiri, menerjemahkan materi pemasaran, menangani permintaan dukungan internasional, adaptasi ke pengaturan bahasa di OS, dll ...). Beberapa bahasa memerlukan seluruh aplikasi diubah untuk memperhitungkan kekhasan bahasa mereka - masalah khasnya adalah makro string dan pengaturan halaman kode, yang terakhir kurang menjadi masalah dengan pengenalan Unicode. Lihat cuplikan layar contoh dari alat terjemahan .
  • Hampir semua pengaturan gagal beberapa dari tes validasi built-in yang tersedia untuk menguji kualitas paket MSI. Lihat artikel ini untuk contoh praktis validasi.
  • Terkadang upgrade gagal untuk MSI karena fakta bahwa hanya 3 digit nomor versi MSI yang benar-benar diperiksa selama pemindaian upgrade utama.
  • Instalasi file INI adalah fitur bawaan Penginstal Windows. Entri dapat ditambahkan, dihapus, digabungkan, atau ditangani dengan cara apa pun yang diperlukan. Namun, cukup umum untuk file INI dipasang sebagai file, bukan sebagai nilai tersegmentasi. Ini dapat menyebabkan file INI ditimpa saat menginstal ulang, alih-alih diperbarui. Masalah MSI yang sangat umum.
  • Masalah di atas juga berlaku untuk aplikasi .NET dan file Config.xml mereka. Dalam hal ini MSI TIDAK memiliki cara untuk memperbarui konten secara terperinci, dan Anda harus membuat kode pembaruan melalui tindakan khusus atau mengganti seluruh file yang sedang diinstal. Wix mungkin memiliki fitur baru untuk ini, tetapi mesin Pemasang Windows tidak memiliki fitur bawaan ini.

Ada sejumlah kesalahan yang lebih halus dan beberapa masalah besar yang khas yang akan saya lupakan.

Lihat artikel Praktik Terbaik Pemasang Windows dari MSDN .

Stein Åsmul
sumber
5

Menggunakan MSI juga membuat penambalan (file MSP) dan peningkatan menjadi lebih mudah. MSI menggunakan konsep kode Produk dan Upgrade yang unik yang membuat seluruh proses lebih mudah.

Beberapa sistem penyebaran (CA Unicenter Software Delivery adalah salah satu contoh) juga dapat memahami MSI dengan cara khusus, yang memungkinkan mereka untuk mengintegrasikan jauh lebih baik ke dalam sistem penyebaran. Misalnya, Anda dapat memberi makan MSI ke perpustakaan perangkat lunak sistem penyebaran dan itu akan secara otomatis mendeteksi berbagai fitur dalam produk dan secara otomatis memungkinkan lebih banyak tindakan kustom granular (Instalasi Lokal, Verifikasi, Perbaikan dll.) Dan masuk.

Penyembuhan diri / perbaikan juga merupakan nilai tambah utama bagi MSI.

Wayne Koort
sumber
2

Juga, periksa open source Windows Installer XML , "toolset yang membangun paket instalasi Windows dari kode sumber XML. Toolset mendukung lingkungan baris perintah yang dapat diintegrasikan oleh pengembang ke dalam proses build mereka untuk membangun paket setup MSI dan MSM." Ini digunakan oleh MS untuk menyiapkan beberapa paket perangkat lunak utamanya.

Ian Kelling
sumber
0

Anda dapat melakukan transformasi - secara teori Anda dapat menyesuaikan banyak hal, jika program dipaket dengan benar oleh vendor, Anda dapat membuat penyebaran sepenuhnya otomatis tanpa interaksi dengan pengguna akhir - yang sangat membantu ketika Anda ingin membakukan lingkungan windows Anda dan memiliki lebih dari beberapa komputer.

untuk melihat apa yang dilakukan orang dengan msis [atau penyebaran tanpa pengawasan] kunjungi misalnya situs ini dan forumnya .

pQd
sumber