Exemplo n.º 1
0
        private static void ExtractAndAdd(BackgroundWorker worker, string name, string extension, string ftffile, string AsFilename = "")
        {
            if (Zipping.ExistsInZip(ftffile, name + ".sin") == false)
            {
                OnError(name, AsFilename);
                return;
            }

            Zipping.UnzipFile(worker, ftffile, name + ".sin", string.Empty, Utility.GetTempPath(), false);
            if (File.Exists(Path.Combine(Utility.GetTempPath(), name + ".sin")))
            {
                Logger.WriteLog("   " + name);
                SinExtract.ExtractSin(worker, Path.Combine(Utility.GetTempPath(), name + ".sin"), Path.Combine(Utility.GetTempPath(), name + extension), false);

                if (PartitionInfo.ScriptMode == PartitionInfo.Mode.LegacyUUID)
                {
                    byte[] UUID = PartitionInfo.ReadSinUUID(Path.Combine(Utility.GetTempPath(), name + ".sin"));
                    Utility.ScriptSetUUID(worker, (AsFilename == "" ? name : AsFilename), UUID);
                }

                File.Delete(Path.Combine(Utility.GetTempPath(), name + ".sin"));
                Zipping.AddToZip(worker, Settings.destinationFile, Path.Combine(Utility.GetTempPath(), name + extension), (AsFilename == "" ? name : AsFilename) + extension, false);
                File.Delete(Path.Combine(Utility.GetTempPath(), name + extension));
            }
        }
Exemplo n.º 2
0
 private static void AddSystem(BackgroundWorker worker)
 {
     SetJobNum(++JobNum);
     Logger.WriteLog("Adding system to zip");
     Zipping.AddToZip(worker, Settings.destinationFile, Path.Combine(Utility.GetTempPath(), "system.sin"), "system.sin", true);
     File.Delete(Path.Combine(Utility.GetTempPath(), "system.sin"));
 }
Exemplo n.º 3
0
        public static void AddAPKFile(BackgroundWorker worker, string filename, string type)
        {
            Logger.WriteLog("Adding APK: " + Path.GetFileName(filename));
            if (!Zipping.UnzipFile(worker, filename, "AndroidManifest.xml", string.Empty, Utility.GetTempPath(), false))
            {
                Logger.WriteLog("Error adding APK: AndroidManifest.xml not found");
                return;
            }
            string appname = Utility.ManifestGetName(File.ReadAllBytes(Path.Combine(Utility.GetTempPath(), "AndroidManifest.xml")));

            File.Delete(Path.Combine(Utility.GetTempPath(), "AndroidManifest.xml"));
            if (appname == null)
            {
                Logger.WriteLog("Error adding APK: Could not read appname from AndroidManifest.xml");
                return;
            }

            if (type == "App (System)")
            {
                Zipping.AddToZip(worker, Settings.destinationFile, filename, "system/app/" + appname + Path.GetExtension(filename), false);
            }
            else
            {
                Zipping.AddToZip(worker, Settings.destinationFile, filename, "data/app/" + appname + Path.GetExtension(filename), false);
            }
        }
Exemplo n.º 4
0
        private static void AddSuperSU(BackgroundWorker worker)
        {
            SetJobNum(++JobNum);
            Logger.WriteLog("Adding " + Path.GetFileName(Form1.form.su_textbox.Text));
            string superSUFile = Form1.form.su_textbox.Text;

            Zipping.AddToZip(worker, Settings.destinationFile, superSUFile, "SuperSU.zip", false);
        }
Exemplo n.º 5
0
        public static void EditScript(BackgroundWorker worker, string search, string replace)
        {
            Zipping.UnzipFile(worker, Settings.destinationFile, "updater-script", "META-INF/com/google/android", Utility.GetTempPath(), false);
            string content = File.ReadAllText(Path.Combine(Utility.GetTempPath(), "updater-script"), Encoding.ASCII);

            content = content.Replace(search, replace);
            File.WriteAllText(Path.Combine(Utility.GetTempPath(), "updater-script"), content, Encoding.ASCII);
            Zipping.AddToZip(worker, Settings.destinationFile, Path.Combine(Utility.GetTempPath(), "updater-script"), "META-INF/com/google/android/updater-script", false);
            File.Delete(Path.Combine(Utility.GetTempPath(), "updater-script"));
        }
