ist das, was ich am Ende mit ...
I verwendet WiX und DTF erstellt einen Code Custom Action verwaltet einen bestimmten Abschnitt einer Konfigurationsdatei zu verschlüsseln:
public static void EncryptConfig(Session session)
{
var configPath = session["APPCONFIGPATH"];
var sectionToEncrypt = session["SECTIONTOENCRYPT"];
var fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = configPath;
var configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
ConfigurationSection section = configuration.GetSection(sectionToEncrypt);
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
section.SectionInformation.ForceSave = true;
configuration.Save(ConfigurationSaveMode.Modified);
}
}
Teil meiner mangelndes Verständnis, das diese Frage ausgelöst hat, war nicht das Wissen, dass Sie benutzerdefinierte Aktionen in verwaltetem Code mit DTF sicher erstellen können. Dokumentation ist bei DTF spärlich, aber wenn Sie es erst mal zum Laufen bringen, ist es großartig.
Ich fand, dass dies nur funktionierte, wenn ich die benutzerdefinierte Aktion nach InstallFinalize einplante.
Hier die WiX Config ist es um sie geschehen:
<InstallExecuteSequence>
<Custom Action="EncryptConfigurationFiles" After="InstallFinalize" />
</InstallExecuteSequence>
<Fragment>
<Binary Id="YourProject.CustomActions.dll" SourceFile="$(var.YourProject.CustomActions.TargetDir)$(var.YourProject.CustomActions.TargetName).CA.dll" />
<CustomAction Id="EncryptConfigurationFiles" BinaryKey="YourProject.CustomActions.dll" DllEntry="EncryptConfig" Return="check" />
</Fragment>
Diese Blogs/Websites half mir dort und der Code viel bekommen von oben aus ihnen abgeleitet wurde:
http://geekswithblogs.net/afeng/Default.aspx http://blog.torresdal.net/2008/10/24/WiXAndDTFUsingACustomActionToListAvailableWebSitesOnIIS.aspx http://blogs.msdn.com/jasongin/archive/2008/07/09/votive-project-platform-configurations.aspx
@PITADeveloper ... Danke für die Antwort. Ich habe festgestellt, dass ich die Assembly nicht laden musste, um die Konfigurationsdatei zu verschlüsseln.
Wenn Sie dies verwenden, sollten Sie versuchen, fangen und ein ActionResult zurückgeben ... Das obige ist Pseudocode.
Schließlich verwende ich den DataProtectionConfigurationProvider. Für den RSA-Provider denke ich, dass es noch ein paar Reifen mehr gibt, durch die man springen kann.
Ich hoffe, das hilft jemandem!
Schön! Dies wird mir in Zukunft sicher weiterhelfen. –