我有一个c#应用程序。我需要将我的数据库文件从CD复制到目标文件夹,然后将其用于登录和其他目的。 为此,我编写了一个安装程序类,如下所示。
public partial class Installer1 : Installer
{
public Installer1()
{
InitializeComponent();
Copy_our_Files();
}
private void Copy_our_Files()
{
System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
var d = "";
foreach (System.IO.DriveInfo drive in drives)
{
if (drive.DriveType == System.IO.DriveType.CDRom)
{
d = drive.Name;
break;
}
}
string addre = @"C:\Windows\\System32";
System.IO.File.Copy(d + @"Database5.accdb", addre + "\\Database5.accdb");
}
}
但在安装我的应用程序时,数据库文件不会复制到c:\Windwos\System32
文件夹中提到的位置。
答案 0 :(得分:3)
您需要在安装程序中执行此操作。您说您正在安装您的应用程序文件。您使用的任何安装程序软件的实例都必须复制该数据库文件。复制其他文件应该在您的安装软件中实现。
您当前的黑客攻击非常脆弱,在许多现实场景中都会失败:
如果我没有CD ROM驱动器怎么办?从USB记忆棒或我的同事计算机CR ROM驱动器安装是不可能的。
如果我有多个CD ROM驱动器怎么办?
如果我在C:\ Windows中没有安装Windows,该怎么办?
如果我没有写入System32目录,该怎么办?你为什么要写那里?
结论:安装程序软件已解决您的问题。您已经“安装”了,所以我假设您已经在使用安装程序软件。让它做它的构建,不要试图自己模仿它。
答案 1 :(得分:0)
可能发生的事情是它的失败,但安装人员并不明白为什么他们失败了。
检查事件日志中的异常。如果做不到这一点,你需要断言你的方法来揭示答案。
使用EventLog
对象写出进度等d + @"Database5.accdb"
有效路径。
我还建议使用其中一个覆盖等或一个适合您的需求。我无法说明安装程序在InitializeComponent
之后的什么时候。
protected override void OnCommitted(IDictionary savedState)
{
//Your code
base.OnCommitted(savedState)
}