Skip to content

Commit 79f04ec

Browse files
Zero Admin Privileges on Uninstall
1 parent 98b495b commit 79f04ec

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

docker/build/installers/VCell.install4j

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -366,15 +366,16 @@ return console.askOkCancel(message, true);
366366
<screen id="4" beanClass="com.install4j.runtime.beans.screens.InstallationDirectoryScreen" actionElevationType="none">
367367
<condition>!context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition>
368368
<preActivation>String pastInstallDir = (String)context.getVariable("sys.installationDir");
369-
String agnosticAppDir = (String)context.getVariable("sys.programFilesDir");
369+
String privilegedAppDir = (String)context.getVariable("sys.programFilesDir");
370370
String appName = "VCell_" + context.getCompilerVariable("Site");
371371
boolean windowsOrMac = Util.isWindows() || Util.isMacOS();
372-
if (pastInstallDir.contains(agnosticAppDir) &amp;&amp; windowsOrMac){
372+
if (pastInstallDir.contains(privilegedAppDir) &amp;&amp; windowsOrMac){
373373
String homeDir = (String)context.getVariable("sys.userHome");
374374
if (Util.isMacOS()){
375-
context.setInstallationDirectory(new File(homeDir + "/Application/" + appName));
375+
context.setInstallationDirectory(new File(homeDir + "/Applications/" + appName));
376376
} else{
377-
context.setInstallationDirectory(new File(homeDir + "\\AppData\\Local\\Programs\\" + appName));
377+
String localAppDataDir = (String)context.getVariable("sys.localAppdataDir");
378+
context.setInstallationDirectory(new File(localAppDataDir + "\\Programs\\" + appName));
378379
}
379380
}
380381
</preActivation>
@@ -626,8 +627,9 @@ return bngperlfile.exists();
626627
<condition>import java.io.File;
627628
File userAgnostic = new File((String)context.getVariable("sys.programFilesDir"));
628629
String appName = "VCell_" + context.getCompilerVariable("Site");
629-
List&lt;File&gt; installed = Arrays.stream(userAgnostic.listFiles()).filter(f -&gt; f.toString().contains(appName)).toList();
630-
return installed.size() == 1;
630+
List&lt;File&gt; vcellRelatedAdminDirs = Arrays.stream(userAgnostic.listFiles()).filter(f -&gt; f.toString().contains(appName)).toList();
631+
boolean existsAdminInstall = vcellRelatedAdminDirs.size() == 1;
632+
return existsAdminInstall;
631633
</condition>
632634
<actions>
633635
<action id="3106" beanClass="com.install4j.runtime.beans.actions.misc.RequestPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0">
@@ -769,7 +771,16 @@ return true;
769771
<screen id="14" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
770772
<actions>
771773
<action id="20" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" />
772-
<action id="21" beanClass="com.install4j.runtime.beans.actions.misc.RequireInstallerPrivilegesAction" actionElevationType="none" />
774+
<action id="21" beanClass="com.install4j.runtime.beans.actions.misc.RequireInstallerPrivilegesAction" actionElevationType="none">
775+
<condition>import java.io.File;
776+
File userAgnostic = new File((String)context.getVariable("sys.programFilesDir"));
777+
String appName = "VCell_" + context.getCompilerVariable("Site");
778+
List&lt;File&gt; vcellRelatedAdminDirs = Arrays.stream(userAgnostic.listFiles()).filter(f -&gt; f.toString().contains(appName)).toList();
779+
boolean existsAdminInstall = vcellRelatedAdminDirs.size() == 1;
780+
return existsAdminInstall;
781+
782+
</condition>
783+
</action>
773784
</actions>
774785
</screen>
775786
</startup>
@@ -797,7 +808,7 @@ return console.askYesNo(message, true);
797808
</screen>
798809
<screen id="16" beanClass="com.install4j.runtime.beans.screens.UninstallationScreen">
799810
<actions>
800-
<action id="17" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" actionElevationType="elevated" />
811+
<action id="17" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" />
801812
</actions>
802813
<formComponents>
803814
<formComponent id="2260" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent">

0 commit comments

Comments
 (0)