Microsoft.Deployment.WindowsInstaller.Installer sınıfını kullanarak bir MSI paketindeki tüm özelliklerin geçerli durumlarını almaya çalıştığımda bir sorunla karşılaştım.WindowsInstaller özelliklerinin ValidStates özellikleri alınamıyor
Her FeatureInfo öğesinin ValidStates özelliğini bir Oturum içinde kopyalamak istiyorum. Ancak bunu yaparken "Sap geçersiz bir durumda." istisna. Bu değerlerin her birini Console.WriteLine() kullanarak yazdırırsam veya Visual Studio'daki kodu kullanarak adım atmazsam, bir istisna yoktur.
Bunu yapmama engel olan şeyin ne olduğu konusunda bir kayıp yapıyorum. Şimdiden teşekkürler!
Benim Kod:
var featureDictionary = new Dictionary<string, string[]>();
if (string.IsNullOrWhiteSpace(mPath))
return featureDictionary;
try
{
Installer.SetInternalUI(InstallUIOptions.Silent);
using (var session = Installer.OpenPackage(mPath, true))
{
foreach (var feature in session.Features)
{
try
{
var states = feature.ValidStates.Select((state) => state.ToString());
featureDictionary.Add(feature.Name, states.ToArray());
}
catch (InstallerException ex)
{
Debug.WriteLine(ex.Message);
}
}
}
}
catch (InstallerException) { }
return featureDictionary;
MSI'yi neden dosya olarak açamıyorum? – JaredSibson
Özellik durumlarının çalışan yüklemeden olmasını istiyorsunuz - disk üzerinde sabit bir MSI dosyası açarak, çalıştırdığınız veya başka bir rasgele MSI dosyası olsun bunu elde edemezsiniz. Geçerli çalışan yükleme işleminin tanıtıcısını kullanarak bunu, geçerli * yükleme * veritabanını tüm değişen dinamik durumları ile ilişkilendirmek için kullandığı tam olarak budur. – PhilDW
Ama değerleri yazdırırsam onlara erişebilirim. Yaptığım şeyin farkında eksik olan bir şey yok mu? – JaredSibson