using System; using System.IO; using System.IO.Compression; using System.Linq; public class Program { public static void Main(string[] args) { //Variables string TargetDir = args[0]; string TargetFileName = args[1]; if (TargetDir.EndsWith("\\")) TargetDir = TargetDir.Remove(TargetDir.Length - 1); //Copy Data dir if (File.Exists(TargetDir + ".zip")) File.Delete(TargetDir + ".zip"); if (File.Exists(TargetDir + @"\package.zip")) File.Delete(TargetDir + @"\package.zip"); if (Directory.Exists(TargetDir + @"\package")) Directory.Delete(TargetDir + @"\package", true); ZipFile.CreateFromDirectory(TargetDir, TargetDir + ".zip"); Directory.CreateDirectory(TargetDir + @"\package\Data"); ZipFile.ExtractToDirectory(TargetDir + ".zip", TargetDir + @"\package\Data"); File.Delete(TargetDir + ".zip"); //Remove useless Files Directory.GetFiles(TargetDir + @"\package\Data") .Where(s => new string[] { ".xml", ".pdb" }.Contains(Path.GetExtension(s))) .ToList().ForEach(s => File.Delete(s)); //Add package scripts string programName = Path.GetFileNameWithoutExtension(TargetFileName); File.WriteAllText(TargetDir + @"\package\Install.bat", "@echo off\r\necho INSTALL\r\npowershell \"$s=(New-Object -COM WScript.Shell).CreateShortcut('%appdata%\\Microsoft\\Windows\\Start Menu\\Programs\\" + programName + ".lnk');$s.TargetPath='%cd%\\" + programName + ".exe';$s.Save()\"\r\ntimeout /t 1"); File.WriteAllText(TargetDir + @"\package\Remove.bat", "@echo off\r\necho REMOVE\r\ndel \"%appdata%\\Microsoft\\Windows\\Start Menu\\Programs\\" + programName + ".lnk\"\r\ntaskkill /f /im \"" + programName + ".exe\"\r\ntimeout /t 1"); //Package up result ZipFile.CreateFromDirectory(TargetDir + @"\package", TargetDir + @"\package.zip"); Directory.Delete(TargetDir + @"\package", true); } }