Browse Source

sdk installer: fix permissions issues on JRE and Blender executables

Kirill Vainer 10 years ago
parent
commit
3033a677a0

+ 17 - 0
nbi/stub/ext/components/products/blender/src/org/mycompany/ConfigurationLogic.java

@@ -1,8 +1,11 @@
 package org.mycompany;
 package org.mycompany;
 
 
+import java.io.File;
 import java.util.List;
 import java.util.List;
 import org.netbeans.installer.product.Registry;
 import org.netbeans.installer.product.Registry;
+import org.netbeans.installer.product.components.Product;
 import org.netbeans.installer.product.components.ProductConfigurationLogic;
 import org.netbeans.installer.product.components.ProductConfigurationLogic;
+import org.netbeans.installer.utils.LogManager;
 import org.netbeans.installer.utils.helper.RemovalMode;
 import org.netbeans.installer.utils.helper.RemovalMode;
 import org.netbeans.installer.utils.exceptions.InitializationException;
 import org.netbeans.installer.utils.exceptions.InitializationException;
 import org.netbeans.installer.utils.exceptions.InstallationException;
 import org.netbeans.installer.utils.exceptions.InstallationException;
@@ -35,6 +38,20 @@ public class ConfigurationLogic extends ProductConfigurationLogic {
 
 
     @Override
     @Override
     public void install(Progress progress) throws InstallationException {
     public void install(Progress progress) throws InstallationException {
+        final Product product = getProduct();
+        final File installLocation = product.getInstallationLocation();
+        LogManager.log("Setting Blender files as executable");
+        setExecutableFile(installLocation, "blender");
+        setExecutableFile(installLocation, "blenderplayer");
+        setExecutableFile(installLocation, "blender-softwaregl");
+    }
+    private static void setExecutableFile(File parent, String path) {
+        File binFile = new File(parent, path);
+        try {
+            binFile.setExecutable(true, false);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
     }
     }
 
 
     @Override
     @Override

+ 27 - 6
nbi/stub/ext/components/products/helloworld/src/org/mycompany/ConfigurationLogic.java

@@ -198,16 +198,37 @@ public class ConfigurationLogic extends ProductConfigurationLogic {
                 throw new InstallationException("Cannot copy JDK",e);
                 throw new InstallationException("Cannot copy JDK",e);
             }
             }
             // set permissions:
             // set permissions:
-            File binDir = new File(target, "bin");
-            for (File file : binDir.listFiles()) {
-            try {
-                file.setExecutable(true);
-            } catch (Exception ex) { ex.printStackTrace(); }
-            }
+            // ADDED BY KIRILL: force correct permissions for JDK files
+            LogManager.log("Setting JDK files as executable");
+            setExecutableContents(target, "bin");
+            setExecutableContents(target, "db/bin");
+            setExecutableContents(target, "jre/bin");
+            setExecutableFile(target, "lib/jexec");
+            setExecutableFile(target, "lib/amd64/libjawt.so");
+            setExecutableFile(target, "lib/amd64/jli/libjli.so");
+            setExecutableFile(target, "lib/visualvm/platform/lib/nbexec");
             // to add uninstaller logic:
             // to add uninstaller logic:
             SystemUtils.getNativeUtils().addUninstallerJVM(new LauncherResource(false, target));
             SystemUtils.getNativeUtils().addUninstallerJVM(new LauncherResource(false, target));
         }
         }
     }
     }
+    private static void setExecutableContents(File parent, String path) {
+        File binDir = new File(parent, path);
+        for (File file : binDir.listFiles()) {
+            try {
+                file.setExecutable(true, false);
+            } catch (Exception ex) {
+                ex.printStackTrace();
+            }
+        }
+    }
+    private static void setExecutableFile(File parent, String path) {
+        File binFile = new File(parent, path);
+        try {
+            binFile.setExecutable(true, false);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
 
 
     @Override
     @Override
     public void uninstall(Progress progress) throws UninstallationException {
     public void uninstall(Progress progress) throws UninstallationException {