app-builder-lib 22.14.13 → 23.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/out/asar/asar.d.ts +1 -0
  2. package/out/asar/asar.js +11 -4
  3. package/out/asar/asar.js.map +1 -1
  4. package/out/asar/asarUtil.js +4 -2
  5. package/out/asar/asarUtil.js.map +1 -1
  6. package/out/asar/integrity.d.ts +13 -11
  7. package/out/asar/integrity.js +68 -12
  8. package/out/asar/integrity.js.map +1 -1
  9. package/out/codeSign/macCodeSign.js.map +1 -1
  10. package/out/configuration.d.ts +1 -0
  11. package/out/configuration.js.map +1 -1
  12. package/out/electron/electronMac.js +1 -1
  13. package/out/electron/electronMac.js.map +1 -1
  14. package/out/macPackager.js +3 -0
  15. package/out/macPackager.js.map +1 -1
  16. package/out/options/FileAssociation.d.ts +3 -3
  17. package/out/options/FileAssociation.js.map +1 -1
  18. package/out/options/MsiOptions.d.ts +0 -4
  19. package/out/options/MsiOptions.js.map +1 -1
  20. package/out/options/PlatformSpecificBuildOptions.d.ts +1 -2
  21. package/out/options/PlatformSpecificBuildOptions.js.map +1 -1
  22. package/out/options/SnapOptions.d.ts +5 -0
  23. package/out/options/SnapOptions.js.map +1 -1
  24. package/out/options/linuxOptions.d.ts +1 -1
  25. package/out/options/linuxOptions.js.map +1 -1
  26. package/out/options/macOptions.d.ts +15 -0
  27. package/out/options/macOptions.js.map +1 -1
  28. package/out/platformPackager.js +2 -1
  29. package/out/platformPackager.js.map +1 -1
  30. package/out/publish/PublishManager.js +7 -12
  31. package/out/publish/PublishManager.js.map +1 -1
  32. package/out/publish/s3/s3Publisher.d.ts +1 -1
  33. package/out/publish/s3/s3Publisher.js +1 -1
  34. package/out/publish/s3/s3Publisher.js.map +1 -1
  35. package/out/publish/s3/spacesPublisher.d.ts +1 -1
  36. package/out/publish/s3/spacesPublisher.js +1 -1
  37. package/out/publish/s3/spacesPublisher.js.map +1 -1
  38. package/out/publish/updateInfoBuilder.js +2 -4
  39. package/out/publish/updateInfoBuilder.js.map +1 -1
  40. package/out/targets/MsiTarget.d.ts +6 -0
  41. package/out/targets/MsiTarget.js +32 -21
  42. package/out/targets/MsiTarget.js.map +1 -1
  43. package/out/targets/nsis/NsisTarget.js +1 -0
  44. package/out/targets/nsis/NsisTarget.js.map +1 -1
  45. package/out/targets/snap.js +4 -0
  46. package/out/targets/snap.js.map +1 -1
  47. package/out/version.d.ts +1 -1
  48. package/out/version.js +1 -1
  49. package/out/version.js.map +1 -1
  50. package/package.json +8 -8
  51. package/scheme.json +39 -215
  52. package/templates/msi/template.xml +42 -15
  53. package/templates/nsis/include/extractAppPackage.nsh +36 -0
  54. package/templates/nsis/include/installUtil.nsh +36 -8
  55. package/templates/nsis/messages.yml +2 -0
  56. package/templates/nsis/uninstaller.nsh +131 -7
  57. package/templates/snap/snapcraft.yaml +1 -0
  58. package/out/publish/BintrayPublisher.d.ts +0 -17
  59. package/out/publish/BintrayPublisher.js +0 -89
  60. package/out/publish/BintrayPublisher.js.map +0 -1
  61. package/templates/msi/WixUI_Assisted.wxs +0 -134
@@ -90,5 +90,41 @@
90
90
  !macroend
91
91
 
92
92
  !macro extractUsing7za FILE
