public void Store() { DotNetProject project = entry as DotNetProject; if (project == null) { return; } LinuxDeployData data = LinuxDeployData.GetLinuxDeployData(project); data.GenerateScript = checkScript.Active; data.ScriptName = entryScript.Text; data.GeneratePcFile = checkPcFile.Active; if (checkDesktop.Active) { DesktopEntry de = new DesktopEntry(); de.SetEntry("Encoding", "UTF-8"); de.Type = DesktopEntryType.Application; de.Name = entry.Name; de.Exec = entryScript.Text; de.Terminal = false; string file = System.IO.Path.Combine(entry.BaseDirectory, "app.desktop"); de.Save(file); ProjectFile pfile = project.AddFile(file, BuildAction.Content); DeployProperties props = DeployService.GetDeployProperties(pfile); props.TargetDirectory = LinuxTargetDirectory.DesktopApplications; } }
void OnFileAdded(object o, ProjectFileEventArgs args) { foreach (ProjectFileEventInfo a in args) { if (a.ProjectFile.Name.EndsWith(".desktop")) { DesktopEntry de = new DesktopEntry(); try { de.Load(a.ProjectFile.Name); a.ProjectFile.BuildAction = BuildAction.Content; DeployProperties props = DeployService.GetDeployProperties(a.ProjectFile); props.TargetDirectory = LinuxTargetDirectory.DesktopApplications; if (string.IsNullOrEmpty(de.Exec)) { LinuxDeployData dd = LinuxDeployData.GetLinuxDeployData(a.Project); if (dd.GenerateScript && !string.IsNullOrEmpty(dd.ScriptName)) { de.Exec = dd.ScriptName; de.Save(a.ProjectFile.Name); } } } catch (Exception ex) { LoggingService.LogError("Could not read .desktop file", ex); } } } }
public BasicOptionPanelWidget(Project entry, bool creatingProject) { this.Build(); WidgetFlags |= Gtk.WidgetFlags.NoShowAll; this.entry = entry; if (entry is DotNetProject) { DotNetProject project = (DotNetProject)entry; boxExe.Visible = (project.CompileTarget == CompileTarget.Exe || project.CompileTarget == CompileTarget.WinExe); boxLibrary.Visible = (project.CompileTarget == CompileTarget.Library || project.GetOutputFileName(ConfigurationSelector.Default).FileName.EndsWith(".dll")); } else { boxExe.Visible = boxLibrary.Visible = false; } LinuxDeployData data = LinuxDeployData.GetLinuxDeployData(entry); checkScript.Active = data.GenerateScript; entryScript.Text = data.ScriptName; checkPcFile.Active = data.GeneratePcFile; entryScript.Sensitive = checkScript.Active; if (!creatingProject) { checkDesktop.Visible = false; } }
public override DeployFileCollection GetProjectDeployFiles(DeployContext ctx, Project project, ConfigurationSelector config) { DeployFileCollection col = base.GetProjectDeployFiles(ctx, project, config); LinuxDeployData data = LinuxDeployData.GetLinuxDeployData(project); if (ctx.Platform == "Linux") { DotNetProject netProject = project as DotNetProject; if (netProject != null) { DotNetProjectConfiguration conf = netProject.GetConfiguration(config) as DotNetProjectConfiguration; if (conf != null) { if (conf.CompileTarget == CompileTarget.Exe || conf.CompileTarget == CompileTarget.WinExe) { if (data.GenerateScript) { col.Add(GenerateLaunchScript(ctx, netProject, data, conf)); } } if (conf.CompileTarget == CompileTarget.Library || conf.CompiledOutputName.FileName.EndsWith(".dll")) { if (data.GeneratePcFile) { col.Add(GeneratePcFile(ctx, netProject, data, conf)); } } } } } // If the project is deploying an app.desktop file, rename it to the name of the project. foreach (DeployFile file in col) { if (Path.GetFileName(file.RelativeTargetPath) == "app.desktop") { string dir = Path.GetDirectoryName(file.RelativeTargetPath); file.RelativeTargetPath = Path.Combine(dir, data.PackageName + ".desktop"); } } return(col); }