public bool CreatePackage(string filename, bool includeWalkthrough, out string error) { error = string.Empty; try { string data = m_worldModel.Save(SaveMode.Package, includeWalkthrough); string baseFolder = System.IO.Path.GetDirectoryName(m_worldModel.Filename); using (ZipFile zip = new ZipFile(filename)) { zip.AddEntry("game.aslx", data, Encoding.UTF8); var fileTypesToInclude = m_worldModel.Game.Fields[FieldDefinitions.PublishFileExtensions] ?? "*.jpg;*.jpeg;*.png;*.gif;*.js;*.wav;*.mp3;*.htm;*.html;*.svg"; foreach (string file in m_worldModel.GetAvailableExternalFiles(fileTypesToInclude)) { zip.AddFile(System.IO.Path.Combine(baseFolder, file), ""); } AddLibraryResources(zip, baseFolder, ElementType.Javascript); AddLibraryResources(zip, baseFolder, ElementType.Resource); zip.Save(); } } catch (Exception ex) { error = ex.Message; return(false); } return(true); }