93
+ Push $OUTDIR
94
+ CreateDirectory "$PLUGINSDIR\7z-out"
95
+ ClearErrors
96
+ SetOutPath "$PLUGINSDIR\7z-out"
97
+ Nsis7z::Extract "${FILE}"
98
+ Pop $R0
99
+ SetOutPath $R0
100
+
101
+ # Retry counter
102
+ StrCpy $R1 0
103
+
104
+ LoopExtract7za:
105
+ IntOp $R1 $R1 + 1
106
+
107
+ # Attempt to copy files in atomic way
108
+ CopyFiles /SILENT "$PLUGINSDIR\7z-out\*" $OUTDIR
109
+ IfErrors 0 DoneExtract7za
110
+
111
+ DetailPrint `Can't modify "${PRODUCT_NAME}"'s files.`
112
+ ${if} $R1 < 5
113
+ # Try copying a few times before asking for a user action.
114
+ Goto RetryExtract7za
115
+ ${else}
116
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY RetryExtract7za
117
+ ${endIf}
118
+
119
+ # As an absolutely last resort after a few automatic attempts and user
120
+ # intervention - we will just overwrite everything with `Nsis7z::Extract`
121
+ # even though it is not atomic and will ignore errors.
93
122
  Nsis7z::Extract "${FILE}"
123
+ Quit
124
+
125
+ RetryExtract7za:
126
+ Sleep 1000
127
+ Goto LoopExtract7za
128
+
129
+ DoneExtract7za:
94
130
  !macroend
@@ -126,7 +126,10 @@ Function handleUninstallResult
126
126
  Return
127
127
 
128
128
  ${if} $R0 != 0
129
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(uninstallFailed): $R0"
129
130
  DetailPrint `Uninstall was not successful. Uninstaller error code: $R0.`
131
+ SetErrorLevel 2
132
+ Quit
130
133
  ${endif}
131
134
  FunctionEnd
132
135
 
@@ -156,7 +159,7 @@ Function uninstallOldVersion
156
159
  !endif
157
160
  ${if} $uninstallString == ""
158
161
  ClearErrors
159
- Goto Done
162
+ Return
160
163
  ${endif}
161
164
  ${endif}
162
165
 
@@ -175,7 +178,7 @@ Function uninstallOldVersion
175
178
  ${if} $installationDir == ""
176
179
  ${andIf} $uninstallerFileName == ""
177
180
  ClearErrors
178
- Goto Done
181
+ Return
179
182
  ${endif}
180
183
 
181
184
  ${if} $installMode == "CurrentUser"
@@ -206,12 +209,37 @@ Function uninstallOldVersion
206
209
  StrCpy $uninstallerFileNameTemp "$PLUGINSDIR\old-uninstaller.exe"
207
210
  !insertmacro copyFile "$uninstallerFileName" "$uninstallerFileNameTemp"
208
211
 
209
- ExecWait '"$uninstallerFileNameTemp" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0
210
- ifErrors 0 Done
211
- # the execution failed - might have been caused by some group policy restrictions
212
- # we try to execute the uninstaller in place
213
- ExecWait '"$uninstallerFileName" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0
214
- Done:
212
+ # Retry counter
213
+ StrCpy $R5 0
214
+
215
+ UninstallLoop:
216
+ IntOp $R5 $R5 + 1
217
+
218
+ ${if} $R5 > 5
219
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY OneMoreAttempt
220
+ Return
221
+ ${endIf}
222
+
223
+ OneMoreAttempt:
224
+ ExecWait '"$uninstallerFileNameTemp" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0
225
+ ifErrors TryInPlace CheckResult
226
+
227
+ TryInPlace:
228
+ # the execution failed - might have been caused by some group policy restrictions
229
+ # we try to execute the uninstaller in place
230
+ ExecWait '"$uninstallerFileName" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0
231
+ ifErrors DoesNotExist
232
+
233
+ CheckResult:
234
+ ${if} $R0 == 0
235
+ Return
236
+ ${endIf}
237
+
238
+ Sleep 1000
239
+ Goto UninstallLoop
240
+
241
+ DoesNotExist:
242
+ SetErrors
215
243
  FunctionEnd
