Ben kaynak konusunda yardımcı olamayacağım fakat bu işi ben yapıyor olsaydım şu şekilde yapardım:
Program her açıldığında sunucuda bulunan bir XML ya da JSON dosyasını parse edip versiyon bilgisini alırdım. Bu değerin mevcut versiyondan büyük olup olmadığını kontrol ederdim. Eğer büyükse güncelleme bildirimi verirdim. Güncelleme kabul edildiğinde sunucudan setup_[güncel_versiyon] dosyasını indirirdim. Download bittiğinde de dosyayı açardım. Gerisi zaten kullanıcıya kalıyor.
Ek olarak, FTP ile kullanıcı adı ve şifre girilerek bağlantı kurulmasını tavsiye etmem. Bu ciddi bir güvenlik açığı yaratır. İşi sıradan bir indirme işlemi ile bitirmek gayet yeterli olacaktır. Google'da C# ile dosya indirme ve açma gibi konuları araştırmanızı tavsiye ederim.