Exemplo n.º 6
0
        private static void AddRecovery(BackgroundWorker worker)
        {
            if (!File.Exists(Form1.form.rec_textbox.Text))
            {
                return;
            }

            SetJobNum(++JobNum);
            string recoveryFile = Form1.form.rec_textbox.Text;

            Logger.WriteLog("Adding " + Path.GetFileName(recoveryFile));
            Zipping.AddToZip(worker, Settings.destinationFile, recoveryFile, "dualrecovery.zip");
        }
Exemplo n.º 7
0
        public static void EditConfig(BackgroundWorker worker, string key, string value)
        {
            Zipping.UnzipFile(worker, Settings.destinationFile, "prfconfig", string.Empty, Utility.GetTempPath(), false);
            string content = File.ReadAllText(Path.Combine(Utility.GetTempPath(), "prfconfig"), Encoding.ASCII);

            if (!content.Contains(key + "="))
            {
                content += "\n" + key + "=" + value;
            }
            else
            {
                content = Regex.Replace(content, "^" + key + "=.*$", key + "=" + value, RegexOptions.Multiline);
            }

            File.WriteAllText(Path.Combine(Utility.GetTempPath(), "prfconfig"), content, Encoding.ASCII);
            Zipping.AddToZip(worker, Settings.destinationFile, Path.Combine(Utility.GetTempPath(), "prfconfig"), "prfconfig", false);
            File.Delete(Path.Combine(Utility.GetTempPath(), "prfconfig"));
        }
Exemplo n.º 8
0
        private static bool ExtractAndAddSin(BackgroundWorker worker, string name, string ftffile, string AsFilename = "")
        {
            if (Zipping.ExistsInZip(ftffile, name + ".sin") == false)
            {
                OnError(name, AsFilename);
                return(false);
            }

            Zipping.UnzipFile(worker, ftffile, name + ".sin", string.Empty, Utility.GetTempPath(), false);
            if (File.Exists(Path.Combine(Utility.GetTempPath(), name + ".sin")))
            {
                Logger.WriteLog("   " + name);
                Zipping.AddToZip(worker, Settings.destinationFile, Path.Combine(Utility.GetTempPath(), name + ".sin"), (AsFilename == "" ? name : AsFilename) + ".sin", false, Ionic.Zlib.CompressionLevel.None);
                File.Delete(Path.Combine(Utility.GetTempPath(), name + ".sin"));
            }

            return(true);
        }
Exemplo n.º 9
0
        public static void AddExtraFlashable(BackgroundWorker worker, string filename)
        {
            Logger.WriteLog("Adding flashable zip: " + Path.GetFileName(filename));
            string fixedname = Path.GetFileName(filename).Replace(' ', '_');

            string cmd = "\n# " + fixedname + "\n" +
                         "if\n" +
                         "\tpackage_extract_file(\"" + fixedname + "\", \"/tmp/" + fixedname + "\") == \"t\"\n" +
                         "then\n" +
                         "\trun_program(\"/tmp/busybox\", \"mkdir\", \"/tmp/" + Path.GetFileNameWithoutExtension(fixedname) + "_extracted" + "\");\n" +
                         "\trun_program(\"/tmp/busybox\", \"unzip\", \"-d\", \"/tmp/" + Path.GetFileNameWithoutExtension(fixedname) + "_extracted" + "\", \"/tmp/" + fixedname + "\");\n" +
                         "\tset_perm(0, 0, 0755, \"/tmp/" + Path.GetFileNameWithoutExtension(fixedname) + "_extracted" + "/META-INF/com/google/android/update-binary\");\n" +
                         "\trun_program(\"/tmp/" + Path.GetFileNameWithoutExtension(fixedname) + "_extracted" + "/META-INF/com/google/android/update-binary\", file_getprop(\"/tmp/prfargs\", \"version\"), file_getprop(\"/tmp/prfargs\", \"outfile\"), \"/tmp/" + fixedname + "\");\n" +
                         "\tdelete_recursive(\"/tmp/" + Path.GetFileNameWithoutExtension(fixedname) + "_extracted" + "\");\n" +
                         "\tdelete(\"/tmp/" + fixedname + "\");\n" +
                         "endif;\n" +
                         "#InsertExtra\n";

            Utility.EditScript(worker, "#InsertExtra", cmd);
            Zipping.AddToZip(worker, Settings.destinationFile, filename, fixedname, false);
        }