Özel Eylemleri Geri Alma
Yükleyici yükleme betiğini işlediğinde aynı anda bir geri alma betiği oluşturur. Geri alma betiğine ek olarak, yükleyici yükleme sırasında sileceği her dosyanın bir kopyasını kaydeder. Bu dosyalar gizli bir sistem dizininde tutulur. Yükleme tamamlandıktan sonra geri alma betiği ve kaydedilen dosyalar silinir. Yükleme başarısız olursa, yükleyici yükleme sırasında yapılan değişiklikleri geri almayı ve bilgisayarın özgün durumunu geri yüklemeyi dener.
Veritabanı tablosuna satır ekleyerek sistem işlemlerini zamanlayan özel eylemler yüklemenin geri alınmasıyla tersine çevrilse de, sistemi doğrudan değiştiren veya diğer sistem hizmetlerine komut veren özel eylemler her zaman geri alma işlemiyle geri alınamaz. Geri alma özel eylemi, yükleyicinin yalnızca bir yükleme geri alma işlemi sırasında yürüttüğü bir eylemdir ve amacı sistemde değişiklik yapmış özel bir eylemi tersine çevirmektir.
Geri alma özel eylemi, ertelenen yürütme özel eylemi türüdür çünkü yükleme dizisi sırasında çağrıldığında yürütmesi ertelenir. Normal ertelenen özel eylemden farklıdır, bu eylem yalnızca geri alma sırasında yürütülür. Geri alma özel eylemi her zaman ertelenen özel eylemden önce eylem dizisine geri dönmelidir. Geri alma özel eylemi, ertelenen özel eylemin yürütmenin ortasında kesintiye uğraması durumunu da işlemelidir. Örneğin, özel eylem yürütülürken kullanıcı İptal düğmesine basacaksa.
Özel Geri Alma Eylemleri'nin zaman uyumsuz olarak çalışamayacağını unutmayın. Bkz. Zaman Uyumlu ve Zaman Uyumsuz Özel Eylemler.
Geri alma özel eyleminin tamamlayıcısı, işleme özel eylemidir. Yükleyici, yükleme sırası sırasında bir işleme özel eylemi yürütür, özel eylemi geri alma betiğine kopyalar, ancak geri alma sırasında eylemi yürütmez.
Bir geri alma özel eyleminin, özel eylemler yürüterek yapılan tüm değişiklikleri kaldıramadığını unutmayın. Yükleyici geri alma betiğine hem geri alma hem de işleme özel eylemleri yazsa da, özel eylemleri işleme yalnızca yükleyici yükleme betiğini başarıyla işledikten sonra çalışır. Özel eylemler işleme, geri alma betiğinde çalıştırılacak ilk eylemlerdir. Bir işleme özel eylemi başarısız olursa, yükleyici geri alma işlemini başlatır, ancak yalnızca geri alma betiğine önceden yazılmış olan işlemleri geri alabilir. Bu, özel işleme eylemine bağlı olarak geri alma işleminin eylem tarafından yapılan değişiklikleri geri alamayacağı anlamına gelir. Dönüş kodlarını yoksaymak için özel eylemi yazarak özel eylemler işleme hatalarını yoksayabilirsiniz.
Yükleyici bir geri alma özel eylemi çalıştırdığında ayarlanacağı tek mod parametresi MSIRUNMODE_ROLLBACK. Çalıştırma modu parametrelerinin açıklaması için bkz. MsiGetMode.
CustomAction tablosunun Type alanınabir seçenek bayrağı eklenerek bir geri alma özel eylemi belirtilebilir. Bir geri alma özel eylemini belirleme seçeneği bayrağı için bkz. Özel Eylem In-Script Yürütme Seçenekleri.
Geri alma ve işleme özel eylemleri geri alma devre dışı bırakıldığında çalışmaz. Paket yazarı uygun yükleme için bu tür özel eylemler gerektiriyorsa, geri alma devre dışı bırakıldığında yüklemenin devam etmesini engelleyen bir koşulda RollbackDisabled özelliğini kullanmalıdır. Geri almayı devre dışı bırakma hakkında bilgi için bkz. Geri Alma Yüklemesi (Windows Installer).