1. ホーム

ウェブサイトのインストールとパッケージング 新規ウェブサイト[IV][ファイル解凍]オン

2022-03-23 08:53:51

新しいウェブサイトを作成する前に、パッケージ化されたプロジェクトをIISで指定されたパスにコピーし、同時に個々のディレクトリに適切なアクセス権を設定することが必要です

そこで、2つのことが発生します。

1.コピーâ" [ここではRARを使ってパックし、その後解凍しています]。

2. パーミッションの設定

Copyを使用している場合、フォルダのCopyについては、私のこの投稿を参照してください。

フォルダコピー操作(非再帰的ループによるフォルダ巡回)


なぜ私はコピー方法は、2つの前提を使用していない、プロジェクトがあまりにも多くのフォルダを持って、アプリケーションインストーラの生産では、あなただけのファイルを追加することができ、フォルダは、あまりにも多くの問題を1つずつ作成することができますです!私は、プロジェクトがあまりにも多くのフォルダを使用していないことを意味し、その結果、私は、プロジェクトがあまりにも多くの問題を作成することができます。または我々は、メインプロジェクトの出力を達成するために、他のプロジェクトにプロジェクトのファイルを配置する必要があります。新しいプロジェクトに入れたり、ツールのプロジェクトに統合したりするのは、面倒です

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(); // decompression starts   
            BeginOutputReadLine();
            BeginErrorReadLine();
            WaitForExit(). rarPro;
            Dispose(). rarPro;
             return IsOK;
        }
         void rarPro_ErrorDataReceived( object sender, DataReceivedEventArgs e)
        {
             if (e.Data ! = null && e.Data ! = "" )
            {
                outMsg.Text += " Failure: " + e.Data + " \r\n " ;
                IsOK = false ;
            }
        }
         void p_OutputDataReceived( object sender, System.Diagnostics.DataReceivedEventArgs e)
        {
             if (e.Data ! = null && e.Data ! = "" )
            {
                outMsg.Text += " Success: " + 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を書き込むので、書き込み可能なパーミッションを追加しておきます


パーミッションの設定には3つの方法があり、1つはnetに付属するラッパークラスを使用する方法です。もう一つは、cacls.exeを直接呼び出して実装する方法、そしてもう一つは、インターネット下でMicrosoft.win32を複雑な方法で呼び出す方法です。

これが最初のものです。非常にシンプルで、3行のコードです。

パーミッションの設定
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 ユーザーと置き換えることもできます! すべてのパーミッションは、この後に与えられます。

パーミッションの具体的な手順は、100以上のGoogle度や対の下にF1ヘルプドキュメントを見ては明らかです!。

タイピングを終えて、その日は終了です