示例#1
0
        private static void PackApp(string appPath, string mainAppPath)
        {
            Logger.Log("Processing App at: " + appPath);
            var zipPath = GetTemporaryDirectory();

            try
            {
                Logger.Log("Parsing Auto Values");
                var extractor = AutoValueExtractor.Parse(Path.Combine(appPath, UnpackLogic.Paths.Code, UnpackLogic.Paths.AutoValues) + UnpackLogic.DataFileExt);

                Logger.Log("Copying app files for zip creation.");
                CopyFilesToZipFolder(appPath, zipPath, "MsApp", UnpackLogic.Paths.Code, UnpackLogic.Paths.Metadata);

                Logger.Log("Packaging Code files");
                PackScreens(appPath, zipPath, extractor);

                Logger.Log("Parsing AppInfo");
                var    sourcePath = Path.Combine(appPath, UnpackLogic.Paths.Metadata);
                string msAppZipPath;

                if (Directory.Exists(sourcePath))
                {
                    var metadataFiles   = Directory.GetFiles(sourcePath, "*", SearchOption.AllDirectories);
                    var appInfo         = AppInfo.Parse(File.ReadAllText(metadataFiles.Single(f => Path.GetExtension(f) == ".json")));
                    var destinationPath = Path.Combine(mainAppPath, UnpackLogic.Paths.MsPowerApps, "apps", appInfo.AppId);
                    MoveMetadataFilesFromExtract(appInfo, sourcePath, destinationPath, metadataFiles);
                    msAppZipPath = Path.Combine(destinationPath, Path.GetFileName(appInfo.MsAppPath));
                }
                else
                {
                    msAppZipPath = mainAppPath;
                }

                Logger.Log("Parsing Resource\\PublisherInfo");
                RestoreAutoNamedFiles(zipPath);

                Logger.Log($"Packing file {msAppZipPath}");
                MsAppHelper.CreateFromDirectory(zipPath, msAppZipPath);
            }
            finally
            {
                Directory.Delete(zipPath, true);
            }
        }
        public static void Unpack(string file, string outputDirectory, Args.Args options)
        {
            if (options.Clobber && Directory.Exists(outputDirectory))
            {
                Logger.Log("Deleting files in " + outputDirectory);
                Directory.Delete(outputDirectory, true);
            }

            Logger.Log("Extracting files from " + file + " to " + outputDirectory);
            if (Path.GetExtension(file).ToLower() == ".zip")
            {
                ZipFile.ExtractToDirectory(file, outputDirectory, true);
                ExtractApps(outputDirectory, options);
            }
            else
            {
                MsAppHelper.ExtractToDirectory(file, outputDirectory, true);
                if (!options.OnlyExtract)
                {
                    ExtractCanvasApp(outputDirectory, options);
                }
            }
        }