zoukankan      html  css  js  c++  java
  • 网站安装打包 新建网站[四][文件解压] 上

    在新建网站之前,就是要把打包好的项目拷贝一份到IIS指定的路径上,同时,还要为个别目录设置相应的访问权限!

    于是就产生了两件事:

    1。拷贝-》[这里我是采用RAR打包,然后解压]

    2。设置权限

    如果是用拷贝方式,关于文件夹Copy,可以参考我的这篇文章:

    文件夹复制操作(非递归循环遍历文件夹)

    http://www.cnblogs.com/cyq1162/archive/2007/05/28/762294.html


    为什么我没采用拷贝的方法,前提有两个,就是项目的文件夹有太多,在制作应用程序安装程序时,只能添加文件,而文件夹只能一个一个的新建,太麻烦!要不就要把项目文件放到其它工程里,那通过项目主输出来实现。我也不想放到新工程或集成到工具项目里,麻烦!

    于是,我通过压缩项目文件,当然没有压缩web.config,因为web.config是要修改的,在压缩包里就改不了。所以最后的做法是解压RAR+文件拷贝web.config!

    关于RAR解压,这里给出一段代码就算解决了:

    RAR解压
    public bool WARToFoler(string rarFromPath, string rarToPath)
            {
                Process rarPro 
    = new Process();
                rarPro.StartInfo.FileName 
    = AppConfig.SoftSetup_WinRARSystemPath;
                rarPro.StartInfo.Arguments 
    = string.Format(" x  \"{0}\" \"{1}\" -o+ -r -ibck", rarFromPath, rarToPath);
                rarPro.StartInfo.UseShellExecute 
    = false;
                rarPro.StartInfo.RedirectStandardInput 
    = true;
                rarPro.StartInfo.RedirectStandardOutput 
    = true;
                rarPro.StartInfo.RedirectStandardError 
    = true;
                rarPro.StartInfo.CreateNoWindow 
    = true;
                rarPro.StartInfo.WindowStyle 
    = ProcessWindowStyle.Hidden;
                rarPro.OutputDataReceived 
    += new System.Diagnostics.DataReceivedEventHandler(p_OutputDataReceived);
                rarPro.ErrorDataReceived 
    += new DataReceivedEventHandler(rarPro_ErrorDataReceived);
                rarPro.Start();
    //解压开始  
                rarPro.BeginOutputReadLine();
                rarPro.BeginErrorReadLine();
                rarPro.WaitForExit();
                rarPro.Dispose();
                
    return IsOK;
            }
            
    void rarPro_ErrorDataReceived(object sender, DataReceivedEventArgs e)
            {
                
    if (e.Data!=null && e.Data != "")
                {
                    outMsg.Text 
    += "失败:" + e.Data + "\r\n";
                    IsOK 
    = false;
                }
            }
            
    void p_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
            {
                
    if (e.Data != null && e.Data != "")
                {
                    outMsg.Text
    +="成功:" + e.Data + "\r\n";
                }
            }

    AppConfig.SoftSetup_WinRARSystemPath这个是就是安装的RAR.exe路径!

    -ibck参数是让解压在后台运行,这样可以不用弹出个解压框!

    前些天也写过一篇和RAR相关的文章:

    记录下关于调用RAR解压缩的问题

    http://www.cnblogs.com/cyq1162/archive/2010/01/13/1646678.html

    OK,RAR解压就这么告一段落,接下来,我有一个App_Data目录,由于会往里面写生成的xml,所以为之添加一个可写权限!


    设置权限的方式有三种,一种用net自带的封装类。另一种直接调用cacls.exe实现,还有一种就是网上下的调用Microsoft.win32的某种复杂方式。

    以下就用第一种了。用net自带的类实现,非常的简单,三行代码:

    设置权限
    System.Security.AccessControl.DirectorySecurity fSec = new DirectorySecurity();
    fSec.AddAccessRule(
    new FileSystemAccessRule("everyone", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
    System.IO.Directory.SetAccessControl(path, fSec);

    这里是添加了一个everyone用户,当然也可以换成aspnet用户,具体看安全性要求给了!后面就给出了所有权限。

    具体关于权限的说明,多百google度或在vs下看按F1帮助文档就清楚了!

    打完,收工!

    版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    个人微信公众号
    创业QQ群:617713515
    Donation(扫码支持作者):支付宝:
    Donation(扫码支持作者):微信:
  • 相关阅读:
    什么是枚举?有什么作用?有什么好处?
    java获取某个范围内的一个随机数
    java中普通代码块,构造代码块,静态代码块的区别及代码示例
    Oracle数据库迁移
    linux下修改文件权限
    <%@ include file="">和<jsp:include file="">区别
    JAVA常见异常解析
    jdk环境变量配置
    jstl中fmt标签详解
    jsp脚本元素
  • 原文地址:https://www.cnblogs.com/cyq1162/p/1653822.html
Copyright © 2011-2022 走看看