を設定するアンインストール時にリセットする必要がある値が既に存在する特定のキーの下にレジストリに値を設定したい私のプログラムの古い価値。VSセットアッププロジェクト - カスタムアクションでレジストリ値を設定する(再)私のプログラムのインストール中に
protected override void OnBeforeInstall(IDictionary savedState) {
var originalCommand = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myKey\Shell\Open\Command", null, "");
Registry.SetValue(@"HKEY_CURRENT_USER\Software\myProgram\OriginalCommand", null, originalCommand);
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myKey\Shell\Open\Command", null, "new value");
base.OnBeforeInstall(savedState);
}
protected override void OnAfterRollback(IDictionary savedState) {
ResetRegistryEntries();
base.OnAfterRollback(savedState);
}
protected override void OnAfterUninstall(IDictionary savedState) {
ResetRegistryEntries();
base.OnAfterUninstall(savedState);
}
private void ResetRegistryEntries() {
var originalCommand = Registry.GetValue(@"HKEY_CURRENT_USER\Software\myProgram\OriginalCommand", null, "");
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myKey\Shell\Open\Command", null, originalCommand);
}
2奇妙なことは、最初の..今があります:私は、Visual Studio経由でインストールする場合(右私のセットアッププロジェクトをクリックしてインストール)すべてが正常に動作します。..私の新しい値Iは、カスタムアクションでこれを解決しようとしました私の "バックアップ"レジストリキーにも古い値が設定されています。すべてをアンインストールすると、必要に応じてリセットされます。しかし、..私は作成された.msiファイルを介してインストールする場合古い値は私のバックアップレジストリキーに設定されていません..しかし、新しい値..と非常にstange事..私はすべてをアンインストール..どこから。