我的 C# 应用程序有两个版本的安装程序。说V1和V2。
我已经安装了 V1。在安装项目的注册表设置中,我创建了一个注册表项InstallDir= [TARGETDIR]
,它提供了我的应用程序的安装文件夹。因此,当我想获取安装文件夹时,我可以使用我生成的注册表项来获取路径。
问题是在安装版本 2 V2 的过程中,我之前版本安装文件夹中的 example.txt 文件应该被复制到某个地方。
我在安装状态下的安装程序类中创建了自定义操作,如下所示。
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
string path = null;
string registry_key = @"SOFTWARE\";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach (string subkey_name in key.GetSubKeyNames())
{
if (subkey_name == "default Company Name")
{
using (RegistryKey subkey = key.OpenSubKey(subkey_name))
{
path = (string)subkey.GetValue("InstallDir");
}
}
}
}
string fileName = "example.txt";
string sourcePath = path;
string targetPath = @"C:\Users\UserName\Desktop";
// Use Path class to manipulate file and directory paths.
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
// To copy a file to another location and
// overwrite the destination file if it already exists.
System.IO.File.Copy(sourceFile, destFile, true);
}
我的想法是,如果我在自定义操作的安装方法中指定注册表的路径,它将采用以前的版本路径并将文件复制到以前的版本安装路径中。
但是,即使我复制了自定义操作的安装方法,注册表也已使用较新版本的路径进行更新,并采用当前值并使用较新版本文件进行更新。
但我需要该安装文件夹中的先前版本文件。
我怎么能做到这一点?