216
244
 
217
245
  !macro uninstallOldVersion ROOT_KEY
@@ -144,3 +144,5 @@ areYouSureToUninstall:
144
144
  da: Er du sikker på, at du vil afinstallere ${PRODUCT_NAME}?
145
145
  decompressionFailed:
146
146
  en: Failed to decompress files. Please try running the installer again.
147
+ uninstallFailed:
148
+ en: Failed to uninstall old application files. Please try running the installer again.
@@ -28,6 +28,109 @@ Function un.onInit
28
28
  !endif
29
29
  FunctionEnd
30
30
 
31
+ Function un.atomicRMDir
32
+ Exch $R0
33
+ Push $R1
34
+ Push $R2
35
+ Push $R3
36
+
37
+ StrCpy $R3 "$INSTDIR$R0\*.*"
38
+ FindFirst $R1 $R2 $R3
39
+
40
+ loop:
41
+ StrCmp $R2 "" break
42
+
43
+ StrCmp $R2 "." continue
44
+ StrCmp $R2 ".." continue
45
+
46
+ IfFileExists "$INSTDIR$R0\$R2\*.*" isDir isNotDir
47
+
48
+ isDir:
49
+ CreateDirectory "$PLUGINSDIR\old-install$R0\$R2"
50
+
51
+ Push "$R0\$R2"
52
+ Call un.atomicRMDir
53
+ Pop $R3
54
+
55
+ ${if} $R3 != 0
56
+ Goto done
57
+ ${endIf}
58
+
59
+ Goto continue
60
+
61
+ isNotDir:
62
+ ClearErrors
63
+ Rename "$INSTDIR$R0\$R2" "$PLUGINSDIR\old-install$R0\$R2"
64
+
65
+ # Ignore errors when renaming ourselves.
66
+ StrCmp "$R0\$R2" "${UNINSTALL_FILENAME}" 0 +2
67
+ ClearErrors
68
+
69
+ IfErrors 0 +3
70
+ StrCpy $R3 "$INSTDIR$R0\$R2"
71
+ Goto done
72
+
73
+ continue:
74
+ FindNext $R1 $R2
75
+ Goto loop
76
+
77
+ break:
78
+ StrCpy $R3 0
79
+
80
+ done:
81
+ FindClose $R1
82
+
83
+ StrCpy $R0 $R3
84
+
85
+ Pop $R3
86
+ Pop $R2
87
+ Pop $R1
88
+ Exch $R0
89
+ FunctionEnd
90
+
91
+ Function un.restoreFiles
92
+ Exch $R0
93
+ Push $R1
94
+ Push $R2
95
+ Push $R3
96
+
97
+ StrCpy $R3 "$PLUGINSDIR\old-install$R0\*.*"
98
+ FindFirst $R1 $R2 $R3
99
+
100
+ loop:
101
+ StrCmp $R2 "" break
102
+
103
+ StrCmp $R2 "." continue
104
+ StrCmp $R2 ".." continue
105
+
106
+ IfFileExists "$INSTDIR$R0\$R2\*.*" isDir isNotDir
107
+
108
+ isDir:
109
+ CreateDirectory "$INSTDIR$R0\$R2"
110
+
111
+ Push "$R0\$R2"
112
+ Call un.restoreFiles
113
+ Pop $R3
114
+
115
+ Goto continue
116
+
117
+ isNotDir:
118
+ Rename $PLUGINSDIR\old-install$R0\$R2" "$INSTDIR$R0\$R2"
119
+
120
+ continue:
121
+ FindNext $R1 $R2
122
+ Goto loop
123
+
124
+ break:
125
+ StrCpy $R0 0
126
+ FindClose $R1
127
+
128
+ Pop $R3
129
+ Pop $R2
130
+ Pop $R1
131
+ Exch $R0
132
+ FunctionEnd
133
+
31
134
  Section "un.install"
