Elemen Upgrade di dalam elemen Produk, dikombinasikan dengan penjadwalan tindakan yang tepat akan melakukan uninstall yang Anda cari. Pastikan untuk mencantumkan kode peningkatan semua produk yang ingin Anda hapus.
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="00000000-0000-0000-0000-000000000000">
<UpgradeVersion Minimum="1.0.0.0" Maximum="1.0.5.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
Perhatikan bahwa, jika Anda berhati-hati dengan bangunan Anda, Anda dapat mencegah orang lain memasang versi produk Anda yang lebih lama secara tidak sengaja pada versi yang lebih baru. Untuk itulah bidang Maksimal. Ketika kami membangun installer, kami mengatur UpgradeVersion Maximum ke versi yang sedang dibangun, tetapi IncludeMaximum = "no" untuk mencegah skenario ini.
Anda memiliki pilihan mengenai penjadwalan RemoveExistingProducts. Saya lebih suka menjadwalkannya setelah InstallFinalize (daripada setelah InstallInitialize seperti yang direkomendasikan orang lain):
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
</InstallExecuteSequence>
Ini meninggalkan versi produk yang diinstal sebelumnya hingga file baru dan kunci registri disalin. Ini memungkinkan saya memigrasikan data dari versi lama ke yang baru (misalnya, Anda telah mengubah penyimpanan preferensi pengguna dari registri ke file XML, tetapi Anda ingin sopan dan memigrasi pengaturannya). Migrasi ini dilakukan dalam tindakan kustom yang ditangguhkan sebelum InstallFinalize.
Manfaat lain adalah efisiensi: jika ada file tidak berubah, Pemasang Windows tidak repot menyalinnya lagi ketika Anda menjadwalkan setelah InstallFinalize. Jika Anda menjadwalkan setelah InstallInitialize, versi sebelumnya sepenuhnya dihapus terlebih dahulu, dan kemudian versi baru diinstal. Ini menghasilkan penghapusan yang tidak perlu dan penyalinan ulang file.
Untuk opsi penjadwalan lainnya, lihat topik bantuan RemoveExistingProducts di MSDN. Minggu ini, tautannya adalah: http://msdn.microsoft.com/en-us/library/aa371197.aspx