Sebagai bagian dari pipa pengiriman kontinu, saya ingin memasang msi pada mesin yang diberikan. msiexec plus psexec melakukan ini dengan sempurna, tetapi tampaknya msiexec hanya dapat masuk ke file dan saya membutuhkannya untuk masuk ke stdout / stderr.
Saat ini, untuk mendapatkan output kembali ke perangkat lunak CI kami, saya harus menambahkan langkah kedua untuk menggemakan isi log, yang tampaknya agak sia-sia.
Adakah yang pernah mengalami masalah ini sebelumnya (dan mengatasinya?)
Terima kasih sebelumnya atas bantuan apa pun di sini.
Menandai
Jawaban:
Saya memeriksanya lagi, dan ini beberapa informasi terbaru :
Dimungkinkan untuk menekan GUI MSI dan menetapkan GUI eksternal yang diterapkan oleh pihak ketiga. GUI eksternal ini dapat menerima pesan dari msiexec.exe saat melakukan instalasi. Ini sebagian besar untuk menerapkan bilah kemajuan kustom , tetapi tampaknya Anda juga dapat mencegat sebagian besar pesan kesalahan dan pesan status lainnya: Fungsi MsiSetExternalUI .
Parameter yang menarik adalah dwMessageFilter . Dengan mengatur ini, Anda dapat, misalnya, hanya menerima pesan kesalahan yang terjadi selama instalasi - atau begitulah tampaknya. Saya kira ini cukup untuk sebagian besar tujuan.
Sayangnya saya tidak memiliki kode contoh untuk saat ini. Saya akan menguji ini nanti, ketika saya mengatur sistem saya dengan benar. Fungsi MsiEnableLog adalah panggilan fungsi terkait yang akan memungkinkan logging ke file. Pembaruan: Ini adalah contoh SDK yang berfungsi .
Pada tingkat antarmuka baris perintah , Anda juga dapat mengatur logging untuk menyiram buffernya segera ke file dengan menambahkan ! parameter:
Ini berarti file log ditulis terus menerus sehingga tidak ada buffer log yang hilang jika msiexec.exe macet. Biaya pemasangannya jauh lebih lambat karena overhead IO.
sumber
MsiExec
hanya dapat masuk ke file, jadi Anda harus terus menggema konten file itu setelah installer selesai.sumber
Saya lebih suka cache file log MSI pada sistem lokal secara permanen di lokasi umum untuk setiap instalasi, dan kemudian hanya mendaftarkan kode keluar dari seluruh pengaturan. Jika pengaturan melaporkan keberhasilan, file log cukup menarik? Hanya lebih banyak "kebisingan"?
Selain itu ada beberapa sistem pengiriman perangkat lunak yang akan menangkap informasi log untuk menginstal MSI dan menyimpannya secara terpusat. Salah satu contoh adalah SCCM (Microsoft mengubah nama Server Manajemen Sistem - SMS).
Menyiapkan pencatatan untuk semua file MSI, lihat bagian "Secara global untuk semua penyetelan pada mesin": http://www.installsite.org/pages/en/msifaq/a/1022.htm
sumber
Saya menggunakan skrip PowerShell berikut. Itu masih membutuhkan menulis log ke file tetapi juga menulis konten langsung ke stdout:
sumber