应用程序做完后打包部署,在打包数据库的时候创建安装程序类,在其cs代码中用到了sql脚本,通过读SQL脚本来建数据库中的表,具体代码为:
string databaseName = Context.Parameters["dbname"]; //数据库名称
string sqlFilePath = Application.StartupPath + "\\yi.sql";//sql脚本路径               
string sqlContent = File.ReadAllText(sqlFilePath);//读取sql脚本内容第二句代码要求yi.sql文件必须放在C:\WINDOWS\system32下,这是为什么呢?当在客户端应用的时候我肯定不能把这个文件再加到客户端机器的那个目录下吧,而应该是打包在一块的。那么具体这个路径该怎么写呢?
非常感谢!!

解决方案 »

  1.   

    第二句代码要求yi.sql文件必须放在C:\WINDOWS\system32下,这是为什么呢?不要把,你现在不就是从exe程序目录下读取的?string sqlFilePath = Application.StartupPath + "\\yi.sql";//sql脚本路径   
      

  2.   

    我打包时“生成项目”后,点击生成包中的exe安装该应用程序时,就提示C:\WINDOWS\system32没有yi.sql文件。
    其实我本来就把yi.sql文件放在应用程序的类中了,但是我不知道怎么写这个文件的路径就用了这句代码:string sqlFilePath = Application.StartupPath + "\\yi.sql";//
    在安装时就提示“C:\WINDOWS\system32没有yi.sql文件”。
    您明白我说的意思了吗大哥?
    非常感谢您的热心回复!
      

  3.   

    用文本编辑器打印你的安装项目文件: *.vdproj检查一下: yi.sql 有几个? 安装位置是否正确?
      

  4.   

    和有几个文件还有关系吗?我是打包后安装时报错的。我本以为用Application.StartupPath的路径还是在debug下呢,就把yi.sql文件放到debug下了,可是报错是C:\WINDOWS\system32,这个路径不就是安装软件的路径吗?对吧?
      

  5.   

    用个相对路径即可了, 
    String relativePath = @"\yourpath.jpg";
      

  6.   

    在安装部署中添加文件内容
    在文本框中设置target
    Context.Parameters[ " targetdir " ]+"\\a.sql"
      

  7.   

    谢谢您的回复!在部署的时候看资料用到了targetdir,但是我不明白这个是什么意思,它指代的到底是什么,能解释一下吗?非常感谢!!
      

  8.   

    targetdir="[TARGETDIR]\"是安装后的目标路径
      

  9.   

    如果用这一句Context.Parameters[ " targetdir " ]+"\\a.sql",是否需要把a.sql放到安装后的目标路径下呢?
      

  10.   

    用@路径名貌似不可以吧,它提示得到的路径是:sever下
      

  11.   

    在安装部署中添加sql文件为内容文件
      

  12.   

    把那个文件放在 C:\WINDOWS\system32 下啊