Electron 323: allow admins to set permissions to peripherals (#329)

- implement permissions settings for electron
- add "Yes" / "No" as user visible text in the windows installer confirmation screen
- add "Yes" / "No" as user visible text in the windows installer for settings screen
- fix windows installer conflicts
This commit is contained in:
Vishwas Shashidhar authored and GitHub committed 2018-03-20 17:49:27 +05:30
1 parent 6a8592694e
commit 217299bcf8
12 files changed
+630 -86

No files matched your search

+10 -1
View File
@@ -19,5 +19,14 @@
"authServerWhitelist": "",
"authNegotiateDelegateWhitelist": "",
"disableGpu": false
},
"permissions": {
"media": false,
"geolocation": true,
"notifications": true,
"midiSysex": true,
"pointerLock": true,
"fullscreen": false,
"openExternal": true
}
}
}
@@ -6,7 +6,7 @@
<dict>
<key>Resources/Base.lproj/MyInstallerPane.nib</key>
<data>
REWscTugC7Nqck170ufKwa7niM8=
ozgq40OwEdGzEYmpvPfyOGNdoxc=
</data>
<key>Resources/InstallerSections.plist</key>
<data>
@@ -37,11 +37,11 @@
<dict>
<key>hash</key>
<data>
REWscTugC7Nqck170ufKwa7niM8=
ozgq40OwEdGzEYmpvPfyOGNdoxc=
</data>
<key>hash2</key>
<data>
7tVq2ZiKqlKpvUpE6okEaYi4n4W8rSdip7Oxp23CKC8=
o5paIuef2SCH3ReBvdV7oINRCSJTzFOAkbopJGY4pjY=
</data>
</dict>
<key>Resources/InstallerSections.plist</key>
@@ -22,18 +22,25 @@
<outlet property="bringToFrontCheckBox" destination="U3w-pH-PqJ" id="sdD-Dp-GpD"/>
<outlet property="bringToFrontTextBox" destination="oWV-om-PWr" id="bc6-cj-Zmy"/>
<outlet property="contentView" destination="TUK-W2-vig" id="gTd-A7-dof"/>
<outlet property="externalAppCheckBox" destination="aOc-wA-S9R" id="Z2r-Qs-qec"/>
<outlet property="fullScreenCheckBox" destination="4gT-80-aYv" id="kHn-lm-ayT"/>
<outlet property="geoLocationCheckBox" destination="alZ-bL-g68" id="7Bp-Nt-Y9R"/>
<outlet property="mediaCheckBox" destination="Fi3-3U-hd6" id="8gM-oP-dtz"/>
<outlet property="midiSysexCheckBox" destination="NI4-EF-6y8" id="5EN-j2-258"/>
<outlet property="minimizeOnCloseCheckBox" destination="XPe-yO-v9Y" id="ewr-3C-eNJ"/>
<outlet property="notificationsCheckBox" destination="zHq-Xk-yJA" id="f5a-4V-yiD"/>
<outlet property="parentSection" destination="-2" id="FB7-UV-e8k"/>
<outlet property="podUrlAlertTextBox" destination="wzk-BB-itI" id="Kab-Hu-5vF"/>
<outlet property="podUrlTextBox" destination="uwa-xi-M5X" id="vLY-gf-Cu7"/>
<outlet property="pointerLockCheckBox" destination="nR5-El-vtz" id="s6c-p1-60Q"/>
</connections>
</customObject>
<customView id="TUK-W2-vig" userLabel="View">
<rect key="frame" x="0.0" y="0.0" width="418" height="330"/>
<rect key="frame" x="0.0" y="0.0" width="445" height="365"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kEO-Mr-GRW">
<rect key="frame" x="8" y="186" width="182" height="43"/>
<rect key="frame" x="8" y="276" width="182" height="43"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Pod Url (This is where Symphony will be installed)" id="iRN-3c-tUz">
<font key="font" metaFont="system"/>
@@ -42,7 +49,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iAw-NP-Tbm">
<rect key="frame" x="8" y="99" width="188" height="28"/>
<rect key="frame" x="194" y="227" width="188" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Minimize Symphony on Close" id="z1k-Zj-Big">
<font key="font" metaFont="system"/>
@@ -51,7 +58,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KOx-3P-dPz">
<rect key="frame" x="8" y="135" width="146" height="28"/>
<rect key="frame" x="8" y="225" width="146" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Auto-launch Symphony" id="9id-I6-Bxu">
<font key="font" metaFont="system"/>
@@ -60,7 +67,7 @@
</textFieldCell>
</textField>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XPe-yO-v9Y">
<rect key="frame" x="194" y="111" width="22" height="18"/>
<rect key="frame" x="383" y="235" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uvu-EE-3sp">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -68,7 +75,7 @@
</buttonCell>
</button>
<textField toolTip="Ex: https://my.symphony.com" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uwa-xi-M5X">
<rect key="frame" x="196" y="197" width="207" height="32"/>
<rect key="frame" x="196" y="287" width="207" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" title="https://corporate.symphony.com" placeholderString="Ex: https://corporate.symphony.com" drawsBackground="YES" id="5g9-ba-etY">
<font key="font" metaFont="system"/>
@@ -77,16 +84,16 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="UYr-oC-RgI">
<rect key="frame" x="8" y="63" width="168" height="28"/>
<rect key="frame" x="8" y="191" width="146" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Symphony is always on top" id="7pE-fR-PoD">
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Always on top" id="7pE-fR-PoD">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8EB-K5-hjN">
<rect key="frame" x="194" y="75" width="22" height="18"/>
<rect key="frame" x="158" y="201" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="chP-mD-3E9">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -94,7 +101,7 @@
</buttonCell>
</button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsExpansionToolTips="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wzk-BB-itI">
<rect key="frame" x="194" y="171" width="211" height="20"/>
<rect key="frame" x="194" y="261" width="211" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="xnq-4j-scy">
<font key="font" metaFont="smallSystem"/>
@@ -103,7 +110,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oWV-om-PWr">
<rect key="frame" x="8" y="38" width="186" height="17"/>
<rect key="frame" x="194" y="203" width="186" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Bring to Front on Notifications" id="BMb-Um-fNF">
<font key="font" metaFont="system"/>
@@ -112,7 +119,7 @@
</textFieldCell>
</textField>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zJM-2d-YYz">
<rect key="frame" x="194" y="147" width="22" height="18"/>
<rect key="frame" x="158" y="235" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="o5T-Og-ooq">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -120,14 +127,152 @@
</buttonCell>
</button>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="U3w-pH-PqJ">
<rect key="frame" x="194" y="37" width="22" height="18"/>
<rect key="frame" x="383" y="201" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="Q95-3i-cEO">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MX9-Kw-aZK">
<rect key="frame" x="119" y="163" width="180" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Permissions" id="tJp-N4-bad">
<font key="font" metaFont="systemBold" size="16"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="AKh-s7-XRO">
<rect key="frame" x="10" y="133" width="67" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Media" id="C6j-DP-fsH">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oEX-a7-qK5">
<rect key="frame" x="10" y="100" width="84" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Geo Location" id="eor-co-EFD">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fpk-uy-dZ2">
<rect key="frame" x="10" y="69" width="81" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Notifications" id="i1k-aR-f09">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oVg-c7-HzK">
<rect key="frame" x="10" y="38" width="69" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Midi Sysex" id="a4r-uQ-Z2f">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="r6F-Wf-pGn">
<rect key="frame" x="245" y="133" width="80" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Pointer Lock" id="uNZ-fQ-DCZ">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GNi-3z-j8e">
<rect key="frame" x="245" y="100" width="72" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Full Screen" id="OhL-uM-1Co">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lkf-vk-Y5u">
<rect key="frame" x="245" y="69" width="118" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Open External App" id="BRl-Pd-aRb">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fi3-3U-hd6">
<rect key="frame" x="119" y="132" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TuL-TV-s6h">
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="alZ-bL-g68">
<rect key="frame" x="119" y="99" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="tmb-8Q-fC7">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zHq-Xk-yJA">
<rect key="frame" x="119" y="68" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pk8-T5-rVh">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NI4-EF-6y8">
<rect key="frame" x="119" y="36" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="GGE-GT-Zv0">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nR5-El-vtz">
<rect key="frame" x="378" y="132" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="eKN-q9-IVS">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4gT-80-aYv">
<rect key="frame" x="378" y="99" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="LXD-88-nHc">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aOc-wA-S9R">
<rect key="frame" x="378" y="68" width="22" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="qX5-oD-GFX">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="AjW-uy-6oH">
<rect key="frame" x="119" y="334" width="180" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Basic Settings" id="Pri-nP-bN1">
<font key="font" metaFont="systemBold" size="16"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<point key="canvasLocation" x="152.5" y="186.5"/>
</customView>
</objects>
</document>
@@ -17,4 +17,12 @@
@property (weak) IBOutlet NSButton *bringToFrontCheckBox;
@property (weak) IBOutlet NSTextField *bringToFrontTextBox;
@property (weak) IBOutlet NSButton *mediaCheckBox;
@property (weak) IBOutlet NSButton *geoLocationCheckBox;
@property (weak) IBOutlet NSButton *notificationsCheckBox;
@property (weak) IBOutlet NSButton *midiSysexCheckBox;
@property (weak) IBOutlet NSButton *pointerLockCheckBox;
@property (weak) IBOutlet NSButton *fullScreenCheckBox;
@property (weak) IBOutlet NSButton *externalAppCheckBox;
@end
@@ -25,20 +25,41 @@
// Now, validate the url against a url regex
NSString *regex = @"^(https:\\/\\/)?(www.)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,}(:[0-9]{1,5})?(\\/[a-zA-Z0-9-_.+!*'(),;\\/?:@=&$]*)?$";
NSPredicate *podUrlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if ([podUrlTest evaluateWithObject:podUrl]) {
return YES;
if (![podUrlTest evaluateWithObject:podUrl]) {
[_podUrlAlertTextBox setTitleWithMnemonic:@"Please enter a valid Pod url."];
return NO;
}
// In case of an invalid url, display the message under the pod url text box
// and don't go to the next screen, hence return NO
[_podUrlAlertTextBox setTitleWithMnemonic:@"Please enter a valid Pod url."];
return NO;
// Double confirmation for disabling media
if ([_mediaCheckBox state] == 0) {
NSAlert *alert = [NSAlert alertWithMessageText: @"Are you sure you wish to disable the camera, microphone, and speakers?" defaultButton:@"No" alternateButton:@"Yes" otherButton:nil informativeTextWithFormat:@""];
NSInteger button = [alert runModal];
if (button == NSAlertDefaultReturn) {
return NO;
}
return YES;
}
return YES;
}
- (void)willExitPane:(InstallerSectionDirection)dir {
[self writeSettingsToFile];
[self writePermissionsToFile];
}
- (void)writeSettingsToFile {
NSString *podUrl = [_podUrlTextBox stringValue];
NSString *securePrefix = @"https://";
@@ -46,7 +67,7 @@
podUrl = [securePrefix stringByAppendingString:podUrl];
[_podUrlTextBox setStringValue:podUrl];
}
// By default, set autoLaunchOnStart and minimizeOnClose to true
NSString *autoLaunchOnStart = @"true";
NSString *minimizeOnClose = @"true";
@@ -86,4 +107,54 @@
}
- (void)writePermissionsToFile {
// By default, set all the values to true
NSString *media = @"true";
NSString *geoLocation = @"true";
NSString *notifications = @"true";
NSString *midiSysex = @"true";
NSString *pointerLock = @"true";
NSString *fullScreen = @"true";
NSString *openExternal = @"true";
if ([_mediaCheckBox state] == 0) {
media = @"false";
}
if ([_geoLocationCheckBox state] == 0) {
geoLocation = @"false";
}
if ([_notificationsCheckBox state] == 0) {
notifications = @"false";
}
if ([_midiSysexCheckBox state] == 0) {
midiSysex = @"false";
}
if ([_pointerLockCheckBox state] == 0) {
pointerLock = @"false";
}
if ([_fullScreenCheckBox state] == 0) {
fullScreen = @"false";
}
if ([_externalAppCheckBox state] == 0) {
openExternal = @"false";
}
// Create an array with the selected options
NSArray *symPermissions = [[NSArray alloc] initWithObjects:media, geoLocation, notifications, midiSysex, pointerLock, fullScreen, openExternal, nil];
// Create a string from the array with new-line as the separator
NSString *symPermissionsString = [symPermissions componentsJoinedByString:@"\n"];
// Write all the above settings to file
[symPermissionsString writeToFile:@"/tmp/sym_permissions.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
@end
+58 -8
View File
@@ -1,17 +1,18 @@
#!/bin/sh
## Create file path variables ##
tempFilePath='/tmp/sym_settings.txt'
settingsFilePath='/tmp/sym_settings.txt'
permissionsFilePath='/tmp/sym_permissions.txt'
installPath="$2"
configPath="/Symphony.app/Contents/config/Symphony.config"
newPath=${installPath}${configPath}
## Get Symphony Settings from the temp file ##
pod_url=$(sed -n '1p' ${tempFilePath});
minimize_on_close=$(sed -n '2p' '/tmp/sym_settings.txt');
launch_on_startup=$(sed -n '3p' '/tmp/sym_settings.txt');
always_on_top=$(sed -n '4p' '/tmp/sym_settings.txt');
bring_to_front=$(sed -n '5p' '/tmp/sym_settings.txt');
pod_url=$(sed -n '1p' ${settingsFilePath});
minimize_on_close=$(sed -n '2p' ${settingsFilePath});
launch_on_startup=$(sed -n '3p' ${settingsFilePath});
always_on_top=$(sed -n '4p' ${settingsFilePath});
bring_to_front=$(sed -n '5p' ${settingsFilePath});
if [ "$pod_url" == "" ]; then
pod_url="https://corporate.symphony.com"
@@ -43,9 +44,58 @@ sed -i "" -E "s#\"launchOnStartup\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#
sed -i "" -E "s#\"bringToFront\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"bringToFront\":\ $bring_to_front#g" ${newPath}
## Remove the temp settings file created ##
rm -f ${tempFilePath}
rm -f ${settingsFilePath}
## Get Symphony Permissions from the temp file ##
media=$(sed -n '1p' ${permissionsFilePath});
geo_location=$(sed -n '2p' ${permissionsFilePath});
notifications=$(sed -n '3p' ${permissionsFilePath});
midi_sysex=$(sed -n '4p' ${permissionsFilePath});
pointer_lock=$(sed -n '5p' ${permissionsFilePath});
full_screen=$(sed -n '6p' ${permissionsFilePath});
open_external_app=$(sed -n '7p' ${permissionsFilePath});
if [ "$media" == "" ]; then
media=true;
fi
if [ "$geo_location" == "" ]; then
geo_location=true;
fi
if [ "$notifications" == "" ]; then
notifications=true;
fi
if [ "$midi_sysex" == "" ]; then
midi_sysex=true;
fi
if [ "$pointer_lock" == "" ]; then
pointer_lock=true;
fi
if [ "$full_screen" == "" ]; then
full_screen=true;
fi
if [ "$open_external_app" == "" ]; then
open_external_app=true;
fi
## Replace the default permissions with the user selected permissions ##
sed -i "" -E "s#\"media\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"media\":\ $media#g" ${newPath}
sed -i "" -E "s#\"geolocation\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"geolocation\":\ $geo_location#g" ${newPath}
sed -i "" -E "s#\"notifications\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"notifications\":\ $notifications#g" ${newPath}
sed -i "" -E "s#\"midiSysex\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"midiSysex\":\ $midi_sysex#g" ${newPath}
sed -i "" -E "s#\"pointerLock\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"pointerLock\":\ $pointer_lock#g" ${newPath}
sed -i "" -E "s#\"fullscreen\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"fullscreen\":\ $full_screen#g" ${newPath}
sed -i "" -E "s#\"openExternal\" ?: ?([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])#\"openExternal\":\ $open_external_app#g" ${newPath}
## Remove the temp permissions file created ##
rm -f ${permissionsFilePath}
## For launching symphony with sandbox enabled, create a shell script that is used as the launch point for the app
EXEC_PATH=${installPath}/Symphony.app/Contents/MacOS
exec ${EXEC_PATH}/Symphony --install ${newPath} ${launch_on_startup}
chmod 755 ${EXEC_PATH}/Symphony
chmod 755 ${EXEC_PATH}/Symphony
+10 -4
View File
@@ -5,6 +5,10 @@
<key>PACKAGES</key>
<array>
<dict>
<key>MUST-CLOSE-APPLICATION-ITEMS</key>
<array/>
<key>MUST-CLOSE-APPLICATIONS</key>
<false/>
<key>PACKAGE_FILES</key>
<dict>
<key>DEFAULT_INSTALL_LOCATION</key>
@@ -267,7 +271,7 @@
<key>PATH_TYPE</key>
<integer>0</integer>
<key>PERMISSIONS</key>
<integer>493</integer>
<integer>1005</integer>
<key>TYPE</key>
<integer>1</integer>
<key>UID</key>
@@ -439,7 +443,7 @@
<key>TREAT_MISSING_FILES_AS_WARNING</key>
<false/>
<key>VERSION</key>
<integer>4</integer>
<integer>5</integer>
</dict>
<key>PACKAGE_SCRIPTS</key>
<dict>
@@ -478,6 +482,8 @@
<false/>
<key>PAYLOAD_SIZE</key>
<integer>-1</integer>
<key>REFERENCE_PATH</key>
<string></string>
<key>RELOCATABLE</key>
<false/>
<key>USE_HFS+_COMPRESSION</key>
@@ -599,7 +605,7 @@
<key>PATH</key>
<string>SymphonySettingsPlugin.bundle</string>
<key>PATH_TYPE</key>
<integer>3</integer>
<integer>1</integer>
</dict>
</dict>
<dict>
@@ -888,4 +894,4 @@
<key>VERSION</key>
<integer>2</integer>
</dict>
</plist>
</plist>
+116 -24
View File
@@ -11,6 +11,7 @@
<ROW Property="AI_UNINSTALLER" Value="msiexec.exe"/>
<ROW Property="ALLUSERS" Value="1" MultiBuildValue="DefaultBuild:2"/>
<ROW Property="ALWAYS_ON_TOP" Value="false" Type="4"/>
<ROW Property="ALWAYS_ON_TOP_DT" Value="No"/>
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
<ROW Property="ARPHELPLINK" Value="http://www.symphony.com"/>
<ROW Property="ARPNOMODIFY" MultiBuildValue="DefaultBuild:1"/>
@@ -20,16 +21,41 @@
<ROW Property="ARPURLINFOABOUT" Value="http://www.symphony.com"/>
<ROW Property="AUTO_START" Value="true" Type="4"/>
<ROW Property="AUTO_START_CB" Value="true" Type="4"/>
<ROW Property="AUTO_START_DT" Value="No"/>
<ROW Property="BRING_TO_FRONT" Value="false" Type="4"/>
<ROW Property="BRING_TO_FRONT_DT" Value="No"/>
<ROW Property="BannerBitmap" Value="banner" MultiBuildValue="DefaultBuild:Banner.jpg" Type="1" MsiKey="BannerBitmap"/>
<ROW Property="CTRLS" Value="2"/>
<ROW Property="DialogBitmap" Value="dialog" MultiBuildValue="DefaultBuild:Tabloid.jpg" Type="1" MsiKey="DialogBitmap"/>
<ROW Property="FULL_SCREEN" Value="true"/>
<ROW Property="FULL_SCREEN_CB" Value="CheckBox" Type="4"/>
<ROW Property="FULL_SCREEN_DT" Value="No"/>
<ROW Property="INVALID_POD_URL" Value="valid" Type="4"/>
<ROW Property="LOCATION" Value="true"/>
<ROW Property="LOCATION_CB" Value="CheckBox" Type="4"/>
<ROW Property="LOCATION_DT" Value="No"/>
<ROW Property="MEDIA" Value="true"/>
<ROW Property="MEDIA_CB" Value="CheckBox" Type="4"/>
<ROW Property="MEDIA_DT" Value="No"/>
<ROW Property="MEDIS_DT" Value="No"/>
<ROW Property="MIDI_SYSEX" Value="true"/>
<ROW Property="MIDI_SYSEX_CB" Value="CheckBox" Type="4"/>
<ROW Property="MIDI_SYSEX_DT" Value="No"/>
<ROW Property="MINIMIZE_ON_CLOSE" Value="true" Type="4"/>
<ROW Property="MINIMIZE_ON_CLOSE_CB" Value="true" Type="4"/>
<ROW Property="MINIMIZE_ON_CLOSE_DT" Value="No"/>
<ROW Property="Manufacturer" Value="Symphony"/>
<ROW Property="NOTIFICATIONS" Value="true"/>
<ROW Property="NOTIFICATIONS_CB" Value="CheckBox" Type="4"/>
<ROW Property="NOTIFICATIONS_DT" Value="No"/>
<ROW Property="OPEN_EXTERNAL" Value="true"/>
<ROW Property="OPEN_EXTERNAL_CB" Value="CheckBox" Type="4"/>
<ROW Property="OPEN_EXTERNAL_DT" Value="No"/>
<ROW Property="POD_URL" Value="https://corporate.symphony.com" Type="4"/>
<ROW Property="POD_URL_LABEL" Value="http://corporate.symphony.com" Type="4"/>
<ROW Property="POINTER_LOCK" Value="true"/>
<ROW Property="POINTER_LOCK_CB" Value="CheckBox" Type="4"/>
<ROW Property="POINTER_LOCK_DT" Value="No"/>
<ROW Property="ProductCode" Value="1033:{F17EDEB4-A15F-46B9-83E9-8652CBC886B2} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Symphony-Electron"/>
@@ -294,11 +320,15 @@
<ROW File="zhCN.pak" Component_="am.pak" FileName="zh-CN.pak" Attributes="0" SourcePath="..\..\dist\win-unpacked\locales\zh-CN.pak" SelfReg="false" NextFile="zhTW.pak"/>
<ROW File="zhTW.pak" Component_="am.pak" FileName="zh-TW.pak" Attributes="0" SourcePath="..\..\dist\win-unpacked\locales\zh-TW.pak" SelfReg="false" NextFile="appupdate.yml"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.custcomp.AiAI_TxtUpdateAliasComponent">
<ROW AliasRowId="Symphony.config#&quot;minimizeOnClose&quot;\s*:\s*true," AliasRowOperation="2" ReplacePattern="&quot;minimizeOnClose&quot; : [MINIMIZE_ON_CLOSE_CB],"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.custcomp.AiPropertyAliasComponent">
<ROW AliasRowId="ALWAYS_ON_TOP_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="FULL_SCREEN_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="MEDIA_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="MIDI_SYSEX_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="NOTIFICATIONS_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="OPEN_EXTERNAL_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="POINTER_LOCK_CB" AliasRowOperation="2" Value="true"/>
<ROW AliasRowId="LOCATION_CB" AliasRowOperation="2" Value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.AiPersistentDataComponent">
<ROW PersistentRow="Symphony.config_1" Type="0" Condition="REINSTALL"/>
@@ -350,6 +380,13 @@
<ROW Property="AUTO_START_CB" Value="true"/>
<ROW Property="ALWAYS_ON_TOP_CB" Value="true"/>
<ROW Property="BRING_TO_FRONT_CB" Value="true"/>
<ROW Property="MEDIA_CB" Value="true"/>
<ROW Property="LOCATION_CB" Value="true"/>
<ROW Property="NOTIFICATIONS_CB" Value="true"/>
<ROW Property="MIDI_SYSEX_CB" Value="true"/>
<ROW Property="POINTER_LOCK_CB" Value="true"/>
<ROW Property="FULL_SCREEN_CB" Value="true"/>
<ROW Property="OPEN_EXTERNAL_CB" Value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
<ROW Dialog_="AdminBrowseDlg" Control="Logo" Type="Text" X="4" Y="228" Width="38" Height="12" Attributes="1" Text="Symphony" Order="300" TextLocId="Control.Text.AdminBrowseDlg#Logo" MsiKey="AdminBrowseDlg#Logo"/>
@@ -443,12 +480,27 @@
<ROW Dialog_="ProgressDlg" Control="ProgressBar" Type="ProgressBar" X="35" Y="115" Width="300" Height="10" Attributes="65537" Text="Progress done" Order="1100" TextLocId="Control.Text.ProgressDlg#ProgressBar" MsiKey="ProgressDlg#ProgressBar"/>
<ROW Dialog_="ResumeDlg" Control="Title" Type="Text" X="132" Y="10" Width="220" Height="47" Attributes="196611" Text="Resuming the [ProductName] [Wizard]" TextStyle="VerdanaBold13" Order="500" TextLocId="Control.Text.ResumeDlg#Title" MsiKey="ResumeDlg#Title"/>
<ROW Dialog_="ResumeDlg" Control="Description" Type="Text" X="132" Y="61" Width="220" Height="40" Attributes="196611" Text="The [Wizard] will complete the installation of [ProductName] on your computer. Click &quot;Install&quot; to continue or &quot;Cancel&quot; to exit the [Wizard]." Order="600" TextLocId="Control.Text.ResumeDlg#Description" MsiKey="ResumeDlg#Description"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" TextLocId="-" Options="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" TextLocId="-" Options="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" TextLocId="-" Options="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
<ROW Dialog_="SelectPermissionsDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
<ROW Dialog_="SelectPermissionsDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Select the Permissions your users should have" Order="700"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Select Permissions" TextStyle="[DlgTitleFont]" Order="900"/>
<ROW Dialog_="SelectPermissionsDlg" Control="MediaCheckBox" Type="CheckBox" X="15" Y="60" Width="146" Height="13" Attributes="3" Property="MEDIA_CB" Text="Media (Audio, Video, Screenshare)" Order="1000"/>
<ROW Dialog_="SelectPermissionsDlg" Control="LocationCheckBox" Type="CheckBox" X="15" Y="90" Width="98" Height="13" Attributes="3" Property="LOCATION_CB" Text="Geo Location" Order="1100"/>
<ROW Dialog_="SelectPermissionsDlg" Control="NotificationsCheckBox" Type="CheckBox" X="15" Y="120" Width="98" Height="13" Attributes="3" Property="NOTIFICATIONS_CB" Text="Notifications" Order="1200"/>
<ROW Dialog_="SelectPermissionsDlg" Control="MidiSysexCheckBox" Type="CheckBox" X="15" Y="150" Width="98" Height="13" Attributes="3" Property="MIDI_SYSEX_CB" Text="Midi Sysex" Order="1300"/>
<ROW Dialog_="SelectPermissionsDlg" Control="PointerLockCheckBox" Type="CheckBox" X="180" Y="60" Width="98" Height="13" Attributes="3" Property="POINTER_LOCK_CB" Text="Pointer Lock" Order="1400"/>
<ROW Dialog_="SelectPermissionsDlg" Control="FullScreenCheckBox" Type="CheckBox" X="180" Y="90" Width="98" Height="13" Attributes="3" Property="FULL_SCREEN_CB" Text="Full Screen" Order="1500"/>
<ROW Dialog_="SelectPermissionsDlg" Control="OpenExternalCheckBox" Type="CheckBox" X="180" Y="120" Width="98" Height="13" Attributes="3" Property="OPEN_EXTERNAL_CB" Text="Open External" Order="1600"/>
<ROW Dialog_="SpawnWaitDialog" Control="Yes" Type="PushButton" X="72" Y="57" Width="56" Height="17" Attributes="3" Text="[ButtonText_Yes]" Order="100" TextLocId="-"/>
<ROW Dialog_="SpawnWaitDialog" Control="Icon" Type="Icon" X="15" Y="15" Width="24" Height="24" Attributes="5242881" Text="[InfoIcon]" Order="200"/>
<ROW Dialog_="SpawnWaitDialog" Control="Text" Type="Text" X="48" Y="15" Width="194" Height="30" Attributes="3" Text="New Spawn(Wait) Dialog" Order="300"/>
<ROW Dialog_="SpawnWaitDialog" Control="No" Type="PushButton" X="132" Y="57" Width="56" Height="17" Attributes="3" Text="[ButtonText_No]" Order="400" TextLocId="-"/>
<ROW Dialog_="UserExit" Control="Title" Type="Text" X="132" Y="10" Width="220" Height="47" Attributes="196611" Text="The [ProductName] [Wizard] was interrupted" TextStyle="VerdanaBold13" Order="500" TextLocId="Control.Text.UserExit#Title" MsiKey="UserExit#Title"/>
<ROW Dialog_="VerifyDlg" Control="TemplateDlgDialogInitializer" Type="DialogInitializer" X="0" Y="0" Width="0" Height="0" Attributes="0" Order="-1" TextLocId="-" HelpLocId="-" ExtDataLocId="-"/>
<ROW Dialog_="VerifyDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" TextLocId="-" Options="1"/>
@@ -461,14 +513,38 @@
<ROW Dialog_="VerifyDlg" Control="Text_1" Type="Text" X="25" Y="88" Width="76" Height="17" Attributes="65539" Property="TEXT_1_PROP" Text="Symphony POD Url : " Order="1000"/>
<ROW Dialog_="VerifyDlg" Control="Text_2" Type="Text" X="110" Y="88" Width="145" Height="17" Attributes="65539" Property="POD_URL_LABEL" Text="[POD_URL]" Order="1100"/>
<ROW Dialog_="VerifyDlg" Control="Text_3" Type="Text" X="25" Y="114" Width="76" Height="13" Attributes="65539" Property="TEXT_3_PROP" Text="Always on Top : " Order="1200"/>
<ROW Dialog_="VerifyDlg" Control="AlwaysOnTopLabel" Type="Text" X="110" Y="114" Width="145" Height="10" Attributes="65539" Property="ALWAYS_ON_TOP" Text="[ALWAYS_ON_TOP]" Order="1300"/>
<ROW Dialog_="VerifyDlg" Control="AlwaysOnTopLabel" Type="Text" X="110" Y="114" Width="145" Height="10" Attributes="65539" Property="ALWAYS_ON_TOP_DT" Text="[ALWAYS_ON_TOP_DT]" Order="1300"/>
<ROW Dialog_="VerifyDlg" Control="Text_5" Type="Text" X="25" Y="139" Width="76" Height="13" Attributes="65539" Property="TEXT_3_PROP_1" Text="Launch on Startup : " Order="1400"/>
<ROW Dialog_="VerifyDlg" Control="Text_7" Type="Text" X="25" Y="164" Width="76" Height="13" Attributes="65539" Property="TEXT_3_PROP_1_1" Text="Minimize on Close : " Order="1500"/>
<ROW Dialog_="VerifyDlg" Control="Text_9" Type="Text" X="25" Y="60" Width="321" Height="25" Attributes="65539" Property="TEXT_9_PROP" Text="You seem to have entered an invalid pod url. Please go back to the previous screen and rectify it." Order="1600"/>
<ROW Dialog_="VerifyDlg" Control="Text_10" Type="Text" X="25" Y="189" Width="76" Height="21" Attributes="65539" Property="TEXT_3_PROP_1_1_1" Text="Flash Notification in Taskbar :" Order="1700"/>
<ROW Dialog_="VerifyDlg" Control="BringToFrontLabel" Type="Text" X="110" Y="194" Width="145" Height="10" Attributes="65539" Property="BRING_TO_FRONT" Text="[BRING_TO_FRONT]" Order="1800"/>
<ROW Dialog_="VerifyDlg" Control="AutoStartLabel" Type="Text" X="110" Y="139" Width="145" Height="10" Attributes="65539" Property="AUTO_START" Text="[AUTO_START]" Order="1900"/>
<ROW Dialog_="VerifyDlg" Control="MinimizeOnCloseLabel" Type="Text" X="110" Y="164" Width="145" Height="10" Attributes="65539" Property="MINIMIZE_ON_CLOSE" Text="[MINIMIZE_ON_CLOSE]" Order="2000"/>
<ROW Dialog_="VerifyDlg" Control="BringToFrontLabel" Type="Text" X="110" Y="194" Width="145" Height="10" Attributes="65539" Property="BRING_TO_FRONT_DT" Text="[BRING_TO_FRONT_DT]" Order="1800"/>
<ROW Dialog_="VerifyDlg" Control="AutoStartLabel" Type="Text" X="110" Y="139" Width="145" Height="10" Attributes="65539" Property="AUTO_START_DT" Text="[AUTO_START_DT]" Order="1900"/>
<ROW Dialog_="VerifyDlg" Control="MinimizeOnCloseLabel" Type="Text" X="110" Y="164" Width="145" Height="10" Attributes="65539" Property="MINIMIZE_ON_CLOSE_DT" Text="[MINIMIZE_ON_CLOSE_DT]" Order="2000"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="VerifyPermissionsDlgDialogInitializer" Type="DialogInitializer" X="0" Y="0" Width="0" Height="0" Attributes="0" Order="-1" TextLocId="-" HelpLocId="-" ExtDataLocId="-"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Verify the information selected" Order="700"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Verify Permissions" TextStyle="[DlgTitleFont]" Order="900"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="MediaLabel" Type="Text" X="160" Y="60" Width="75" Height="11" Attributes="65539" Property="MEDIA_DT" Text="[MEDIA_DT]" Order="1000"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="media" Type="Text" X="15" Y="60" Width="136" Height="11" Attributes="65539" Property="TEXT_2_PROP" Text="Media (Audio, Video, Screenshare) :" Order="1100"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="location" Type="Text" X="15" Y="80" Width="75" Height="11" Attributes="65539" Property="TEXT_3_PROP_2" Text="Geo Location :" Order="1200"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="LocationLabel" Type="Text" X="160" Y="80" Width="75" Height="11" Attributes="65539" Property="LOCATION_DT" Text="[LOCATION_DT]" Order="1300"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="notifications" Type="Text" X="15" Y="100" Width="75" Height="11" Attributes="65539" Property="TEXT_4_PROP" Text="Notifications :" Order="1400"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="NotificationLabel" Type="Text" X="160" Y="100" Width="75" Height="11" Attributes="65539" Property="NOTIFICATIONS_DT" Text="[NOTIFICATIONS_DT]" Order="1500"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_4" Type="Text" X="15" Y="120" Width="75" Height="11" Attributes="65539" Property="TEXT_4_PROP_1" Text="Midi Sysex :" Order="1600"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="MidiSysexLabel" Type="Text" X="160" Y="120" Width="75" Height="11" Attributes="65539" Property="MIDI_SYSEX_DT" Text="[MIDI_SYSEX_DT]" Order="1700"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_6" Type="Text" X="15" Y="140" Width="75" Height="11" Attributes="65539" Property="TEXT_6_PROP_1" Text="Pointer Lock :" Order="1800"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="PointerLockLabel" Type="Text" X="160" Y="140" Width="75" Height="11" Attributes="65539" Property="POINTER_LOCK_DT" Text="[POINTER_LOCK_DT]" Order="1900"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_8" Type="Text" X="15" Y="160" Width="75" Height="11" Attributes="65539" Property="TEXT_8_PROP" Text="Full Screen :" Order="2000"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="FullScreenLabel" Type="Text" X="160" Y="160" Width="75" Height="11" Attributes="65539" Property="FULL_SCREEN_DT" Text="[FULL_SCREEN_DT]" Order="2100"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_10" Type="Text" X="15" Y="180" Width="75" Height="11" Attributes="65539" Property="TEXT_10_PROP" Text="Open External App :" Order="2200"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="OpenExternalLabel" Type="Text" X="160" Y="180" Width="75" Height="11" Attributes="65539" Property="OPEN_EXTERNAL_DT" Text="[OPEN_EXTERNAL_DT]" Order="2300"/>
<ROW Dialog_="VerifyReadyDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="300" MsiKey="VerifyReadyDlg#BannerBitmap"/>
<ROW Dialog_="VerifyReadyDlg" Control="Logo" Type="Text" X="5" Y="228" Width="39" Height="12" Attributes="1" Text="Symphony" Order="500" TextLocId="Control.Text.VerifyReadyDlg#Logo" MsiKey="VerifyReadyDlg#Logo"/>
<ROW Dialog_="VerifyReadyDlg" Control="Text" Type="Text" X="25" Y="70" Width="320" Height="21" Attributes="196611" Text="Click &quot;Install&quot; to begin the installation. If you want to review or change any of your installation settings, click &quot;Back&quot;. Click &quot;Cancel&quot; to exit the wizard." Order="700" TextLocId="Control.Text.VerifyReadyDlg#Text" MsiKey="VerifyReadyDlg#Text"/>
@@ -520,17 +596,24 @@
<ROW Dialog_="SpawnWaitDialog" Control_="No" Event="EndDialog" Argument="Return" Condition="1" Ordering="100"/>
<ROW Dialog_="SpawnWaitDialog" Control_="Yes" Event="EndDialog" Argument="Return" Condition="1" Ordering="100"/>
<ROW Dialog_="VerifyDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="NewDialog" Argument="SelectPermissionsDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfRbDiskDlg" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST=&quot;P&quot; OR NOT PROMPTROLLBACKCOST)" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="EnableRollback" Argument="False" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST=&quot;D&quot;" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfDiskDlg" Condition="AI_INSTALL AND ( (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST=&quot;F&quot;) )" Ordering="4" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[AI_ButtonText_Next_Orig]" Argument="[ButtonText_Next]" Condition="AI_INSTALL" Ordering="0" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[ButtonText_Next]" Argument="[[AI_CommitButton]]" Condition="AI_INSTALL" Ordering="1" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[AI_Text_Next_Orig]" Argument="[Text_Next]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[Text_Next]" Argument="[Text_Install]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Back" Event="[ButtonText_Next]" Argument="[AI_ButtonText_Next_Orig]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Back" Event="[Text_Next]" Argument="[AI_Text_Next_Orig]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Next" Event="NewDialog" Argument="VerifyPermissionsDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Back" Event="NewDialog" Argument="VerifyDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Back" Event="NewDialog" Argument="SelectPermissionsDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfRbDiskDlg" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST=&quot;P&quot; OR NOT PROMPTROLLBACKCOST)" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="EnableRollback" Argument="False" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST=&quot;D&quot;" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfDiskDlg" Condition="AI_INSTALL AND ( (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST=&quot;F&quot;) )" Ordering="4" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[AI_ButtonText_Next_Orig]" Argument="[ButtonText_Next]" Condition="AI_INSTALL" Ordering="0" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[ButtonText_Next]" Argument="[[AI_CommitButton]]" Condition="AI_INSTALL" Ordering="1" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[AI_Text_Next_Orig]" Argument="[Text_Next]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[Text_Next]" Argument="[Text_Install]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Back" Event="[ButtonText_Next]" Argument="[AI_ButtonText_Next_Orig]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Back" Event="[Text_Next]" Argument="[AI_Text_Next_Orig]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Next" Event="DoAction" Argument="PodUrlValidation" Condition="AI_INSTALL" Ordering="2"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
<ROW Directory_="Symphony_Dir" Component_="Symphony" ManualDelete="false"/>
@@ -561,7 +644,7 @@
<ROW Action="AI_TxtUpdaterRollback" Type="11521" Source="TxtUpdater.dll" Target="OnTxtUpdaterRollback" WithoutSeq="true"/>
<ROW Action="KillParagon" Type="1" Source="aicustact.dll" Target="StopProcess" Options="1" AdditionalSeq="AI_DATA_SETTER_2"/>
<ROW Action="KillRenderer" Type="1" Source="aicustact.dll" Target="StopProcess" Options="1" AdditionalSeq="AI_DATA_SETTER"/>
<ROW Action="PodUrlValidation" Type="37" Target="Script Text" TargetUnformatted="// First, check if the protocol is part of the url, if not, prepend it&#13;&#10;var prefix1 = &quot;https://&quot;;&#13;&#10;var prefix2 = &quot;http://&quot;;&#13;&#10;if (Session.Property(&quot;POD_URL&quot;).substr(0, prefix1.length) !== prefix1 &amp;&amp; Session.Property(&quot;POD_URL&quot;).substr(0, prefix2.length) !== prefix2) {&#13;&#10; Session.Property(&quot;POD_URL&quot;) = prefix1 + Session.Property(&quot;POD_URL&quot;);&#13;&#10;}&#13;&#10;&#13;&#10;// Check if the entered pod url is valid&#13;&#10;var podUrlRE = /^(https:\/\/)(www.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,}(:[0-9]{1,5})?(\/[a-zA-Z0-9-_.+!*&apos;(),;/?:@=&amp;$]*)?$/;&#13;&#10;var podUrlTest = podUrlRE.test(Session.Property(&quot;POD_URL&quot;));&#13;&#10;if (!podUrlTest) {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;invalid&quot;;&#13;&#10;} else {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;valid&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// By default, we set all the values to false and change based on conditions&#13;&#10;Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;false&quot;; &#13;&#10;Session.Property(&quot;AUTO_START&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;false&quot;;&#13;&#10;&#13;&#10;// If always on top is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) &amp;&amp; Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;true&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If launch on startup is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) &amp;&amp; Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;true&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If minimise on close is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;AUTO_START_CB&quot;) &amp;&amp; Session.Property(&quot;AUTO_START_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;AUTO_START&quot;) = &quot;true&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If bring to front is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;BRING_TO_FRONT_CB&quot;) &amp;&amp; Session.Property(&quot;BRING_TO_FRONT_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;true&quot;;&#13;&#10;}" WithoutSeq="true"/>
<ROW Action="PodUrlValidation" Type="37" Target="Script Text" TargetUnformatted="// First, check if the protocol is part of the url, if not, prepend it&#13;&#10;var prefix1 = &quot;https://&quot;;&#13;&#10;var prefix2 = &quot;http://&quot;;&#13;&#10;if (Session.Property(&quot;POD_URL&quot;).substr(0, prefix1.length) !== prefix1 &amp;&amp; Session.Property(&quot;POD_URL&quot;).substr(0, prefix2.length) !== prefix2) {&#13;&#10; Session.Property(&quot;POD_URL&quot;) = prefix1 + Session.Property(&quot;POD_URL&quot;);&#13;&#10;}&#13;&#10;&#13;&#10;// Check if the entered pod url is valid&#13;&#10;var podUrlRE = /^(https:\/\/)(www.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,}(:[0-9]{1,5})?(\/[a-zA-Z0-9-_.+!*&apos;(),;/?:@=&amp;$]*)?$/;&#13;&#10;var podUrlTest = podUrlRE.test(Session.Property(&quot;POD_URL&quot;));&#13;&#10;if (!podUrlTest) {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;invalid&quot;;&#13;&#10;} else {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;valid&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// By default, we set all the values to false and change based on conditions&#13;&#10;Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;false&quot;; &#13;&#10;Session.Property(&quot;AUTO_START&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;false&quot;;&#13;&#10;&#13;&#10;// App options display text based on checkbox&#13;&#10;Session.Property(&quot;ALWAYS_ON_TOP_DT&quot;) = &quot;No&quot;; &#13;&#10;Session.Property(&quot;AUTO_START_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;MINIMIZE_ON_CLOSE_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;BRING_TO_FRONT_DT&quot;) = &quot;No&quot;;&#13;&#10;&#13;&#10;// Permission request properties&#13;&#10;Session.Property(&quot;MEDIA&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;LOCATION&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;NOTIFICATIONS&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;MIDI_SYSEX&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;POINTER_LOCK&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;FULL_SCREEN&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;OPEN_EXTERNAL&quot;) = &quot;false&quot;;&#13;&#10;&#13;&#10;// Permission display text based on checkbox&#13;&#10;Session.Property(&quot;MEDIA_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;LOCATION_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;NOTIFICATIONS_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;MIDI_SYSEX_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;POINTER_LOCK_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;FULL_SCREEN_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;OPEN_EXTERNAL_DT&quot;) = &quot;No&quot;;&#13;&#10;&#13;&#10;&#13;&#10;// If always on top is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) &amp;&amp; Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;ALWAYS_ON_TOP_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If launch on startup is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) &amp;&amp; Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;MINIMIZE_ON_CLOSE_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If minimise on close is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;AUTO_START_CB&quot;) &amp;&amp; Session.Property(&quot;AUTO_START_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;AUTO_START&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;AUTO_START_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If bring to front is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;BRING_TO_FRONT_CB&quot;) &amp;&amp; Session.Property(&quot;BRING_TO_FRONT_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;BRING_TO_FRONT_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// Permissions checkbox remains checked, set the label value to true&#13;&#10;&#13;&#10;if (Session.Property(&quot;MEDIA_CB&quot;) &amp;&amp; Session.Property(&quot;MEDIA_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;MEDIA&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;MEDIA_DT&quot;) = &quot;Yes&quot;;&#13;&#10Line truncated
<ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[AI_UserProgramFiles][Manufacturer]\[ProductName]"/>
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
@@ -570,8 +653,10 @@
<ROW Action="UninstallPreviousVersions" Type="1" Source="aicustact.dll" Target="UninstallPreviousVersions" Options="1"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiDialogComponent">
<ROW Dialog="SelectPermissionsDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
<ROW Dialog="SpawnWaitDialog" HCentering="50" VCentering="50" Width="260" Height="85" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Yes" Control_Cancel="No"/>
<ROW Dialog="VerifyDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
<ROW Dialog="VerifyPermissionsDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
<ROW Name="icon.exe" SourcePath="..\..\build\icon.ico" Index="0"/>
@@ -587,12 +672,12 @@
<ROW Action="KillRenderer" Sequence="55"/>
<ROW Action="AI_DATA_SETTER" Sequence="54"/>
<ROW Action="AI_SETMIXINSTLOCATION" Sequence="749"/>
<ROW Action="AI_TxtUpdaterInstall" Sequence="5101"/>
<ROW Action="Symphony.exe" Condition="( NOT Installed ) AND ( MSIINSTALLPERUSER )" Sequence="5935"/>
<ROW Action="Symphony.exe_All_User" Condition="( NOT Installed ) AND ( ALLUSERS )" Sequence="5936"/>
<ROW Action="AI_AiBackupImmediate" Sequence="1001"/>
<ROW Action="AI_AiBackupRollback" Sequence="1501"/>
<ROW Action="AI_AiRestoreDeferred" Sequence="6599"/>
<ROW Action="AI_TxtUpdaterInstall" Sequence="5101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
<ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
@@ -648,11 +733,18 @@
<ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.TxtUpdateComponent">
<ROW Name="Url" TxtUpdateSet="Symphony.config" FindPattern="&quot;url&quot;\s*:\s*&quot;.*&quot;" ReplacePattern="&quot;url&quot;: &quot;[POD_URL]&quot;" Options="19" Order="0" FileEncoding="-1"/>
<ROW Name="MinimizeOnClose" TxtUpdateSet="Symphony.config" FindPattern="&quot;minimizeOnClose&quot;\s*:\s*true," ReplacePattern="&quot;minimizeOnClose&quot; : [MINIMIZE_ON_CLOSE]," Options="19" Order="1" FileEncoding="-1"/>
<ROW Name="AlwaysOnTop" TxtUpdateSet="Symphony.config" FindPattern="&quot;alwaysOnTop&quot;\s*:\s*false" ReplacePattern="&quot;alwaysOnTop&quot; : [ALWAYS_ON_TOP]" Options="19" Order="2" FileEncoding="-1"/>
<ROW Name="LaunchOnStartup" TxtUpdateSet="Symphony.config" FindPattern="&quot;launchOnStartup&quot;\s*:\s*true," ReplacePattern="&quot;launchOnStartup&quot; : [AUTO_START]," Options="19" Order="3" FileEncoding="-1"/>
<ROW Name="BringToFront" TxtUpdateSet="Symphony.config" FindPattern="&quot;bringToFront&quot;\s*:\s*false," ReplacePattern="&quot;bringToFront&quot; : [BRING_TO_FRONT]," Options="19" Order="4" FileEncoding="-1"/>
<ROW Name="LaunchOnStartup" TxtUpdateSet="Symphony.config" FindPattern="&quot;launchOnStartup&quot;\s*:\s*true," ReplacePattern="&quot;launchOnStartup&quot; : [AUTO_START]," Options="19" Order="3" FileEncoding="-1"/>
<ROW Name="MidiSysex" TxtUpdateSet="Symphony.config" FindPattern="&quot;midiSysex&quot;\s*:\s*true," ReplacePattern="&quot;midiSysex&quot; : [MIDI_SYSEX]," Options="19" Order="8" FileEncoding="-1"/>
<ROW Name="OpenExternal" TxtUpdateSet="Symphony.config" FindPattern="&quot;openExternal&quot;\s*:\s*true" ReplacePattern="&quot;openExternal&quot; : [OPEN_EXTERNAL]" Options="19" Order="11" FileEncoding="-1"/>
<ROW Name="Url" TxtUpdateSet="Symphony.config" FindPattern="&quot;url&quot;\s*:\s*&quot;.*&quot;" ReplacePattern="&quot;url&quot;: &quot;[POD_URL]&quot;" Options="19" Order="0" FileEncoding="-1"/>
<ROW Name="Notifications" TxtUpdateSet="Symphony.config" FindPattern="&quot;notifications&quot;\s*:\s*true," ReplacePattern="&quot;notifications&quot; : [NOTIFICATIONS]," Options="19" Order="7" FileEncoding="-1"/>
<ROW Name="MinimizeOnClose" TxtUpdateSet="Symphony.config" FindPattern="&quot;minimizeOnClose&quot;\s*:\s*true," ReplacePattern="&quot;minimizeOnClose&quot; : [MINIMIZE_ON_CLOSE]," Options="19" Order="1" FileEncoding="-1"/>
<ROW Name="PointerLock" TxtUpdateSet="Symphony.config" FindPattern="&quot;pointerLock&quot;\s*:\s*true," ReplacePattern="&quot;pointerLock&quot; : [POINTER_LOCK]," Options="19" Order="9" FileEncoding="-1"/>
<ROW Name="AlwaysOnTop" TxtUpdateSet="Symphony.config" FindPattern="&quot;alwaysOnTop&quot;\s*:\s*false" ReplacePattern="&quot;alwaysOnTop&quot; : [ALWAYS_ON_TOP]" Options="19" Order="2" FileEncoding="-1"/>
<ROW Name="Media" TxtUpdateSet="Symphony.config" FindPattern="&quot;media&quot;\s*:\s*true," ReplacePattern="&quot;media&quot; : [MEDIA]," Options="19" Order="5" FileEncoding="-1"/>
<ROW Name="Location" TxtUpdateSet="Symphony.config" FindPattern="&quot;geolocation&quot;\s*:\s*true," ReplacePattern="&quot;geolocation&quot; : [LOCATION]," Options="275" Order="6" FileEncoding="-1"/>
<ROW Name="FullScreen" TxtUpdateSet="Symphony.config" FindPattern="&quot;fullscreen&quot;\s*:\s*true," ReplacePattern="&quot;fullscreen&quot; : [FULL_SCREEN]," Options="19" Order="10" FileEncoding="-1"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.TxtUpdateSetComponent">
<ROW Key="Symphony.config" Component="am.pak" FileName="Symphony.config" Directory="config_Dir" Options="17"/>
+110 -20
View File
@@ -11,6 +11,7 @@
<ROW Property="AI_UNINSTALLER" Value="msiexec.exe"/>
<ROW Property="ALLUSERS" Value="1" MultiBuildValue="DefaultBuild:2"/>
<ROW Property="ALWAYS_ON_TOP" Value="false" Type="4"/>
<ROW Property="ALWAYS_ON_TOP_DT" Value="No"/>
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
<ROW Property="ARPHELPLINK" Value="http://www.symphony.com"/>
<ROW Property="ARPNOMODIFY" MultiBuildValue="DefaultBuild:1"/>
@@ -20,16 +21,40 @@
<ROW Property="ARPURLINFOABOUT" Value="http://www.symphony.com"/>
<ROW Property="AUTO_START" Value="true" Type="4"/>
<ROW Property="AUTO_START_CB" Value="true" Type="4"/>
<ROW Property="AUTO_START_DT" Value="No"/>
<ROW Property="BRING_TO_FRONT" Value="false"/>
<ROW Property="BRING_TO_FRONT_DT" Value="No"/>
<ROW Property="BannerBitmap" Value="banner" MultiBuildValue="DefaultBuild:Banner.jpg" Type="1" MsiKey="BannerBitmap"/>
<ROW Property="CTRLS" Value="2"/>
<ROW Property="DialogBitmap" Value="dialog" MultiBuildValue="DefaultBuild:Tabloid.jpg" Type="1" MsiKey="DialogBitmap"/>
<ROW Property="FULL_SCREEN" Value="true"/>
<ROW Property="FULL_SCREEN_CB" Value="true" Type="4"/>
<ROW Property="FULL_SCREEN_DT" Value="No"/>
<ROW Property="INVALID_POD_URL" Value="valid" Type="4"/>
<ROW Property="LOCATION" Value="true"/>
<ROW Property="LOCATION_CB" Value="true" Type="4"/>
<ROW Property="LOCATION_DT" Value="No"/>
<ROW Property="MEDIA" Value="true"/>
<ROW Property="MEDIA_CB" Value="true" Type="4"/>
<ROW Property="MEDIA_DT" Value="No"/>
<ROW Property="MIDI_SYSEX" Value="true"/>
<ROW Property="MIDI_SYSEX_CB" Value="true" Type="4"/>
<ROW Property="MIDI_SYSEX_DT" Value="No"/>
<ROW Property="MINIMIZE_ON_CLOSE" Value="true" Type="4"/>
<ROW Property="MINIMIZE_ON_CLOSE_CB" Value="true" Type="4"/>
<ROW Property="MINIMIZE_ON_CLOSE_DT" Value="No"/>
<ROW Property="Manufacturer" Value="Symphony"/>
<ROW Property="NOTIFICATIONS" Value="true"/>
<ROW Property="NOTIFICATIONS_CB" Value="true" Type="4"/>
<ROW Property="NOTIFICATIONS_DT" Value="No"/>
<ROW Property="OPEN_EXTERNAL" Value="true"/>
<ROW Property="OPEN_EXTERNAL_CB" Value="true" Type="4"/>
<ROW Property="OPEN_EXTERNAL_DT" Value="No"/>
<ROW Property="POD_URL" Value="https://corporate.symphony.com" Type="4"/>
<ROW Property="POD_URL_LABEL" Value="https://corporate.symphony.com" Type="4"/>
<ROW Property="POINTER_LOCK" Value="true"/>
<ROW Property="POINTER_LOCK_CB" Value="true" Type="4"/>
<ROW Property="POINTER_LOCK_DT" Value="No"/>
<ROW Property="ProductCode" Value="1033:{F17EDEB4-A15F-46B9-83E9-8652CBC886B2} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Symphony-Electron"/>
@@ -291,6 +316,9 @@
<ROW File="zhCN.pak" Component_="am.pak" FileName="zh-CN.pak" Attributes="0" SourcePath="..\..\dist\win-ia32-unpacked\locales\zh-CN.pak" SelfReg="false" NextFile="zhTW.pak"/>
<ROW File="zhTW.pak" Component_="am.pak" FileName="zh-TW.pak" Attributes="0" SourcePath="..\..\dist\win-ia32-unpacked\locales\zh-TW.pak" SelfReg="false" NextFile="appupdate.yml"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.custcomp.AiPropertyAliasComponent">
<ROW AliasRowOperation="0" Property="NOTIFICATION_CB" Value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
<ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="1" Languages="en" InstallationType="4" UseLargeSchema="true"/>
<ATTRIBUTE name="CurrentBuild" value="DefaultBuild"/>
@@ -333,6 +361,13 @@
<ROW Property="AUTO_START_CB" Value="true"/>
<ROW Property="ALWAYS_ON_TOP_CB" Value="true"/>
<ROW Property="BRING_TO_FRONT_CB" Value="true"/>
<ROW Property="MEDIA_CB" Value="true"/>
<ROW Property="LOCATION_CB" Value="true"/>
<ROW Property="NOTIFICATIONS_CB" Value="true"/>
<ROW Property="MIDI_SYSEX_CB" Value="true"/>
<ROW Property="POINTER_LOCK_CB" Value="true"/>
<ROW Property="FULL_SCREEN_CB" Value="true"/>
<ROW Property="OPEN_EXTERNAL_CB" Value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
<ROW Dialog_="AdminBrowseDlg" Control="Logo" Type="Text" X="4" Y="228" Width="38" Height="12" Attributes="1" Text="Symphony" Order="300" TextLocId="Control.Text.AdminBrowseDlg#Logo" MsiKey="AdminBrowseDlg#Logo"/>
@@ -426,12 +461,27 @@
<ROW Dialog_="ProgressDlg" Control="ProgressBar" Type="ProgressBar" X="35" Y="115" Width="300" Height="10" Attributes="65537" Text="Progress done" Order="1100" TextLocId="Control.Text.ProgressDlg#ProgressBar" MsiKey="ProgressDlg#ProgressBar"/>
<ROW Dialog_="ResumeDlg" Control="Title" Type="Text" X="132" Y="10" Width="220" Height="47" Attributes="196611" Text="Resuming the [ProductName] [Wizard]" TextStyle="VerdanaBold13" Order="500" TextLocId="Control.Text.ResumeDlg#Title" MsiKey="ResumeDlg#Title"/>
<ROW Dialog_="ResumeDlg" Control="Description" Type="Text" X="132" Y="61" Width="220" Height="40" Attributes="196611" Text="The [Wizard] will complete the installation of [ProductName] on your computer. Click &quot;Install&quot; to continue or &quot;Cancel&quot; to exit the [Wizard]." Order="600" TextLocId="Control.Text.ResumeDlg#Description" MsiKey="ResumeDlg#Description"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" TextLocId="-" Options="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" TextLocId="-" Options="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" TextLocId="-" Options="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
<ROW Dialog_="SelectPermissionsDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
<ROW Dialog_="SelectPermissionsDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Select the Permissions your users should have" Order="700"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
<ROW Dialog_="SelectPermissionsDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Select Permissions" TextStyle="[DlgTitleFont]" Order="900"/>
<ROW Dialog_="SelectPermissionsDlg" Control="MediaCheckBox" Type="CheckBox" X="15" Y="60" Width="144" Height="13" Attributes="3" Property="MEDIA_CB" Text="Media (Audio, Video, Screenshare)" Order="1000"/>
<ROW Dialog_="SelectPermissionsDlg" Control="LocationCheckBox" Type="CheckBox" X="15" Y="90" Width="98" Height="13" Attributes="3" Property="LOCATION_CB" Text="Geo Location" Order="1100"/>
<ROW Dialog_="SelectPermissionsDlg" Control="NotificationsCheckBox" Type="CheckBox" X="15" Y="120" Width="98" Height="13" Attributes="3" Property="NOTIFICATIONS_CB" Text="Notifications" Order="1200"/>
<ROW Dialog_="SelectPermissionsDlg" Control="MidiSysexCheckBox" Type="CheckBox" X="15" Y="150" Width="98" Height="13" Attributes="3" Property="MIDI_SYSEX_CB" Text="Midi Sysex" Order="1300"/>
<ROW Dialog_="SelectPermissionsDlg" Control="OpinterLockCheckBox" Type="CheckBox" X="180" Y="60" Width="98" Height="13" Attributes="3" Property="POINTER_LOCK_CB" Text="Pointer Lock" Order="1400"/>
<ROW Dialog_="SelectPermissionsDlg" Control="FullScreenCheckBox" Type="CheckBox" X="180" Y="90" Width="98" Height="13" Attributes="3" Property="FULL_SCREEN_CB" Text="Full Screen" Order="1500"/>
<ROW Dialog_="SelectPermissionsDlg" Control="OpenExternalCheckBox" Type="CheckBox" X="180" Y="120" Width="98" Height="13" Attributes="3" Property="OPEN_EXTERNAL_CB" Text="Open External App" Order="1600"/>
<ROW Dialog_="SpawnWaitDialog" Control="Yes" Type="PushButton" X="72" Y="57" Width="56" Height="17" Attributes="3" Text="[ButtonText_Yes]" Order="100" TextLocId="-"/>
<ROW Dialog_="SpawnWaitDialog" Control="Icon" Type="Icon" X="15" Y="15" Width="24" Height="24" Attributes="5242881" Text="[InfoIcon]" Order="200"/>
<ROW Dialog_="SpawnWaitDialog" Control="Text" Type="Text" X="48" Y="15" Width="194" Height="30" Attributes="3" Text="New Spawn(Wait) Dialog" Order="300"/>
<ROW Dialog_="SpawnWaitDialog" Control="No" Type="PushButton" X="132" Y="57" Width="56" Height="17" Attributes="3" Text="[ButtonText_No]" Order="400" TextLocId="-"/>
<ROW Dialog_="UserExit" Control="Title" Type="Text" X="132" Y="10" Width="220" Height="47" Attributes="196611" Text="The [ProductName] [Wizard] was interrupted" TextStyle="VerdanaBold13" Order="500" TextLocId="Control.Text.UserExit#Title" MsiKey="UserExit#Title"/>
<ROW Dialog_="VerifyDlg" Control="TemplateDlgDialogInitializer" Type="DialogInitializer" X="0" Y="0" Width="0" Height="0" Attributes="0" Order="-1" TextLocId="-" HelpLocId="-" ExtDataLocId="-"/>
<ROW Dialog_="VerifyDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" TextLocId="-" Options="1"/>
@@ -444,14 +494,38 @@
<ROW Dialog_="VerifyDlg" Control="Text_1" Type="Text" X="25" Y="88" Width="76" Height="17" Attributes="65539" Property="TEXT_1_PROP" Text="Symphony POD Url : " Order="1000"/>
<ROW Dialog_="VerifyDlg" Control="PodUrlLabel" Type="Text" X="110" Y="88" Width="145" Height="17" Attributes="65539" Property="POD_URL_LABEL" Text="[POD_URL]" Order="1100"/>
<ROW Dialog_="VerifyDlg" Control="Text_3" Type="Text" X="25" Y="114" Width="76" Height="13" Attributes="65539" Property="TEXT_3_PROP" Text="Always on Top : " Order="1200"/>
<ROW Dialog_="VerifyDlg" Control="AlwaysOnTopLabel" Type="Text" X="110" Y="114" Width="145" Height="10" Attributes="65539" Property="ALWAYS_ON_TOP" Text="[ALWAYS_ON_TOP]" Order="1300"/>
<ROW Dialog_="VerifyDlg" Control="AlwaysOnTopLabel" Type="Text" X="110" Y="114" Width="145" Height="10" Attributes="65539" Property="ALWAYS_ON_TOP_DT" Text="[ALWAYS_ON_TOP_DT]" Order="1300"/>
<ROW Dialog_="VerifyDlg" Control="Text_5" Type="Text" X="25" Y="139" Width="76" Height="13" Attributes="65539" Property="TEXT_3_PROP_1" Text="Launch on Startup : " Order="1400"/>
<ROW Dialog_="VerifyDlg" Control="AutoStartLabel" Type="Text" X="110" Y="139" Width="145" Height="10" Attributes="65539" Property="AUTO_START" Text="[AUTO_START]" Order="1500"/>
<ROW Dialog_="VerifyDlg" Control="AutoStartLabel" Type="Text" X="110" Y="139" Width="145" Height="10" Attributes="65539" Property="AUTO_START_DT" Text="[AUTO_START_DT]" Order="1500"/>
<ROW Dialog_="VerifyDlg" Control="Text_7" Type="Text" X="25" Y="164" Width="76" Height="13" Attributes="65539" Property="TEXT_3_PROP_1_1" Text="Minimize on Close : " Order="1600"/>
<ROW Dialog_="VerifyDlg" Control="MinimizeOnCloseLabel" Type="Text" X="110" Y="164" Width="145" Height="10" Attributes="65539" Property="MINIMIZE_ON_CLOSE" Text="[MINIMIZE_ON_CLOSE]" Order="1700"/>
<ROW Dialog_="VerifyDlg" Control="MinimizeOnCloseLabel" Type="Text" X="110" Y="164" Width="145" Height="10" Attributes="65539" Property="MINIMIZE_ON_CLOSE_DT" Text="[MINIMIZE_ON_CLOSE_DT]" Order="1700"/>
<ROW Dialog_="VerifyDlg" Control="Text_9" Type="Text" X="25" Y="60" Width="321" Height="25" Attributes="65539" Property="TEXT_9_PROP" Text="You seem to have entered an invalid pod url. Please go back to the previous screen and rectify it." Order="1800"/>
<ROW Dialog_="VerifyDlg" Control="Text_10" Type="Text" X="25" Y="189" Width="76" Height="21" Attributes="65539" Property="TEXT_3_PROP_1_1_1" Text="Flash Notification in Taskbar :" Order="1900"/>
<ROW Dialog_="VerifyDlg" Control="BringToFrontLabel" Type="Text" X="110" Y="189" Width="145" Height="10" Attributes="65539" Property="BRING_TO_FRONT" Text="[BRING_TO_FRONT]" Order="2000"/>
<ROW Dialog_="VerifyDlg" Control="BringToFrontLabel" Type="Text" X="110" Y="189" Width="145" Height="10" Attributes="65539" Property="BRING_TO_FRONT_DT" Text="[BRING_TO_FRONT_DT]" Order="2000"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="VerifyPermissionsDlgDialogInitializer" Type="DialogInitializer" X="0" Y="0" Width="0" Height="0" Attributes="0" Order="-1" TextLocId="-" HelpLocId="-" ExtDataLocId="-"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Next]" Order="100" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Cancel]" Order="200" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_Back]" Order="300" TextLocId="-" Options="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="400"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="BannerLine" Type="Line" X="0" Y="44" Width="372" Height="0" Attributes="1" Order="500"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="BottomLine" Type="Line" X="5" Y="234" Width="368" Height="0" Attributes="1" Order="600"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Attributes="196611" Text="Verify the information selected" Order="700"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Logo" Type="Text" X="4" Y="228" Width="70" Height="12" Attributes="1" Text="Advanced Installer" Order="800"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Attributes="196611" Text="Verify Permissions" TextStyle="[DlgTitleFont]" Order="900"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="media" Type="Text" X="15" Y="60" Width="136" Height="11" Attributes="65539" Property="TEXT_2_PROP" Text="Media (Audio, Video, Screenshare) :" Order="1000"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="location" Type="Text" X="15" Y="80" Width="75" Height="11" Attributes="65539" Property="TEXT_3_PROP_2" Text="Geo Location :" Order="1100"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="notifications" Type="Text" X="15" Y="100" Width="75" Height="11" Attributes="65539" Property="TEXT_4_PROP" Text="Notifications :" Order="1200"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_4" Type="Text" X="15" Y="120" Width="75" Height="11" Attributes="65539" Property="TEXT_4_PROP_1" Text="Midi Sysex :" Order="1300"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_6" Type="Text" X="15" Y="140" Width="75" Height="11" Attributes="65539" Property="TEXT_6_PROP_1" Text="Pointer Lock :" Order="1400"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_8" Type="Text" X="15" Y="160" Width="75" Height="11" Attributes="65539" Property="TEXT_8_PROP" Text="Full Screen :" Order="1500"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_10" Type="Text" X="15" Y="180" Width="75" Height="11" Attributes="65539" Property="TEXT_10_PROP" Text="Open External App :" Order="1600"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_1" Type="Text" X="160" Y="60" Width="75" Height="11" Attributes="65539" Property="MEDIA_DT" Text="[MEDIA_DT]" Order="1700"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_2" Type="Text" X="160" Y="80" Width="75" Height="11" Attributes="65539" Property="LOCATION_DT" Text="[LOCATION_DT]" Order="1800"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_3" Type="Text" X="160" Y="100" Width="75" Height="11" Attributes="65539" Property="NOTIFICATIONS_DT" Text="[NOTIFICATIONS_DT]" Order="1900"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_5" Type="Text" X="160" Y="120" Width="75" Height="11" Attributes="65539" Property="MIDI_SYSEX_DT" Text="[MIDI_SYSEX_DT]" Order="2000"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_7" Type="Text" X="160" Y="140" Width="75" Height="11" Attributes="65539" Property="POINTER_LOCK_DT" Text="[POINTER_LOCK_DT]" Order="2100"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_9" Type="Text" X="160" Y="160" Width="75" Height="11" Attributes="65539" Property="FULL_SCREEN_DT" Text="[FULL_SCREEN_DT]" Order="2200"/>
<ROW Dialog_="VerifyPermissionsDlg" Control="Text_11" Type="Text" X="160" Y="180" Width="75" Height="11" Attributes="65539" Property="OPEN_EXTERNAL_DT" Text="[OPEN_EXTERNAL_DT]" Order="2300"/>
<ROW Dialog_="VerifyReadyDlg" Control="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Attributes="1048577" Text="[BannerBitmap]" Order="300" MsiKey="VerifyReadyDlg#BannerBitmap"/>
<ROW Dialog_="VerifyReadyDlg" Control="Logo" Type="Text" X="5" Y="228" Width="39" Height="12" Attributes="1" Text="Symphony" Order="500" TextLocId="Control.Text.VerifyReadyDlg#Logo" MsiKey="VerifyReadyDlg#Logo"/>
<ROW Dialog_="VerifyReadyDlg" Control="Text" Type="Text" X="25" Y="70" Width="320" Height="21" Attributes="196611" Text="Click &quot;Install&quot; to begin the installation. If you want to review or change any of your installation settings, click &quot;Back&quot;. Click &quot;Cancel&quot; to exit the wizard." Order="700" TextLocId="Control.Text.VerifyReadyDlg#Text" MsiKey="VerifyReadyDlg#Text"/>
@@ -502,18 +576,25 @@
<ROW Dialog_="SpawnWaitDialog" Control_="No" Event="EndDialog" Argument="Return" Condition="1" Ordering="100"/>
<ROW Dialog_="SpawnWaitDialog" Control_="Yes" Event="EndDialog" Argument="Return" Condition="1" Ordering="100"/>
<ROW Dialog_="VerifyDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="NewDialog" Argument="SelectPermissionsDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfRbDiskDlg" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST=&quot;P&quot; OR NOT PROMPTROLLBACKCOST)" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="EnableRollback" Argument="False" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST=&quot;D&quot;" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfDiskDlg" Condition="AI_INSTALL AND ( (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST=&quot;F&quot;) )" Ordering="4" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[AI_ButtonText_Next_Orig]" Argument="[ButtonText_Next]" Condition="AI_INSTALL" Ordering="0" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[ButtonText_Next]" Argument="[[AI_CommitButton]]" Condition="AI_INSTALL" Ordering="1" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[AI_Text_Next_Orig]" Argument="[Text_Next]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="TemplateDlgDialogInitializer" Event="[Text_Next]" Argument="[Text_Install]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Back" Event="[ButtonText_Next]" Argument="[AI_ButtonText_Next_Orig]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyDlg" Control_="Back" Event="[Text_Next]" Argument="[AI_Text_Next_Orig]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="FolderDlg" Control_="Next" Event="DoAction" Argument="PodUrlValidation" Condition="AI_INSTALL" Ordering="202"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Next" Event="NewDialog" Argument="VerifyPermissionsDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Back" Event="NewDialog" Argument="VerifyDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Cancel" Event="SpawnDialog" Argument="CancelDlg" Condition="1" Ordering="100"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Back" Event="NewDialog" Argument="SelectPermissionsDlg" Condition="AI_INSTALL" Ordering="1"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfRbDiskDlg" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST=&quot;P&quot; OR NOT PROMPTROLLBACKCOST)" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="EnableRollback" Argument="False" Condition="AI_INSTALL AND OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST=&quot;D&quot;" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Next" Event="SpawnDialog" Argument="OutOfDiskDlg" Condition="AI_INSTALL AND ( (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST=&quot;F&quot;) )" Ordering="4" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[AI_ButtonText_Next_Orig]" Argument="[ButtonText_Next]" Condition="AI_INSTALL" Ordering="0" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[ButtonText_Next]" Argument="[[AI_CommitButton]]" Condition="AI_INSTALL" Ordering="1" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[AI_Text_Next_Orig]" Argument="[Text_Next]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="VerifyPermissionsDlgDialogInitializer" Event="[Text_Next]" Argument="[Text_Install]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Back" Event="[ButtonText_Next]" Argument="[AI_ButtonText_Next_Orig]" Condition="AI_INSTALL" Ordering="2" Options="2"/>
<ROW Dialog_="VerifyPermissionsDlg" Control_="Back" Event="[Text_Next]" Argument="[AI_Text_Next_Orig]" Condition="AI_INSTALL" Ordering="3" Options="2"/>
<ROW Dialog_="SelectPermissionsDlg" Control_="Next" Event="DoAction" Argument="PodUrlValidation" Condition="AI_INSTALL" Ordering="2"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
<ROW Directory_="Symphony_Dir" Component_="Symphony" ManualDelete="false"/>
@@ -538,7 +619,7 @@
<ROW Action="AI_TxtUpdaterRollback" Type="11521" Source="TxtUpdater.dll" Target="OnTxtUpdaterRollback" WithoutSeq="true"/>
<ROW Action="KillParagon" Type="1" Source="aicustact.dll" Target="StopProcess" Options="1" AdditionalSeq="AI_DATA_SETTER_2"/>
<ROW Action="KillRenderer" Type="1" Source="aicustact.dll" Target="StopProcess" Options="1" AdditionalSeq="AI_DATA_SETTER"/>
<ROW Action="PodUrlValidation" Type="37" Target="Script Text" TargetUnformatted="// First, check if the protocol is part of the url, if not, prepend it&#13;&#10;var prefix1 = &quot;https://&quot;;&#13;&#10;var prefix2 = &quot;http://&quot;;&#13;&#10;if (Session.Property(&quot;POD_URL&quot;).substr(0, prefix1.length) !== prefix1 &amp;&amp; Session.Property(&quot;POD_URL&quot;).substr(0, prefix2.length) !== prefix2) {&#13;&#10; Session.Property(&quot;POD_URL&quot;) = prefix1 + Session.Property(&quot;POD_URL&quot;);&#13;&#10;}&#13;&#10;&#13;&#10;// Check if the entered pod url is valid&#13;&#10;var podUrlRE = /^(https:\/\/)(www.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,}(:[0-9]{1,5})?(\/[a-zA-Z0-9-_.+!*&apos;(),;/?:@=&amp;$]*)?$/;&#13;&#10;var podUrlTest = podUrlRE.test(Session.Property(&quot;POD_URL&quot;));&#13;&#10;if (!podUrlTest) {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;invalid&quot;;&#13;&#10;} else {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;valid&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// By default, we set all the values to false and change based on conditions&#13;&#10;Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;false&quot;; &#13;&#10;Session.Property(&quot;AUTO_START&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;false&quot;;&#13;&#10;&#13;&#10;// If always on top is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) &amp;&amp; Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;true&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If launch on startup is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) &amp;&amp; Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;true&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If minimise on close is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;AUTO_START_CB&quot;) &amp;&amp; Session.Property(&quot;AUTO_START_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;AUTO_START&quot;) = &quot;true&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If bring to front is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;BRING_TO_FRONT_CB&quot;) &amp;&amp; Session.Property(&quot;BRING_TO_FRONT_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;true&quot;;&#13;&#10;}" WithoutSeq="true"/>
<ROW Action="PodUrlValidation" Type="37" Target="Script Text" TargetUnformatted="// First, check if the protocol is part of the url, if not, prepend it&#13;&#10;var prefix1 = &quot;https://&quot;;&#13;&#10;var prefix2 = &quot;http://&quot;;&#13;&#10;if (Session.Property(&quot;POD_URL&quot;).substr(0, prefix1.length) !== prefix1 &amp;&amp; Session.Property(&quot;POD_URL&quot;).substr(0, prefix2.length) !== prefix2) {&#13;&#10; Session.Property(&quot;POD_URL&quot;) = prefix1 + Session.Property(&quot;POD_URL&quot;);&#13;&#10;}&#13;&#10;&#13;&#10;// Check if the entered pod url is valid&#13;&#10;var podUrlRE = /^(https:\/\/)(www.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,}(:[0-9]{1,5})?(\/[a-zA-Z0-9-_.+!*&apos;(),;/?:@=&amp;$]*)?$/;&#13;&#10;var podUrlTest = podUrlRE.test(Session.Property(&quot;POD_URL&quot;));&#13;&#10;if (!podUrlTest) {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;invalid&quot;;&#13;&#10;} else {&#13;&#10;&#9;Session.Property(&quot;INVALID_POD_URL&quot;) = &quot;valid&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// By default, we set all the values to false and change based on conditions&#13;&#10;Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;false&quot;; &#13;&#10;Session.Property(&quot;AUTO_START&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;false&quot;;&#13;&#10;&#13;&#10;// App options display text based on checkbox&#13;&#10;Session.Property(&quot;ALWAYS_ON_TOP_DT&quot;) = &quot;No&quot;; &#13;&#10;Session.Property(&quot;AUTO_START_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;MINIMIZE_ON_CLOSE_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;BRING_TO_FRONT_DT&quot;) = &quot;No&quot;;&#13;&#10;&#13;&#10;// Permission request properties&#13;&#10;Session.Property(&quot;MEDIA&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;LOCATION&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;NOTIFICATIONS&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;MIDI_SYSEX&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;POINTER_LOCK&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;FULL_SCREEN&quot;) = &quot;false&quot;;&#13;&#10;Session.Property(&quot;OPEN_EXTERNAL&quot;) = &quot;false&quot;;&#13;&#10;&#13;&#10;// Permission display text based on checkbox&#13;&#10;Session.Property(&quot;MEDIA_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;LOCATION_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;NOTIFICATIONS_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;MIDI_SYSEX_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;POINTER_LOCK_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;FULL_SCREEN_DT&quot;) = &quot;No&quot;;&#13;&#10;Session.Property(&quot;OPEN_EXTERNAL_DT&quot;) = &quot;No&quot;;&#13;&#10;&#13;&#10;// If always on top is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) &amp;&amp; Session.Property(&quot;ALWAYS_ON_TOP_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;ALWAYS_ON_TOP&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;ALWAYS_ON_TOP_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If launch on startup is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) &amp;&amp; Session.Property(&quot;MINIMIZE_ON_CLOSE_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;MINIMIZE_ON_CLOSE&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;MINIMIZE_ON_CLOSE_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If minimise on close is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;AUTO_START_CB&quot;) &amp;&amp; Session.Property(&quot;AUTO_START_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;AUTO_START&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;AUTO_START_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// If bring to front is checked in the checkbox, set the label value to true&#13;&#10;if (Session.Property(&quot;BRING_TO_FRONT_CB&quot;) &amp;&amp; Session.Property(&quot;BRING_TO_FRONT_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;BRING_TO_FRONT&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;BRING_TO_FRONT_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#10;&#13;&#10;// Permissions checkbox remains checked, set the label value to true&#13;&#10;&#13;&#10;if (Session.Property(&quot;MEDIA_CB&quot;) &amp;&amp; Session.Property(&quot;MEDIA_CB&quot;) === &quot;true&quot;)&#13;&#10;{&#13;&#10; Session.Property(&quot;MEDIA&quot;) = &quot;true&quot;;&#13;&#10; Session.Property(&quot;MEDIA_DT&quot;) = &quot;Yes&quot;;&#13;&#10;}&#13;&#1Line truncated
<ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[AI_UserProgramFiles][Manufacturer]\[ProductName]"/>
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
@@ -547,8 +628,10 @@
<ROW Action="UninstallPreviousVersions" Type="1" Source="aicustact.dll" Target="UninstallPreviousVersions" Options="1"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiDialogComponent">
<ROW Dialog="SelectPermissionsDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
<ROW Dialog="SpawnWaitDialog" HCentering="50" VCentering="50" Width="260" Height="85" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Yes" Control_Cancel="No"/>
<ROW Dialog="VerifyDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
<ROW Dialog="VerifyPermissionsDlg" HCentering="50" VCentering="50" Width="370" Height="270" Attributes="3" Title="[ProductName] [Setup]" Control_Default="Next" Control_Cancel="Cancel"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
<ROW Name="icon.exe" SourcePath="..\..\build\icon.ico" Index="0"/>
@@ -565,8 +648,8 @@
<ROW Action="AI_DATA_SETTER" Sequence="54"/>
<ROW Action="Symphony.exe" Condition="( NOT Installed ) AND ( MSIINSTALLPERUSER )" Sequence="5935"/>
<ROW Action="Symphony.exe_All_User" Condition="( NOT Installed ) AND ( ALLUSERS )" Sequence="5936"/>
<ROW Action="AI_TxtUpdaterInstall" Sequence="5101"/>
<ROW Action="AI_SETMIXINSTLOCATION" Sequence="748"/>
<ROW Action="AI_TxtUpdaterInstall" Sequence="5101"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
<ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
@@ -623,10 +706,17 @@
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.TxtUpdateComponent">
<ROW Name="Url" TxtUpdateSet="Symphony.config" FindPattern="&quot;url&quot;\s*:\s*&quot;.*&quot;" ReplacePattern="&quot;url&quot;: &quot;[POD_URL]&quot;" Options="19" Order="0" FileEncoding="-1"/>
<ROW Name="MinimizeOnClose" TxtUpdateSet="Symphony.config" FindPattern="&quot;minimizeOnClose&quot;\s*:\s*true," ReplacePattern="&quot;minimizeOnClose&quot; : [MINIMIZE_ON_CLOSE]," Options="19" Order="1" FileEncoding="-1"/>
<ROW Name="AlwaysOnTop" TxtUpdateSet="Symphony.config" FindPattern="&quot;alwaysOnTop&quot;\s*:\s*false" ReplacePattern="&quot;alwaysOnTop&quot; : [ALWAYS_ON_TOP]" Options="19" Order="2" FileEncoding="-1"/>
<ROW Name="LaunchOnStartup" TxtUpdateSet="Symphony.config" FindPattern="&quot;launchOnStartup&quot;\s*:\s*true," ReplacePattern="&quot;launchOnStartup&quot; : [AUTO_START]," Options="19" Order="3" FileEncoding="-1"/>
<ROW Name="BringToFront" TxtUpdateSet="Symphony.config" FindPattern="&quot;bringToFront&quot;\s*:\s*false," ReplacePattern="&quot;bringToFront&quot; : [BRING_TO_FRONT]," Options="19" Order="4" FileEncoding="-1"/>
<ROW Name="MinimizeOnClose" TxtUpdateSet="Symphony.config" FindPattern="&quot;minimizeOnClose&quot;\s*:\s*true," ReplacePattern="&quot;minimizeOnClose&quot; : [MINIMIZE_ON_CLOSE]," Options="19" Order="1" FileEncoding="-1"/>
<ROW Name="Notifications" TxtUpdateSet="Symphony.config" FindPattern="&quot;notifications&quot;\s*:\s*true," ReplacePattern="&quot;notifications&quot; : [NOTIFICATIONS]," Options="19" Order="7" FileEncoding="-1"/>
<ROW Name="Media" TxtUpdateSet="Symphony.config" FindPattern="&quot;media&quot;\s*:\s*true," ReplacePattern="&quot;media&quot; : [MEDIA]," Options="19" Order="5" FileEncoding="-1"/>
<ROW Name="PointerLock" TxtUpdateSet="Symphony.config" FindPattern="&quot;pointerLock&quot;\s*:\s*true," ReplacePattern="&quot;pointerLock&quot; : [POINTER_LOCK]," Options="19" Order="9" FileEncoding="-1"/>
<ROW Name="LaunchOnStartup" TxtUpdateSet="Symphony.config" FindPattern="&quot;launchOnStartup&quot;\s*:\s*true," ReplacePattern="&quot;launchOnStartup&quot; : [AUTO_START]," Options="19" Order="3" FileEncoding="-1"/>
<ROW Name="FullScreen" TxtUpdateSet="Symphony.config" FindPattern="&quot;fullscreen&quot;\s*:\s*true," ReplacePattern="&quot;fullscreen&quot; : [FULL_SCREEN]," Options="19" Order="10" FileEncoding="-1"/>
<ROW Name="OpenExternal" TxtUpdateSet="Symphony.config" FindPattern="&quot;openExternal&quot;\s*:\s*true" ReplacePattern="&quot;openExternal&quot; : [OPEN_EXTERNAL]" Options="19" Order="11" FileEncoding="-1"/>
<ROW Name="AlwaysOnTop" TxtUpdateSet="Symphony.config" FindPattern="&quot;alwaysOnTop&quot;\s*:\s*false" ReplacePattern="&quot;alwaysOnTop&quot; : [ALWAYS_ON_TOP]" Options="19" Order="2" FileEncoding="-1"/>
<ROW Name="MidiSysex" TxtUpdateSet="Symphony.config" FindPattern="&quot;midiSysex&quot;\s*:\s*true," ReplacePattern="&quot;midiSysex&quot; : [MIDI_SYSEX]," Options="19" Order="8" FileEncoding="-1"/>
<ROW Name="Location" TxtUpdateSet="Symphony.config" FindPattern="&quot;geolocation&quot;\s*:\s*true," ReplacePattern="&quot;geolocation&quot; : [LOCATION]," Options="19" Order="6" FileEncoding="-1"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.TxtUpdateSetComponent">
<ROW Key="Symphony.config" Component="am.pak" FileName="Symphony.config" Directory="config_Dir" Options="17"/>
+79 -6
View File
@@ -223,6 +223,8 @@ function doCreateMainWindow(initialUrl, initialBounds, isCustomTitleBar) {
}
});
});
handlePermissionRequests(mainWindow.webContents);
addWindowKey(key, mainWindow);
mainWindow.loadURL(url);
@@ -478,6 +480,8 @@ function doCreateMainWindow(initialUrl, initialBounds, isCustomTitleBar) {
sendChildWinBoundsChange.bind(null, browserWin));
browserWin.on('move', throttledBoundsChange);
browserWin.on('resize', throttledBoundsChange);
handlePermissionRequests(browserWin.webContents);
}
});
} else {
@@ -500,6 +504,77 @@ function doCreateMainWindow(initialUrl, initialBounds, isCustomTitleBar) {
});
});
});
// ELECTRON-323: Handle session permission requests
function handlePermissionRequests(webContents) {
let session = webContents.session;
getConfigField('permissions')
.then((permissions) => {
if (!permissions) {
log.send(logLevels.ERROR, 'permissions configuration is invalid, so, everything will be true by default!');
return;
}
session.setPermissionRequestHandler((sessionWebContents, permission, callback) => {
function handleSessionPermissions(userPermission, message, cb) {
log.send(logLevels.INFO, 'permission is -> ' + userPermission);
if (!userPermission) {
let fullMessage = `Your administrator has disabled ${message}. Please contact your admin for help.`;
electron.dialog.showErrorBox('Permission Denied!', fullMessage);
}
return cb(userPermission);
}
let PERMISSION_MEDIA = 'media';
let PERMISSION_LOCATION = 'geolocation';
let PERMISSION_NOTIFICATIONS = 'notifications';
let PERMISSION_MIDI_SYSEX = 'midiSysex';
let PERMISSION_POINTER_LOCK = 'pointerLock';
let PERMISSION_FULL_SCREEN = 'fullscreen';
let PERMISSION_OPEN_EXTERNAL = 'openExternal';
switch (permission) {
case PERMISSION_MEDIA:
return handleSessionPermissions(permissions.media, 'sharing your camera, microphone, and speakers', callback);
case PERMISSION_LOCATION:
return handleSessionPermissions(permissions.geolocation, 'sharing your location', callback);
case PERMISSION_NOTIFICATIONS:
return handleSessionPermissions(permissions.notifications, 'notifications', callback);
case PERMISSION_MIDI_SYSEX:
return handleSessionPermissions(permissions.midiSysex, 'MIDI Sysex', callback);
case PERMISSION_POINTER_LOCK:
return handleSessionPermissions(permissions.pointerLock, 'Pointer Lock', callback);
case PERMISSION_FULL_SCREEN:
return handleSessionPermissions(permissions.fullscreen, 'Full Screen', callback);
case PERMISSION_OPEN_EXTERNAL:
return handleSessionPermissions(permissions.openExternal, 'Opening External App', callback);
default:
return callback(false);
}
});
}).catch((error) => {
log.send(logLevels.ERROR, 'unable to get permissions configuration, so, everything will be true by default! ' + error);
})
}
}
@@ -753,12 +828,11 @@ function checkExternalDisplay(appBounds) {
const width = appBounds.width;
const height = appBounds.height;
const factor = 0.2;
const screen = electron.screen;
// Loops through all the available displays and
// verifies if the wrapper exists within the display bounds
// returns false if not exists otherwise true
return !!screen.getAllDisplays().find(({ bounds }) => {
return !!electron.screen.getAllDisplays().find(({ bounds }) => {
const leftMost = x + (width * factor);
const topMost = y + (height * factor);
@@ -779,9 +853,8 @@ function checkExternalDisplay(appBounds) {
* was removed and if the wrapper was contained within that bounds
*/
function repositionMainWindow() {
const screen = electron.screen;
const { workArea } = screen.getPrimaryDisplay();
const { workArea } = electron.screen.getPrimaryDisplay();
const bounds = workArea;
if (!bounds) {