Skip to content

Commit

Permalink
Create .dmg and sign it
Browse files Browse the repository at this point in the history
  • Loading branch information
nopara73 committed Dec 13, 2018
1 parent 2b49810 commit 5bc5a88
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 58 deletions.
120 changes: 62 additions & 58 deletions WalletWasabi.Packager/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ private static void Main(string[] args)
});
Console.WriteLine();

string dmgFilePath = "";
if (doPublish)
{
if (Directory.Exists(binDistDirectory))
Expand Down Expand Up @@ -103,7 +104,18 @@ private static void Main(string[] args)

foreach (string target in targets)
{
string currentBinDistDirectory = Path.GetFullPath(Path.Combine(binDistDirectory, target));
string currentBinDistDirectory;
string targetDir = Path.Combine(binDistDirectory, target);
string macWasabiAppDir = Path.Combine(targetDir, "Wasabi Wallet.App");
string macContentsDir = Path.Combine(macWasabiAppDir, "Contents");
if (target.StartsWith("osx"))
{
currentBinDistDirectory = Path.GetFullPath(Path.Combine(macContentsDir, "MacOS"));
}
else
{
currentBinDistDirectory = targetDir;
}
Console.WriteLine();
Console.WriteLine($"{nameof(currentBinDistDirectory)}:\t{currentBinDistDirectory}");

Expand Down Expand Up @@ -143,7 +155,7 @@ private static void Main(string[] args)
var psiPublish = new ProcessStartInfo
{
FileName = "dotnet",
Arguments = $"publish --configuration Release --force --output {currentBinDistDirectory} --self-contained true --runtime {target} /p:VersionPrefix={versionPrefix} --disable-parallel --no-cache",
Arguments = $"publish --configuration Release --force --output \"{currentBinDistDirectory}\" --self-contained true --runtime \"{target}\" /p:VersionPrefix={versionPrefix} --disable-parallel --no-cache",
WorkingDirectory = guiProjectDirectory
};
var pPublish = Process.Start(psiPublish);
Expand Down Expand Up @@ -185,63 +197,77 @@ private static void Main(string[] args)
var pRcedit = Process.Start(psiRcedit);
pRcedit.WaitForExit();
}
if (target.StartsWith("osx"))
else if (target.StartsWith("osx"))
{
var appbindistdir = currentBinDistDirectory + "app";
string appdir = Path.Combine(appbindistdir, "WasabiWallet.App","Contents","MacOS");
string resdir = Path.Combine(appbindistdir, "WasabiWallet.App", "Contents", "Resources");
string infoFilePath = Path.Combine(appbindistdir, "WasabiWallet.App", "Contents", "Info.plist");
IoHelpers.CopyFilesRecursively(new DirectoryInfo(currentBinDistDirectory), new DirectoryInfo(appdir));
string resourcesDir = Path.Combine(macContentsDir, "Resources");
string infoFilePath = Path.Combine(macContentsDir, "Info.plist");

Directory.CreateDirectory(resdir);
var iconpath = Path.Combine(new DirectoryInfo(currentBinDistDirectory).Parent.Parent.Parent.FullName,"Assets", "WasabiLogo.icns");
File.Copy(iconpath, Path.Combine(resdir, "WasabiLogo.icns"));
Directory.CreateDirectory(resourcesDir);
var iconpath = Path.Combine(guiProjectDirectory, "Assets", "WasabiLogo.icns");
File.Copy(iconpath, Path.Combine(resourcesDir, "WasabiLogo.icns"));

string infoContent = $@"<?xml version=""1.0"" encoding=""UTF - 8""?>
string infoContent = $@"<?xml version=""1.0"" encoding=""UTF-8""?>
<!DOCTYPE plist PUBLIC ""-//Apple//DTD PLIST 1.0//EN"" ""http://www.apple.com/DTDs/PropertyList-1.0.dtd"">
<plist version = ""1.0"">
<dict>
<key>NSAppleScriptEnabled </key>
<true/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>NSPrincipalClass</key>
<string>WasabiWalletApplication</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>LSArchitecturePriority</key>
<array>
<string>x86_64</string>
</array>
<key>CFBundleIconFile</key>
<string>WasabiLogo.icns</string>
<key>CFBundleIdentifier</key>
<string>zksnacks.wasabiwallet</string>
<key>CFBundleName</key>
<string>WasabiWallet</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>{versionPrefix}</string>
<key>CFBundleVersion</key>
<string>{versionPrefix}</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>CFBundleExecutable</key>
<string>wassabee</string>
<key>CFBundleName</key>
<string>Wasabi Wallet</string>
<key>CFBundleIdentifier</key>
<string>zksnacks.wasabiwallet</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSAppleScriptEnabled</key>
<true/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.finance</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>{versionPrefix}</string>
</dict>
</plist>
";
File.WriteAllText(infoFilePath, infoContent);
//https://github.com/Linuxbrew/brew
//sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
var psiTar = new ProcessStartInfo

var psiGenIsoImage = new ProcessStartInfo
{
FileName = "cmd",
RedirectStandardInput = true,
WorkingDirectory = binDistDirectory
};
var tarProcess = Process.Start(psiTar);
tarProcess.StandardInput.WriteLine($"wsl genisoimage -V wassabee -D -R -apple -no-pad -o \"WasabiWallet{versionPrefix}.dmg\" osx-x64app && exit");
tarProcess.WaitForExit();
var genIsoImageProcess = Process.Start(psiGenIsoImage);
var dmgFileName = $"Wasabi-{versionPrefix}.dmg";
dmgFilePath = Path.Combine(binDistDirectory, dmgFileName);
genIsoImageProcess.StandardInput.WriteLine($"wsl genisoimage -V wassabee -D -R -apple -no-pad -o \"{dmgFileName}\" \"{new DirectoryInfo(targetDir).Name}\" && exit");
genIsoImageProcess.WaitForExit();

IoHelpers.DeleteRecursivelyWithMagicDustAsync(targetDir).GetAwaiter().GetResult();
}
}
}
Expand Down Expand Up @@ -297,28 +323,6 @@ private static void Main(string[] args)
tarProcess.StandardInput.WriteLine($"wsl tar -pczvf {newFolderName}.tar.gz {newFolderName} && exit");
tarProcess.WaitForExit();
}
else // if (target.StartsWith("osx", StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("Create OSX .tar.gz");
if (!Directory.Exists(publishedFolder))
{
throw new Exception($"{publishedFolder} doesn't exist.");
}
var newFolderName = $"WasabiOsx-{versionPrefix}";
var newFolderPath = Path.Combine(binDistDirectory, newFolderName);
Directory.Move(publishedFolder, newFolderPath);
publishedFolder = newFolderPath;

var psiTar = new ProcessStartInfo
{
FileName = "cmd",
RedirectStandardInput = true,
WorkingDirectory = binDistDirectory
};
var tarProcess = Process.Start(psiTar);
tarProcess.StandardInput.WriteLine($"wsl tar -pczvf {newFolderName}.tar.gz {newFolderName} && exit");
tarProcess.WaitForExit();
}

if (Directory.Exists(publishedFolder))
{
Expand Down
5 changes: 5 additions & 0 deletions WalletWasabi/Helpers/IoHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -268,9 +268,14 @@ public static void OpenFolderInFileExplorer(string dirPath)
public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target)
{
foreach (DirectoryInfo dir in source.GetDirectories())
{
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name));
}

foreach (FileInfo file in source.GetFiles())
{
file.CopyTo(Path.Combine(target.FullName, file.Name));
}
}
}
}

0 comments on commit 5bc5a88

Please sign in to comment.