11import type { ForgeConfig , ForgeMakeResult , ResolvedForgeConfig } from "@electron-forge/shared-types" ;
22import assert from "node:assert/strict" ;
3+ import { createRequire } from "node:module" ;
34import { mkdir , mkdtemp , readdir , readFile , rm , writeFile } from "node:fs/promises" ;
45import os from "node:os" ;
56import path from "node:path" ;
@@ -11,6 +12,14 @@ import { MakerWix } from "@electron-forge/maker-wix";
1112// Load the configuration with the same TypeScript loader used by Electron Forge.
1213const configPromise = createJiti ( import . meta. url ) . import < ForgeConfig > ( "../forge.config.ts" , { default : true } ) ;
1314
15+ test ( "NSIS builder resolves the download cache API required on clean machines" , ( ) => {
16+ const require = createRequire ( import . meta. url ) ;
17+ const builderRequire = createRequire ( require . resolve ( "app-builder-lib" ) ) ;
18+ const { ElectronDownloadCacheMode, downloadArtifact } = builderRequire ( "@electron/get" ) ;
19+ assert . equal ( typeof ElectronDownloadCacheMode ?. ReadWrite , "number" ) ;
20+ assert . equal ( typeof downloadArtifact , "function" ) ;
21+ } ) ;
22+
1423test ( "packaged clients claim jms2 without taking the legacy client's jms scheme" , async ( ) => {
1524 const config = await configPromise ;
1625 assert . deepEqual ( config . packagerConfig . protocols , [ { name : "JumpServer URL" , schemes : [ "jms2" ] } ] ) ;
@@ -31,12 +40,18 @@ test("Windows installers provide a directory selection wizard and preserve the c
3140 assert . equal ( options . win . executableName , config . packagerConfig . executableName ) ;
3241 assert . deepEqual ( options . protocols , config . packagerConfig . protocols ) ;
3342 assert . equal ( options . nsis . oneClick , false ) ;
43+ assert . equal ( options . nsis . selectPerMachineByDefault , true ) ;
44+ const installerInclude = await readFile ( options . nsis . include , "utf8" ) ;
45+ assert . ok ( installerInclude . includes ( '!define APP_FILENAME "JumpServer\\Client"' ) ) ;
3446 assert . equal ( options . nsis . allowToChangeInstallationDirectory , true ) ;
3547 assert . equal ( options . nsis . createDesktopShortcut , true ) ;
3648 assert . equal ( options . nsis . createStartMenuShortcut , true ) ;
3749 assert . equal ( options . nsis . runAfterFinish , true ) ;
3850 assert . equal ( options . nsis . deleteAppDataOnUninstall , false ) ;
3951 assert . deepEqual ( wix . config . ui , { chooseDirectory : true } ) ;
52+ assert . equal ( wix . config . defaultInstallMode , "perMachine" ) ;
53+ assert . equal ( wix . config . nestedFolderName , "JumpServer" ) ;
54+ assert . equal ( wix . config . programFilesFolderName , "Client" ) ;
4055} ) ;
4156
4257test ( "normalizes release installer filenames" , async ( context ) => {
0 commit comments