32
135
  # for assisted installer we check it here to show progress
33
136
  !ifndef ONE_CLICK
@@ -38,6 +141,34 @@ Section "un.install"
38
141
 
39
142
  !insertmacro setLinkVars
40
143
 
144
+ # delete the installed files
145
+ !ifmacrodef customRemoveFiles
146
+ !insertmacro customRemoveFiles
147
+ !else
148
+ ${if} ${isUpdated}
149
+ CreateDirectory "$PLUGINSDIR\old-install"
150
+
151
+ Push ""
152
+ Call un.atomicRMDir
153
+ Pop $R0
154
+
155
+ ${if} $R0 != 0
156
+ DetailPrint "File is busy, aborting: $R0"
157
+
158
+ # Attempt to restore previous directory
159
+ Push ""
160
+ Call un.restoreFiles
161
+ Pop $R0
162
+
163
+ Abort `Can't rename "$INSTDIR" to "$PLUGINSDIR\old-install".`
164
+ ${endif}
165
+
166
+ ${endif}
167
+
168
+ # Remove all files (or remaining shallow directories from the block above)
169
+ RMDir /r $INSTDIR
170
+ !endif
171
+
41
172
  ${ifNot} ${isKeepShortcuts}
42
173
  WinShell::UninstAppUserModelId "${APP_ID}"
43
174
 
@@ -64,13 +195,6 @@ Section "un.install"
64
195
  !insertmacro unregisterFileAssociations
65
196
  !endif
66
197
 
67
- # delete the installed files
68
- !ifmacrodef customRemoveFiles
69
- !insertmacro customRemoveFiles
70
- !else
71
- RMDir /r $INSTDIR
72
- !endif
73
-
74
198
  Var /GLOBAL isDeleteAppData
75
199
  StrCpy $isDeleteAppData "0"
76
200
 
@@ -1,6 +1,7 @@
1
1
  base: core18
2
2
  grade: stable
3
3
  confinement: strict
4
+ compression: lzo
4
5
  parts:
5
6
  launch-scripts:
6
7
  plugin: dump
