网站安装打包 新建网站[四][文件解压] 上

简介:

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

于是就产生了两件事:

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

2。设置权限

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

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

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

 


 

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

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

关于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帮助文档就清楚了!

 

打完,收工!

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/01/22/1653822.html

相关文章
|
5月前
|
安全 网络安全 数据安全/隐私保护
Mendelson AS2 介绍下载和配置
Mendelson AS2 介绍下载和配置
|
5月前
使用 responseentity进行文件的下载
使用 responseentity进行文件的下载
161 0
|
机器人 Python
在阿里云RPA中,获取下载的文件
在阿里云RPA中,获取下载的文件
347 2
|
编解码 Java 应用服务中间件
文件的上传和下载
文件的上传和下载
87 0
|
前端开发
生成pdf文件并打包zip下载
使用itextpdf生成pdf文件,使用ant的org.apache.tools.zip生成zip包,并下载
164 0
|
开发工具 开发者 iOS开发
hbuilderx打包的ipa文件在线上传
开发ios app的时候,打包ios应用,需要一个.p12后缀的ios打包证书和一个证书profile文件,这两个文件在开发工具上没有生成的方法。苹果官方提供的方法,生成这个两个文件需要苹果开发者账号和mac苹果电脑,但是我们大多数uniapp的开发者,都是使用windows电脑进行开发的,没有mac电脑,那么除了使用mac电脑生成,还有没有其他的方案呢?下面我来讲述下如何在苹果开发者网站即可生成ios证书
231 0
hbuilderx打包的ipa文件在线上传
|
Python
wxpython-通过request远程下载网络zip文件,并解压安装文件
1.通过wxpython,产生一个窗体,窗体上有一段[文字标签],一个[进度条],一个[开始按钮]。 2.点击【开始按钮】,下载网络资源文件http://example.cn/test.zip。进度条和文字标签同时显示百分比 3.下载完成后,解压到指定目录。如果指定目录下有文件,则覆盖掉。
419 0
wxpython-通过request远程下载网络zip文件,并解压安装文件
|
存储 Apache 安全
文件的上传和下载学习小结
文件的上传和下载学习小结 一、文件上传 客户端通过浏览器将文件上传至服务器。 对于我们写代码来说,就是IO操作。 二、实现文件上传 对表单有什么要求? 1. 提交方式必须为post 2. enctype="multipart/form-data" 3. 对于服务器的servlet有什么要求? request.getParameter("name"); 不能用该方式获取表单数据了,若非要用,则返回null。
1242 0
|
Web App开发 存储 Java
day18_文件的上传和下载学习笔记
一、文件的上传和下载 1、文件上传的原理分析 什么是文件上传?    要将客户端(浏览器)数据存储到服务器端,而不将数据直接存储到数据库中,而是要将数据存储到服务器所在的磁盘上,这就要使用文件上传。
1228 0