Acme.PROJECTNAME.Install.ArchiveReader.ExtractArchive C# (CSharp) Method

ExtractArchive() public static method

public static ExtractArchive ( string resourceFileName ) : string
resourceFileName string
return string
		public static string ExtractArchive(string resourceFileName)
		{
			try
			{
				string extractDir = System.IO.Path.GetTempPath();
				extractDir = Path.Combine(extractDir, Guid.NewGuid().ToString());
				Directory.CreateDirectory(extractDir);

				string zipFilename = Path.Combine(extractDir, Guid.NewGuid().ToString());
				CreateFileFromResource(resourceFileName, zipFilename);

				ZipInputStream MyZipInputStream = null;
				FileStream MyFileStream = null;
				MyZipInputStream = new ZipInputStream(new FileStream(zipFilename, FileMode.Open, FileAccess.Read));
				ZipEntry MyZipEntry = MyZipInputStream.GetNextEntry();
				Directory.CreateDirectory(extractDir);
				while (MyZipEntry != null)
				{
					if (MyZipEntry.IsDirectory)
					{
						Directory.CreateDirectory(extractDir + @"\" + MyZipEntry.Name);
					}
					else
					{
						if (!Directory.Exists(extractDir + @"\" + Path.GetDirectoryName(MyZipEntry.Name)))
						{
							Directory.CreateDirectory(extractDir + @"\" + Path.GetDirectoryName(MyZipEntry.Name));
						}
						MyFileStream = new FileStream(extractDir + @"\" + MyZipEntry.Name, FileMode.OpenOrCreate, FileAccess.Write);
						int count;
						byte[] buffer = new byte[4096];
						count = MyZipInputStream.Read(buffer, 0, 4096);
						while (count > 0)
						{
							MyFileStream.Write(buffer, 0, count);
							count = MyZipInputStream.Read(buffer, 0, 4096);
						}
						MyFileStream.Close();
					}
					try
					{
						MyZipEntry = MyZipInputStream.GetNextEntry();
					}
					catch (Exception ex)
					{
						MyZipEntry = null;
					}
				}

				if (MyZipInputStream != null)
					MyZipInputStream.Close();

				if (MyFileStream != null)
					MyFileStream.Close();

				return extractDir;
			}
			catch (Exception ex)
			{
				throw;
			}

		}

Usage Example

Example #1
0
        public static void RunEmbeddedFile(SqlConnection connection, SqlTransaction transaction, string resourceFileName)
        {
            string tempFolder = "";

            if (resourceFileName.ToLower().EndsWith(".zip"))
            {
                tempFolder = ArchiveReader.ExtractArchive(resourceFileName);

                string[] files = Directory.GetFiles(tempFolder, "*.sql");
                SortedDictionary <string, string> fileList = new SortedDictionary <string, string>();

                foreach (string file in files)
                {
                    fileList.Add(file, file);
                }
                foreach (string file in fileList.Values)
                {
                    string[] scripts = ReadSQLFileSectionsFromFile(file);
                    foreach (string sql in scripts)
                    {
                        ExecuteSQL(connection, transaction, sql);
                    }
                }

                //Remove the temp folder if necessary
                try
                {
                    System.IO.Directory.Delete(tempFolder, true);
                }
                catch (Exception ex) { }
            }
            else
            {
                string[] scripts = ReadSQLFileSectionsFromResource(resourceFileName);
                foreach (string sql in scripts)
                {
                    ExecuteSQL(connection, transaction, sql);
                }
            }
        }