New macOS App (#4345)
This commit is contained in:
parent
b4dab67f83
commit
089da2a24a
@ -382,6 +382,9 @@ darwin:
|
||||
- rm -rf parity.md5
|
||||
- md5sum target/release/parity > parity.md5
|
||||
- export SHA3=$(target/release/parity tools hash target/release/parity)
|
||||
- cd mac
|
||||
- xcodebuild -configuration Release
|
||||
- cd ..
|
||||
- packagesbuild -v mac/Parity.pkgproj
|
||||
- export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n")
|
||||
- mv target/release/Parity\ Ethereum.pkg "parity-"$VER"-osx-installer-EXPERIMENTAL.pkg"
|
||||
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>CFBundleIconFiles</key><string>Parity.png</string><key>CFBundlePackageType</key><string>APPL</string><key>CFBundleInfoDictionaryVersion</key><string>6.0</string>
|
||||
|
||||
<key>CFBundleName</key> <string>Parity Ethereum</string>
|
||||
<key>CFBundleExecutable</key> <string>go.sh</string>
|
||||
<key>CFBundleIdentifier</key> <string>io.parity.ethereum</string>
|
||||
|
||||
<key>CFBundleVersion</key> <string>1.4.0</string>
|
||||
<key>CFBundleGetInfoString</key> <string>Parity 1.4.0</string>
|
||||
<key>CFBundleShortVersionString</key> <string>1.4.0</string>
|
||||
|
||||
</dict></plist>
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
open http://127.0.0.1:8080/
|
318
mac/Parity Ethereum.xcodeproj/project.pbxproj
Normal file
318
mac/Parity Ethereum.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,318 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A7A475D1E3D2CDD0093D1AB /* parity in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0A7A475C1E3D2CDD0093D1AB /* parity */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
0ACF9AC21E30FAB600D5C935 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ACF9AC11E30FAB600D5C935 /* AppDelegate.swift */; };
|
||||
0ACF9AC41E30FAB600D5C935 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0ACF9AC31E30FAB600D5C935 /* Assets.xcassets */; };
|
||||
0ACF9AC71E30FAB600D5C935 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0ACF9AC51E30FAB600D5C935 /* MainMenu.xib */; };
|
||||
0AE564F11E3CE42C00BD01F7 /* GetBSDProcessList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */; };
|
||||
0AED4DA01E3E22F800BF87C0 /* ethstore in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AED4D9F1E3E22F800BF87C0 /* ethstore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
0A7A475B1E3D2C800093D1AB /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 6;
|
||||
files = (
|
||||
0AED4DA01E3E22F800BF87C0 /* ethstore in CopyFiles */,
|
||||
0A7A475D1E3D2CDD0093D1AB /* parity in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0A7A475C1E3D2CDD0093D1AB /* parity */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = parity; path = ../target/release/parity; sourceTree = "<group>"; };
|
||||
0ACF9ABE1E30FAB600D5C935 /* Parity Ethereum.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Parity Ethereum.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0ACF9AC11E30FAB600D5C935 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
0ACF9AC31E30FAB600D5C935 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
0ACF9AC61E30FAB600D5C935 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
0ACF9AC81E30FAB600D5C935 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetBSDProcessList.swift; sourceTree = "<group>"; };
|
||||
0AED4D9F1E3E22F800BF87C0 /* ethstore */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = ethstore; path = ../target/release/deps/ethstore; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0ACF9ABB1E30FAB600D5C935 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0ACF9AB51E30FAB600D5C935 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0AED4D9F1E3E22F800BF87C0 /* ethstore */,
|
||||
0A7A475C1E3D2CDD0093D1AB /* parity */,
|
||||
0ACF9AC01E30FAB600D5C935 /* Parity Ethereum */,
|
||||
0ACF9ABF1E30FAB600D5C935 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0ACF9ABF1E30FAB600D5C935 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0ACF9ABE1E30FAB600D5C935 /* Parity Ethereum.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0ACF9AC01E30FAB600D5C935 /* Parity Ethereum */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0ACF9AC11E30FAB600D5C935 /* AppDelegate.swift */,
|
||||
0ACF9AC31E30FAB600D5C935 /* Assets.xcassets */,
|
||||
0ACF9AC51E30FAB600D5C935 /* MainMenu.xib */,
|
||||
0ACF9AC81E30FAB600D5C935 /* Info.plist */,
|
||||
0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */,
|
||||
);
|
||||
name = "Parity Ethereum";
|
||||
path = Parity;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
0ACF9ABD1E30FAB600D5C935 /* Parity Ethereum */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0ACF9ACB1E30FAB600D5C935 /* Build configuration list for PBXNativeTarget "Parity Ethereum" */;
|
||||
buildPhases = (
|
||||
0ACF9ABA1E30FAB600D5C935 /* Sources */,
|
||||
0ACF9ABB1E30FAB600D5C935 /* Frameworks */,
|
||||
0ACF9ABC1E30FAB600D5C935 /* Resources */,
|
||||
0A7A475B1E3D2C800093D1AB /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Parity Ethereum";
|
||||
productName = Parity;
|
||||
productReference = 0ACF9ABE1E30FAB600D5C935 /* Parity Ethereum.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0ACF9AB61E30FAB600D5C935 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0800;
|
||||
LastUpgradeCheck = 0800;
|
||||
ORGANIZATIONNAME = "Parity Technologies";
|
||||
TargetAttributes = {
|
||||
0ACF9ABD1E30FAB600D5C935 = {
|
||||
CreatedOnToolsVersion = 8.0;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 0ACF9AB91E30FAB600D5C935 /* Build configuration list for PBXProject "Parity Ethereum" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 0ACF9AB51E30FAB600D5C935;
|
||||
productRefGroup = 0ACF9ABF1E30FAB600D5C935 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
0ACF9ABD1E30FAB600D5C935 /* Parity Ethereum */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
0ACF9ABC1E30FAB600D5C935 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0ACF9AC41E30FAB600D5C935 /* Assets.xcassets in Resources */,
|
||||
0ACF9AC71E30FAB600D5C935 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
0ACF9ABA1E30FAB600D5C935 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0AE564F11E3CE42C00BD01F7 /* GetBSDProcessList.swift in Sources */,
|
||||
0ACF9AC21E30FAB600D5C935 /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
0ACF9AC51E30FAB600D5C935 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0ACF9AC61E30FAB600D5C935 /* Base */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
0ACF9AC91E30FAB600D5C935 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVES = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.12;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0ACF9ACA1E30FAB600D5C935 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVES = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.12;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = macosx;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0ACF9ACC1E30FAB600D5C935 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
INFOPLIST_FILE = Parity/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = io.parity.ethereum;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0ACF9ACD1E30FAB600D5C935 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
INFOPLIST_FILE = Parity/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = io.parity.ethereum;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
0ACF9AB91E30FAB600D5C935 /* Build configuration list for PBXProject "Parity Ethereum" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0ACF9AC91E30FAB600D5C935 /* Debug */,
|
||||
0ACF9ACA1E30FAB600D5C935 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0ACF9ACB1E30FAB600D5C935 /* Build configuration list for PBXNativeTarget "Parity Ethereum" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0ACF9ACC1E30FAB600D5C935 /* Debug */,
|
||||
0ACF9ACD1E30FAB600D5C935 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0ACF9AB61E30FAB600D5C935 /* Project object */;
|
||||
}
|
7
mac/Parity Ethereum.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
mac/Parity Ethereum.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:/Users/arkady/src/rust/parity/mac/Parity/Parity Ethereum.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -22,7 +22,7 @@
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>Parity Ethereum.app</string>
|
||||
<string>build/release/Parity Ethereum.app</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
@ -416,122 +416,6 @@
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>../target/release/deps/ethstore</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>bin</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>../target/release/parity</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>uninstall-parity.sh</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>libexec</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>local</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>usr</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
@ -572,7 +456,7 @@
|
||||
<key>CONCLUSION_ACTION</key>
|
||||
<integer>0</integer>
|
||||
<key>IDENTIFIER</key>
|
||||
<string>io.parity.pkg.parity-ethereum</string>
|
||||
<string>io.parity.ethereum</string>
|
||||
<key>NAME</key>
|
||||
<string>Parity</string>
|
||||
<key>OVERWRITE_PERMISSIONS</key>
|
||||
|
228
mac/Parity/AppDelegate.swift
Normal file
228
mac/Parity/AppDelegate.swift
Normal file
@ -0,0 +1,228 @@
|
||||
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity.
|
||||
|
||||
// Parity is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import Cocoa
|
||||
|
||||
@NSApplicationMain
|
||||
@available(macOS, deprecated: 10.11)
|
||||
|
||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
@IBOutlet weak var statusMenu: NSMenu!
|
||||
@IBOutlet weak var startAtLogonMenuItem: NSMenuItem!
|
||||
|
||||
let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
|
||||
var parityPid: Int32? = nil
|
||||
var commandLine: [String] = []
|
||||
let defaultConfig = "[network]\nwarp = true"
|
||||
let defaultDefaults = "{\"fat_db\":false,\"mode\":\"passive\",\"mode.alarm\":3600,\"mode.timeout\":300,\"pruning\":\"fast\",\"tracing\":false}"
|
||||
|
||||
func menuAppPath() -> String {
|
||||
return Bundle.main.executablePath!
|
||||
}
|
||||
|
||||
func parityPath() -> String {
|
||||
return Bundle.main.bundlePath + "/Contents/MacOS/parity"
|
||||
}
|
||||
|
||||
func isAlreadyRunning() -> Bool {
|
||||
return NSRunningApplication.runningApplications(withBundleIdentifier: Bundle.main.bundleIdentifier!).count > 1
|
||||
|
||||
}
|
||||
|
||||
func isParityRunning() -> Bool {
|
||||
if let pid = self.parityPid {
|
||||
return kill(pid, 0) == 0
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func killParity() {
|
||||
if let pid = self.parityPid {
|
||||
kill(pid, SIGINT)
|
||||
}
|
||||
}
|
||||
|
||||
func openUI() {
|
||||
let parity = Process()
|
||||
parity.launchPath = self.parityPath()
|
||||
parity.arguments = self.commandLine
|
||||
parity.arguments!.append("ui")
|
||||
parity.launch()
|
||||
}
|
||||
|
||||
func writeConfigFiles() {
|
||||
let basePath = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first?
|
||||
.appendingPathComponent(Bundle.main.bundleIdentifier!, isDirectory: true)
|
||||
|
||||
if FileManager.default.fileExists(atPath: basePath!.path) {
|
||||
return
|
||||
}
|
||||
|
||||
do {
|
||||
let defaultsFileDir = basePath?.appendingPathComponent("chains").appendingPathComponent("ethereum")
|
||||
let defaultsFile = defaultsFileDir?.appendingPathComponent("user_defaults")
|
||||
|
||||
try FileManager.default.createDirectory(atPath: (defaultsFileDir?.path)!, withIntermediateDirectories: true, attributes: nil)
|
||||
if !FileManager.default.fileExists(atPath: defaultsFile!.path) {
|
||||
try defaultDefaults.write(to: defaultsFile!, atomically: false, encoding: String.Encoding.utf8)
|
||||
}
|
||||
|
||||
let configFile = basePath?.appendingPathComponent("config.toml")
|
||||
if !FileManager.default.fileExists(atPath: configFile!.path) {
|
||||
try defaultConfig.write(to: configFile!, atomically: false, encoding: String.Encoding.utf8)
|
||||
}
|
||||
}
|
||||
catch {}
|
||||
}
|
||||
|
||||
func autostartEnabled() -> Bool {
|
||||
return itemReferencesInLoginItems().existingReference != nil
|
||||
}
|
||||
|
||||
func itemReferencesInLoginItems() -> (existingReference: LSSharedFileListItem?, lastReference: LSSharedFileListItem?) {
|
||||
let itemUrl: UnsafeMutablePointer<Unmanaged<CFURL>?> = UnsafeMutablePointer<Unmanaged<CFURL>?>.allocate(capacity: 1)
|
||||
if let appUrl: NSURL = NSURL.fileURL(withPath: Bundle.main.bundlePath) as NSURL? {
|
||||
let loginItemsRef = LSSharedFileListCreate(
|
||||
nil,
|
||||
kLSSharedFileListSessionLoginItems.takeRetainedValue(),
|
||||
nil
|
||||
).takeRetainedValue() as LSSharedFileList?
|
||||
if loginItemsRef != nil {
|
||||
let loginItems: NSArray = LSSharedFileListCopySnapshot(loginItemsRef, nil).takeRetainedValue() as NSArray
|
||||
if(loginItems.count > 0)
|
||||
{
|
||||
let lastItemRef: LSSharedFileListItem = loginItems.lastObject as! LSSharedFileListItem
|
||||
for i in 0 ..< loginItems.count {
|
||||
let currentItemRef: LSSharedFileListItem = loginItems.object(at: i) as! LSSharedFileListItem
|
||||
if LSSharedFileListItemResolve(currentItemRef, 0, itemUrl, nil) == noErr {
|
||||
if let urlRef: NSURL = itemUrl.pointee?.takeRetainedValue() {
|
||||
if urlRef.isEqual(appUrl) {
|
||||
return (currentItemRef, lastItemRef)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//The application was not found in the startup list
|
||||
return (nil, lastItemRef)
|
||||
}
|
||||
else
|
||||
{
|
||||
let addAtStart: LSSharedFileListItem = kLSSharedFileListItemBeforeFirst.takeRetainedValue()
|
||||
return(nil, addAtStart)
|
||||
}
|
||||
}
|
||||
}
|
||||
return (nil, nil)
|
||||
}
|
||||
|
||||
func toggleLaunchAtStartup() {
|
||||
let itemReferences = itemReferencesInLoginItems()
|
||||
let shouldBeToggled = (itemReferences.existingReference == nil)
|
||||
let loginItemsRef = LSSharedFileListCreate(
|
||||
nil,
|
||||
kLSSharedFileListSessionLoginItems.takeRetainedValue(),
|
||||
nil
|
||||
).takeRetainedValue() as LSSharedFileList?
|
||||
if loginItemsRef != nil {
|
||||
if shouldBeToggled {
|
||||
if let appUrl : CFURL = NSURL.fileURL(withPath: Bundle.main.bundlePath) as CFURL? {
|
||||
LSSharedFileListInsertItemURL(
|
||||
loginItemsRef,
|
||||
itemReferences.lastReference,
|
||||
nil,
|
||||
nil,
|
||||
appUrl,
|
||||
nil,
|
||||
nil
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if let itemRef = itemReferences.existingReference {
|
||||
LSSharedFileListItemRemove(loginItemsRef,itemRef)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func launchParity() {
|
||||
self.commandLine = CommandLine.arguments.dropFirst().filter({ $0 != "ui"})
|
||||
|
||||
let processes = GetBSDProcessList()!
|
||||
let parityProcess = processes.index(where: {
|
||||
var name = $0.kp_proc.p_comm
|
||||
let str = withUnsafePointer(to: &name) {
|
||||
$0.withMemoryRebound(to: UInt8.self, capacity: MemoryLayout.size(ofValue: name)) {
|
||||
String(cString: $0)
|
||||
}
|
||||
}
|
||||
return str == "parity"
|
||||
})
|
||||
|
||||
if parityProcess == nil {
|
||||
let parity = Process()
|
||||
let p = self.parityPath()
|
||||
parity.launchPath = p//self.parityPath()
|
||||
parity.arguments = self.commandLine
|
||||
parity.launch()
|
||||
self.parityPid = parity.processIdentifier
|
||||
} else {
|
||||
self.parityPid = processes[parityProcess!].kp_proc.p_pid
|
||||
}
|
||||
}
|
||||
|
||||
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
||||
if self.isAlreadyRunning() {
|
||||
openUI()
|
||||
NSApplication.shared().terminate(self)
|
||||
return
|
||||
}
|
||||
|
||||
self.writeConfigFiles()
|
||||
self.launchParity()
|
||||
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: {_ in
|
||||
if !self.isParityRunning() {
|
||||
NSApplication.shared().terminate(self)
|
||||
}
|
||||
})
|
||||
|
||||
let icon = NSImage(named: "statusIcon")
|
||||
icon?.isTemplate = true // best for dark mode
|
||||
statusItem.image = icon
|
||||
statusItem.menu = statusMenu
|
||||
}
|
||||
|
||||
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
|
||||
if menuItem == self.startAtLogonMenuItem! {
|
||||
menuItem.state = self.autostartEnabled() ? NSOnState : NSOffState
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@IBAction func quitClicked(_ sender: NSMenuItem) {
|
||||
self.killParity()
|
||||
NSApplication.shared().terminate(self)
|
||||
}
|
||||
|
||||
@IBAction func openClicked(_ sender: NSMenuItem) {
|
||||
self.openUI()
|
||||
}
|
||||
|
||||
@IBAction func startAtLogonClicked(_ sender: NSMenuItem) {
|
||||
self.toggleLaunchAtStartup()
|
||||
}
|
||||
|
||||
}
|
||||
|
59
mac/Parity/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
59
mac/Parity/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "512x512",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Parity.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "512x512",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
6
mac/Parity/Assets.xcassets/Contents.json
Normal file
6
mac/Parity/Assets.xcassets/Contents.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
23
mac/Parity/Assets.xcassets/statusIcon.imageset/Contents.json
vendored
Normal file
23
mac/Parity/Assets.xcassets/statusIcon.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Parity-1.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Parity.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Parity-2.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png
vendored
Normal file
BIN
mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 372 B |
BIN
mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png
vendored
Normal file
BIN
mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png
vendored
Normal file
BIN
mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 707 B |
48
mac/Parity/Base.lproj/MainMenu.xib
Normal file
48
mac/Parity/Base.lproj/MainMenu.xib
Normal file
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Parity_Ethereum" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="startAtLogonMenuItem" destination="D3f-yi-gRo" id="HSu-4B-kgr"/>
|
||||
<outlet property="statusMenu" destination="Pmu-69-HGa" id="Lkb-oO-9Lu"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<menu id="Pmu-69-HGa">
|
||||
<items>
|
||||
<menuItem title="Open Parity" id="ZzF-PB-QOY">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="openClicked:" target="Voe-Tx-rLC" id="xHx-QA-a4a"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="3Dz-l5-VnW"/>
|
||||
<menuItem title="Start at Logon" id="D3f-yi-gRo">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="startAtLogonClicked:" target="Voe-Tx-rLC" id="7ag-J2-wli"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Yrb-Um-Q67"/>
|
||||
<menuItem title="Quit" id="NnD-AH-MH4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="quitClicked:" target="Voe-Tx-rLC" id="vl6-du-PVU"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<point key="canvasLocation" x="138.5" y="165.5"/>
|
||||
</menu>
|
||||
</objects>
|
||||
</document>
|
59
mac/Parity/GetBSDProcessList.swift
Normal file
59
mac/Parity/GetBSDProcessList.swift
Normal file
@ -0,0 +1,59 @@
|
||||
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||
// This file is part of Parity.
|
||||
|
||||
// Parity is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// Parity is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
// Based on https://github.com/soh335/GetBSDProcessList
|
||||
|
||||
import Foundation
|
||||
import Darwin
|
||||
|
||||
public func GetBSDProcessList() -> ([kinfo_proc]?) {
|
||||
|
||||
var done = false
|
||||
var result: [kinfo_proc]?
|
||||
var err: Int32
|
||||
|
||||
repeat {
|
||||
let name = [CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0];
|
||||
let namePointer = name.withUnsafeBufferPointer { UnsafeMutablePointer<Int32>(mutating: $0.baseAddress) }
|
||||
var length: Int = 0
|
||||
|
||||
err = sysctl(namePointer, u_int(name.count), nil, &length, nil, 0)
|
||||
if err == -1 {
|
||||
err = errno
|
||||
}
|
||||
|
||||
if err == 0 {
|
||||
let count = length / MemoryLayout<kinfo_proc>.stride
|
||||
result = [kinfo_proc](repeating: kinfo_proc(), count: count)
|
||||
err = result!.withUnsafeMutableBufferPointer({ ( p: inout UnsafeMutableBufferPointer<kinfo_proc>) -> Int32 in
|
||||
return sysctl(namePointer, u_int(name.count), p.baseAddress, &length, nil, 0)
|
||||
})
|
||||
switch err {
|
||||
case 0:
|
||||
done = true
|
||||
case -1:
|
||||
err = errno
|
||||
case ENOMEM:
|
||||
err = 0
|
||||
default:
|
||||
fatalError()
|
||||
}
|
||||
}
|
||||
} while err == 0 && !done
|
||||
|
||||
return result
|
||||
}
|
36
mac/Parity/Info.plist
Normal file
36
mac/Parity/Info.plist
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.6</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.finance</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2017 Parity Technologies. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
@ -5,16 +5,6 @@ Welcome to Parity Wallet, your all-in-one Ethereum node and wallet.
|
||||
|
||||
WARNING: This installer is **EXPERIMENTAL**. Use it at your own risk.
|
||||
|
||||
If you continue, Parity will be installed as a system service. You will be able to use the Parity Wallet through your browser by following the shortcut in the Launchpad or navigating to http://localhost:8080/ in your browser.
|
||||
|
||||
To temporarily disable Parity Wallet (and stop Parity) use:
|
||||
|
||||
launchctl stop io.parity.ethereum
|
||||
|
||||
|
||||
To completely uninstall Parity Wallet use:
|
||||
|
||||
sudo /usr/local/libexec/uninstall-parity.sh
|
||||
|
||||
If you continue, Parity will be installed as a user service. You will be able to use the Parity Wallet through your browser by using the menu bar icon, following the shortcut in the Launchpad or navigating to http://localhost:8080/ in your browser.
|
||||
|
||||
Parity is distributed under the terms of the GPL.
|
||||
|
@ -1,37 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p $HOME/Library/LaunchAgents
|
||||
cat > $HOME/Library/LaunchAgents/io.parity.ethereum.plist <<EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>io.parity.ethereum</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>/usr/local/libexec/parity</string>
|
||||
<string>--warp</string>
|
||||
</array>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>StandardOutPath</key>
|
||||
<string>$HOME/.parity/log.out</string>
|
||||
<key>StandardErrorPath</key>
|
||||
<string>$HOME/.parity/log.err</string>
|
||||
</dict>
|
||||
</plist>
|
||||
EOF
|
||||
|
||||
mkdir -p $HOME/.parity/906a34e69aec8c0d
|
||||
echo -n '{"fat_db":false,"mode":"passive","mode.alarm":3600,"mode.timeout":300,"pruning":"fast","tracing":false}' > $HOME/.parity/906a34e69aec8c0d/user_defaults
|
||||
|
||||
chown -R $USER $HOME/.parity $HOME/Library/LaunchAgents $HOME/Library/LaunchAgents/io.parity.ethereum.plist
|
||||
|
||||
su $USER -c "launchctl load $HOME/Library/LaunchAgents/io.parity.ethereum.plist"
|
||||
# uninstall any ancient version
|
||||
test -f /usr/local/libexec/uninstall-parity.sh && /usr/local/libexec/uninstall-parity.sh || true
|
||||
killall -9 parity && sleep 5
|
||||
su $USER -c "open /Applications/Parity\ Ethereum.app"
|
||||
sleep 5
|
||||
|
||||
su $USER -c "open http://127.0.0.1:8080/"
|
||||
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user