@@ -1,17 +0,0 @@
1
- /// <reference types="node" />
2
- import { Arch } from "builder-util";
3
- import { BintrayOptions } from "builder-util-runtime";
4
- import { ClientRequest } from "http";
5
- import { HttpPublisher, PublishContext, PublishOptions } from "electron-publish";
6
- export declare class BintrayPublisher extends HttpPublisher {
7
- private readonly version;
8
- private readonly options;
9
- private readonly _versionPromise;
10
- private readonly client;
11
- readonly providerName = "Bintray";
12
- constructor(context: PublishContext, info: BintrayOptions, version: string, options?: PublishOptions);
13
- private init;
14
- protected doUpload(fileName: string, arch: Arch, dataLength: number, requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void): Promise<any>;
15
- deleteRelease(isForce?: boolean): Promise<void>;
16
- toString(): string;
17
- }
@@ -1,89 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BintrayPublisher = void 0;
4
- const builder_util_1 = require("builder-util");
5
- const builder_util_runtime_1 = require("builder-util-runtime");
6
- const bintray_1 = require("builder-util-runtime/out/bintray");
7
- const nodeHttpExecutor_1 = require("builder-util/out/nodeHttpExecutor");
8
- const lazy_val_1 = require("lazy-val");
9
- const electron_publish_1 = require("electron-publish");
10
- class BintrayPublisher extends electron_publish_1.HttpPublisher {
11
- constructor(context, info, version, options = {}) {
12
- super(context);
13
- this.version = version;
14
- this.options = options;
15
- this._versionPromise = new lazy_val_1.Lazy(() => this.init());
16
- this.providerName = "Bintray";
17
- let token = info.token;
18
- if (builder_util_1.isEmptyOrSpaces(token)) {
19
- token = process.env.BT_TOKEN;
20
- if (builder_util_1.isEmptyOrSpaces(token)) {
21
- throw new builder_util_1.InvalidConfigurationError(`Bintray token is not set, neither programmatically, nor using env "BT_TOKEN" (see https://www.electron.build/configuration/publish#bintrayoptions)`);
22
- }
23
- token = token.trim();
24
- if (!builder_util_1.isTokenCharValid(token)) {
25
- throw new builder_util_1.InvalidConfigurationError(`Bintray token (${JSON.stringify(token)}) contains invalid characters, please check env "BT_TOKEN"`);
26
- }
27
- }
28
- this.client = new bintray_1.BintrayClient(info, nodeHttpExecutor_1.httpExecutor, this.context.cancellationToken, token);
29
- }
30
- async init() {
31
- try {
32
- return await this.client.getVersion(this.version);
33
- }
34
- catch (e) {
35
- if (e instanceof builder_util_runtime_1.HttpError && e.statusCode === 404) {
36
- if (this.options.publish !== "onTagOrDraft") {
37
- builder_util_1.log.info({ version: this.version }, "version doesn't exist, creating one");
38
- return await this.client.createVersion(this.version);
39
- }
40
- else {
41
- builder_util_1.log.warn({ reason: "version doesn't exist", version: this.version }, "skipped publishing");
42
- }
43
- }
44
- throw e;
45
- }
46
- }
47
- async doUpload(fileName, arch, dataLength, requestProcessor) {
48
- const version = await this._versionPromise.value;
49
- if (version == null) {
50
- builder_util_1.log.warn({ file: fileName, reason: "version doesn't exist and is not created", version: this.version }, "skipped publishing");
51
- return;
52
- }
53
- const options = {
54
- hostname: "api.bintray.com",
55
- path: `/content/${this.client.owner}/${this.client.repo}/${this.client.packageName}/${encodeURI(`${version.name}/${fileName}`)}`,
56
- method: "PUT",
57
- headers: {
58
- "Content-Length": dataLength,
59
- "X-Bintray-Override": "1",
60
- "X-Bintray-Publish": "1",
61
- "X-Bintray-Debian-Architecture": builder_util_1.toLinuxArchString(arch, "deb"),
62
- },
63
- };
64
- if (this.client.distribution != null) {
65
- options.headers["X-Bintray-Debian-Distribution"] = this.client.distribution;
66
- }
67
- if (this.client.component != null) {
68
- options.headers["X-Bintray-Debian-Component"] = this.client.component;
69
- }
70
- return builder_util_runtime_1.HttpExecutor.retryOnServerError(() => {
71
- return nodeHttpExecutor_1.httpExecutor.doApiRequest(builder_util_runtime_1.configureRequestOptions(options, this.client.auth), this.context.cancellationToken, requestProcessor);
72
- });
73
- }
74
- //noinspection JSUnusedGlobalSymbols
75
- async deleteRelease(isForce = false) {
76
- if (!isForce && !this._versionPromise.hasValue) {
77
- return;
78
- }
79
- const version = await this._versionPromise.value;
80
- if (version != null) {
81
- await this.client.deleteVersion(version.name);
82
- }
83
- }
84
- toString() {
85
- return `Bintray (user: ${this.client.user || this.client.owner}, owner: ${this.client.owner}, package: ${this.client.packageName}, repository: ${this.client.repo}, version: ${this.version})`;
86
- }
87
- }
88
- exports.BintrayPublisher = BintrayPublisher;
89
- //# sourceMappingURL=BintrayPublisher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BintrayPublisher.js","sourceRoot":"","sources":["../../src/publish/BintrayPublisher.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, InvalidConfigurationError, isEmptyOrSpaces, isTokenCharValid, log, toLinuxArchString } from \"builder-util\"\nimport { BintrayOptions, configureRequestOptions, HttpError, HttpExecutor } from \"builder-util-runtime\"\nimport { BintrayClient, Version } from \"builder-util-runtime/out/bintray\"\nimport { httpExecutor } from \"builder-util/out/nodeHttpExecutor\"\nimport { ClientRequest, RequestOptions } from \"http\"\nimport { Lazy } from \"lazy-val\"\nimport { HttpPublisher, PublishContext, PublishOptions } from \"electron-publish\"\n\nexport class BintrayPublisher extends HttpPublisher {\n private readonly _versionPromise = new Lazy(() => this.init())\n\n private readonly client: BintrayClient\n\n readonly providerName = \"Bintray\"\n\n constructor(context: PublishContext, info: BintrayOptions, private readonly version: string, private readonly options: PublishOptions = {}) {\n super(context)\n\n let token = info.token\n if (isEmptyOrSpaces(token)) {\n token = process.env.BT_TOKEN\n if (isEmptyOrSpaces(token)) {\n throw new InvalidConfigurationError(\n `Bintray token is not set, neither programmatically, nor using env \"BT_TOKEN\" (see https://www.electron.build/configuration/publish#bintrayoptions)`\n )\n }\n\n token = token.trim()\n\n if (!isTokenCharValid(token)) {\n throw new InvalidConfigurationError(`Bintray token (${JSON.stringify(token)}) contains invalid characters, please check env \"BT_TOKEN\"`)\n }\n }\n\n this.client = new BintrayClient(info, httpExecutor, this.context.cancellationToken, token)\n }\n\n private async init(): Promise<Version | null> {\n try {\n return await this.client.getVersion(this.version)\n } catch (e) {\n if (e instanceof HttpError && e.statusCode === 404) {\n if (this.options.publish !== \"onTagOrDraft\") {\n log.info({ version: this.version }, \"version doesn't exist, creating one\")\n return await this.client.createVersion(this.version)\n } else {\n log.warn({ reason: \"version doesn't exist\", version: this.version }, \"skipped publishing\")\n }\n }\n\n throw e\n }\n }\n\n protected async doUpload(fileName: string, arch: Arch, dataLength: number, requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void) {\n const version = await this._versionPromise.value\n if (version == null) {\n log.warn({ file: fileName, reason: \"version doesn't exist and is not created\", version: this.version }, \"skipped publishing\")\n return\n }\n\n const options: RequestOptions = {\n hostname: \"api.bintray.com\",\n path: `/content/${this.client.owner}/${this.client.repo}/${this.client.packageName}/${encodeURI(`${version.name}/${fileName}`)}`,\n method: \"PUT\",\n headers: {\n \"Content-Length\": dataLength,\n \"X-Bintray-Override\": \"1\",\n \"X-Bintray-Publish\": \"1\",\n \"X-Bintray-Debian-Architecture\": toLinuxArchString(arch, \"deb\"),\n },\n }\n\n if (this.client.distribution != null) {\n options.headers![\"X-Bintray-Debian-Distribution\"] = this.client.distribution\n }\n\n if (this.client.component != null) {\n options.headers![\"X-Bintray-Debian-Component\"] = this.client.component\n }\n\n return HttpExecutor.retryOnServerError(() => {\n return httpExecutor.doApiRequest(configureRequestOptions(options, this.client.auth), this.context.cancellationToken, requestProcessor)\n })\n }\n\n //noinspection JSUnusedGlobalSymbols\n async deleteRelease(isForce = false): Promise<void> {\n if (!isForce && !this._versionPromise.hasValue) {\n return\n }\n\n const version = await this._versionPromise.value\n if (version != null) {\n await this.client.deleteVersion(version.name)\n }\n }\n\n toString() {\n return `Bintray (user: ${this.client.user || this.client.owner}, owner: ${this.client.owner}, package: ${this.client.packageName}, repository: ${this.client.repo}, version: ${\n this.version\n })`\n }\n}\n"]}
@@ -1,134 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
- <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
4
- <Fragment>
5
- <WixVariable Id="WixUISupportPerUser" Value="1" Overridable="yes"/>
6
- <WixVariable Id="WixUISupportPerMachine" Value="1" Overridable="yes"/>
7
-
8
- <PropertyRef Id="ApplicationFolderName"/>
9
-
10
- <UI Id="WixUI_Assisted">
11
- <Dialog Id="InstallScopeDialog" Width="370" Height="270" Title="!(loc.InstallScopeDlg_Title)" KeepModeless="yes">
12
- <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.InstallScopeDlgBannerBitmap)"/>
13
- <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0"/>
14
- <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0"/>
15
- <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="20" Transparent="yes" NoPrefix="yes" Text="!(loc.InstallScopeDlgDescription)"/>
16
- <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.InstallScopeDlgTitle)"/>
17
-
18
- <Control Id="BothScopes" Type="RadioButtonGroup" X="20" Y="55" Width="330" Height="120" Property="WixAppFolder" Hidden="yes">
19
- <RadioButtonGroup Property="WixAppFolder">
20
- <RadioButton Value="WixPerUserFolder" X="0" Y="0" Width="295" Height="16" Text="!(loc.InstallScopeDlgPerUser)"/>
21
- <RadioButton Value="WixPerMachineFolder" X="0" Y="60" Width="295" Height="16" Text="!(loc.InstallScopeDlgPerMachine)"/>
22
- </RadioButtonGroup>
23
- <Condition Action="show">Privileged AND (!(wix.WixUISupportPerUser) AND !(wix.WixUISupportPerMachine))</Condition>
24
- </Control>
25
- <Control Id="PerUserDescription" Type="Text" X="33" Y="70" Width="300" Height="36" Hidden="yes" NoPrefix="yes" Text="!(loc.InstallScopeDlgPerUserDescription)">
26
- <Condition Action="show">!(wix.WixUISupportPerUser)</Condition>
27
- </Control>
28
- <Control Id="NoPerUserDescription" Type="Text" X="33" Y="70" Width="300" Height="36" Hidden="yes" NoPrefix="yes" Text="!(loc.InstallScopeDlgNoPerUserDescription)">
29
- <Condition Action="show">NOT !(wix.WixUISupportPerUser)</Condition>
30
- </Control>
31
- <Control Id="PerMachineDescription" Type="Text" X="33" Y="131" Width="300" Height="36" Hidden="yes" NoPrefix="yes" Text="!(loc.InstallScopeDlgPerMachineDescription)">
32
- <Condition Action="show">Privileged</Condition>
33
- </Control>
34
-
35
- <Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="!(loc.AdvancedWelcomeEulaDlgInstall)" Hidden="yes">
36
- <Condition Action="show">WixAppFolder = "WixPerMachineFolder"</Condition>
37
- <Condition Action="hide">WixAppFolder = "WixPerUserFolder"</Condition>
38
-
39
- <!-- F*** WiX - it doesn't work. Installed per-user in any case. -->
40
- <Publish Property="MSIINSTALLPERUSER">1</Publish>
41
-
42
- <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
43
- <Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
44
- <Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
45
- <Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
46
- <Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
47
- <Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
48
- </Control>
49
- <Control Id="InstallNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Default="yes" Text="!(loc.AdvancedWelcomeEulaDlgInstall)" Hidden="yes">
50
- <Condition Action="show">WixAppFolder = "WixPerUserFolder"</Condition>
51
- <Condition Action="hide">WixAppFolder = "WixPerMachineFolder"</Condition>
52
-
53
- <!--<Publish Property="MSIINSTALLPERUSER" Value="1" Order="0">WixAppFolder = "WixPerUserFolder"</Publish>-->
54
-
55
- <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
56
- <Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
57
- <Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
58
- <Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
59
- <Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
60
- <Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
61
- </Control>
62
-
63
- <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
64
- <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
65
- </Control>
66
- </Dialog>
67
-
68
- <!--<Publish Dialog="InstallScopeDialog" Control="InstallNoShield" Property="MSIINSTALLPERUSER" Value="1" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>-->
69
- <!--<Publish Dialog="InstallScopeDialog" Control="Install" Property="MSIINSTALLPERUSER" Value="{}" Order="4">WixAppFolder = "WixPerMachineFolder"</Publish>-->
70
-
71
- <TextStyle Id="WixUI_Font_Normal" FaceName="!(loc.Advanced_Font_FaceName)" Size="!(loc.Advanced_Font_Normal_Size)"/>
72
- <TextStyle Id="WixUI_Font_Bigger" FaceName="!(loc.Advanced_Font_FaceName)" Size="!(loc.Advanced_Font_Bigger_Size)"/>
73
- <TextStyle Id="WixUI_Font_Title" FaceName="!(loc.Advanced_Font_FaceName)" Size="!(loc.Advanced_Font_Title_Size)" Bold="yes"/>
74
- <TextStyle Id="WixUI_Font_Emphasized" FaceName="!(loc.Advanced_Font_FaceName)" Size="!(loc.Advanced_Font_Emphasized_Size)" Bold="yes"/>
75
-
76
- <Property Id="DefaultUIFont" Value="WixUI_Font_Normal"/>
77
-
78
- <DialogRef Id="BrowseDlg"/>
79
- <DialogRef Id="DiskCostDlg"/>
80
- <DialogRef Id="ErrorDlg"/>
81
- <DialogRef Id="FatalError"/>
82
- <DialogRef Id="FilesInUse"/>
83
- <DialogRef Id="MsiRMFilesInUse"/>
84
- <DialogRef Id="PrepareDlg"/>
85
- <DialogRef Id="ProgressDlg"/>
86
- <DialogRef Id="ResumeDlg"/>
87
- <DialogRef Id="UserExit"/>
88
-
89
- <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
90
- <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="runAfterFinish">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
91
-
92
- <!--<Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="1">1</Publish>-->
93
- <!--<Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="2"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>-->
94
-
95
- <!--<Publish Dialog="InstallScopeDialog" Control="Next" Property="WixAppFolder" Value="WixPerUserFolder" Order="1">!(wix.WixUISupportPerUser) AND NOT Privileged</Publish>-->
96
- <!--<Publish Dialog="InstallScopeDialog" Control="Next" Property="MSIINSTALLPERUSER" Value="1" Order="2">!(wix.WixUISupportPerUser) AND NOT Privileged</Publish>-->
97
-
98
- <!--<Publish Dialog="InstallScopeDialog" Control="Next" Property="MSIINSTALLPERUSER" Value="1" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>-->
99
- <!--<Publish Dialog="InstallScopeDialog" Control="Next" Property="MSIINSTALLPERUSER" Value="{}" Order="4">WixAppFolder = "WixPerMachineFolder"</Publish>-->
100
-
101
- <!-- do not allow choosing installation dir if per-user -->
102
- <!--<Publish Dialog="InstallScopeDialog" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="6">WixAppFolder = "WixPerUserFolder"</Publish>-->
103
- <!--<Publish Dialog="InstallScopeDialog" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="7">WixAppFolder = "WixPerMachineFolder"</Publish>-->
104
-
105
- <!--<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="InstallScopeDialog">!(wix.WixUISupportPerUser)</Publish>-->
106
- <!--<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="AdvancedWelcomeEulaDlg">NOT !(wix.WixUISupportPerUser)</Publish>-->
107
- <!--<Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>-->
108
- <!--<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>-->
109
- <!--<Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>-->
110
- <!--<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="ExitDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>-->
111
- <!--<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>-->
112
- <!--<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>-->
113
-
114
- <!--<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>-->
115
-
116
- <!--<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="FeaturesDlg">1</Publish>-->
117
- <!--<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>-->
118
- <!--<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>-->
119
- <!--<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>-->
120
-
121
- <!--<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>-->
122
- <!--<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish>-->
123
-
124
- <!--<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>-->
125
-
126
- <InstallUISequence>
127
- <Show Dialog="InstallScopeDialog" Sequence="1">NOT Installed</Show>
128
- </InstallUISequence>
129
- </UI>
130
-
131
- <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER"/>
132
- <UIRef Id="WixUI_Common"/>
133
- </Fragment>
134
- </Wix>