feat: rebrand to MMD PDF, single corporate theme, and remove original text under an edit

- Services/PdfRedactText.cs: strip text whose origin falls inside a CoverAnnotation
  from the page content stream at save time, hooked into PdfBurn.DrawAnnotationsIntoDoc.
  Fixes edited values staying recoverable by text extraction.
- Themes/MMD.xaml replaces all thirteen themes; picker and accent strip removed; no dark mode.
- Rename KillerPDF -> MMD PDF across code, resources, packaging and locale strings; new icon.
- Remove the upstream author credit and the in-app install button.
This commit is contained in:
2026-08-27 07:37:09 +02:00
parent 532485a830
commit 6610acfa44
230 changed files with 9362 additions and 11508 deletions
@@ -27,7 +27,7 @@
</ItemGroup>
<ItemGroup Condition="Exists('$(PayloadZip)')">
<EmbeddedResource Include="$(PayloadZip)" LogicalName="KillerLauncher.payload.zip" />
<EmbeddedResource Include="$(PayloadZip)" LogicalName="MmdPdfLauncher.payload.zip" />
</ItemGroup>
<ItemGroup>
@@ -11,17 +11,17 @@ using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
namespace KillerLauncher
namespace MmdPdfLauncher
{
internal static class Program
{
private const string ProductName = "KillerPDF";
private const string InnerExeName = "KillerPDF.App.exe";
private const string PayloadResourceName = "KillerLauncher.payload.zip";
private const string ProductName = "MmdPdf";
private const string InnerExeName = "MmdPdf.App.exe";
private const string PayloadResourceName = "MmdPdfLauncher.payload.zip";
private const string ManifestName = "payload.manifest";
private const string PortableMarkerName = ".killerpdf-portable";
private const string TestInstallRootEnvironmentVariable = "KILLERPDF_TEST_INSTALL_ROOT";
private const string SkipRegistrationEnvironmentVariable = "KILLERPDF_SKIP_REGISTRATION";
private const string PortableMarkerName = ".mmdpdf-portable";
private const string TestInstallRootEnvironmentVariable = "MMDPDF_TEST_INSTALL_ROOT";
private const string SkipRegistrationEnvironmentVariable = "MMDPDF_SKIP_REGISTRATION";
private static readonly string UserInstallDirectory = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Programs", ProductName);
@@ -73,10 +73,10 @@ namespace KillerLauncher
UseShellExecute = false,
WorkingDirectory = directory
};
start.EnvironmentVariables["KILLERPDF_LAUNCHER_PATH"] = CurrentExecutablePath();
start.EnvironmentVariables["KILLERPDF_LAUNCHER_PID"] =
start.EnvironmentVariables["MMDPDF_LAUNCHER_PATH"] = CurrentExecutablePath();
start.EnvironmentVariables["MMDPDF_LAUNCHER_PID"] =
Process.GetCurrentProcess().Id.ToString(CultureInfo.InvariantCulture);
start.EnvironmentVariables["KILLERPDF_PORTABLE_ROOT"] = directory;
start.EnvironmentVariables["MMDPDF_PORTABLE_ROOT"] = directory;
using (var child = Process.Start(start))
{
@@ -96,15 +96,15 @@ namespace KillerLauncher
{
if (!IsTrustedForInstall(CurrentExecutablePath()))
throw new InvalidOperationException(
"Installation was refused because this download does not have a valid KillerPDF digital signature.");
"Installation was refused because this download does not have a valid MmdPdf digital signature.");
string? testRoot = Environment.GetEnvironmentVariable(TestInstallRootEnvironmentVariable);
if (string.IsNullOrWhiteSpace(testRoot) && !machine &&
(File.Exists(Path.Combine(MachineInstallDirectory, InnerExeName)) ||
File.Exists(Path.Combine(MachineInstallDirectory, "KillerPDF.exe"))))
File.Exists(Path.Combine(MachineInstallDirectory, "MmdPdf.exe"))))
throw new InvalidOperationException(
"KillerPDF is already installed for everyone on this computer. Update that installation, " +
"or uninstall it before choosing a per-user install. KillerPDF will not create two installed copies.");
"MmdPdf is already installed for everyone on this computer. Update that installation, " +
"or uninstall it before choosing a per-user install. MmdPdf will not create two installed copies.");
string destination = !string.IsNullOrWhiteSpace(testRoot)
? Path.GetFullPath(testRoot)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="KillerLauncher.app"/>
<assemblyIdentity version="1.0.0.0" name="MmdPdfLauncher.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">