fix(update): launch installers after the current app exits

This commit is contained in:
Sucukdeluxe
2026-08-21 02:35:53 +02:00
parent da4b6f295c
commit ce75012110
10 changed files with 203 additions and 27 deletions
+16 -4
View File
@@ -142,9 +142,10 @@ function createReleaseFixture(): string {
to: "assets/app_icon.ico"
}
],
nsis: {
artifactName: "${productName}-Setup-${version}.${ext}",
oneClick: false,
nsis: {
artifactName: "${productName}-Setup-${version}.${ext}",
include: "resources/installer.nsh",
oneClick: false,
perMachine: false,
allowToChangeInstallationDirectory: true,
createDesktopShortcut: true
@@ -171,6 +172,7 @@ function createReleaseFixture(): string {
writeRedistributionFiles(rootDir, true);
writeFile(rootDir, "assets/app_icon.ico", "application-icon");
writeFile(rootDir, "win-unpacked/resources/assets/app_icon.ico", "application-icon");
writeFile(rootDir, "resources/installer.nsh", "!macro customCheckAppRunning\n${isUpdated}\nFIND_PROCESS\ntaskkill /f /im\n!macroend\n");
return rootDir;
}
@@ -196,7 +198,7 @@ describe("public release metadata", () => {
expect(result.missingArtifacts).toEqual([]);
});
it("rejects a package configured for a different GitHub owner", () => {
it("rejects a package configured for a different GitHub owner", () => {
const rootDir = createReleaseFixture();
const packagePath = path.join(rootDir, "package.json");
const packageJson = JSON.parse(fs.readFileSync(packagePath, "utf8"));
@@ -345,6 +347,16 @@ describe("public release metadata", () => {
expect(() => verifyPublicRelease(rootDir)).toThrow(/extraResources|LICENSE/);
});
it("rejects release metadata without the update-safe NSIS include", () => {
const rootDir = createReleaseFixture();
const packagePath = path.join(rootDir, "package.json");
const packageJson = JSON.parse(fs.readFileSync(packagePath, "utf8"));
delete packageJson.build.nsis.include;
fs.writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`);
expect(() => verifyPublicRelease(rootDir)).toThrow(/NSIS|update|installer/i);
});
it("rejects a packaged application without its window and tray icon", () => {
const rootDir = createReleaseFixture();
fs.rmSync(path.join(rootDir, "win-unpacked", "resources", "assets", "app_icon.ico"));