/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.launcher;
import com.install4j.api.actions.InstallAction;
import com.install4j.api.context.Context;
import com.install4j.api.context.InstallerContext;
import com.install4j.api.context.UserCanceledException;
import com.install4j.api.windows.RegistryRoot;
import com.install4j.api.windows.WinRegistry;
import java.io.File;
/**
* The installer class is used by the Install4j Installer to setup registry entries
* during the setup process.
*/
public class Installer implements InstallAction {
public int getPercentOfTotalInstallation() {
return 0;
}
public void init(Context context) {
}
public boolean install(InstallerContext installerContext) throws UserCanceledException {
final String osName = System.getProperty("os.name").toLowerCase();
boolean isWindows = osName.startsWith("windows");
if (!isWindows) {
return true;
}
final File sparkDirectory;
String sparkPath = "";
try {
sparkDirectory = new File(installerContext.getInstallationDirectory(), "Spark.exe");
sparkPath = sparkDirectory.getCanonicalPath();
}
catch (Exception e) {
e.printStackTrace();
}
if (sparkPath != null && sparkPath.length() > 0) {
// Add Spark to startup
addSparkToStartup(sparkPath);
// Add Spark XMPP:URI mapping
setURI(sparkPath);
}
return true;
}
public void rollback(InstallerContext installerContext) {
WinRegistry.deleteValue(RegistryRoot.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Spark");
}
/**
* Adds Spark to the users registry.
*
* @param sparkPath the canonical path to spark.
*/
public void addSparkToStartup(String sparkPath) {
try {
WinRegistry.setValue(RegistryRoot.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Spark", sparkPath);
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* Adds Spark to the users registry to allow for XMPP URI mapping.
*
* @param path the installation directory of spark.
*/
private void setURI(String path) {
boolean exists = WinRegistry.keyExists(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp");
if (exists) {
}
// JOptionPane.showConfirmDialog(null, "Another application is currently registered to handle XMPP instant messaging. Make Spark the default XMPP instant messaging client?", "Confirmation", }
WinRegistry.deleteKey(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp", true);
WinRegistry.createKey(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp");
WinRegistry.setValue(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp", "", "URL:XMPP Address");
WinRegistry.setValue(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp", "URL Protocol", "");
WinRegistry.createKey(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp\\shell\\open\\command");
WinRegistry.setValue(RegistryRoot.HKEY_CLASSES_ROOT, "xmpp\\shell\\open\\command", "", path + " %1");
}
}