mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-165217 Make IntelliJ IDEA and all IntelliJ-based products run in x64 mode for Windows
Build scripts and installation: 1. rename bundled jre folder to jre64. 2. build new artifact jre-for-*.tar.gz with jre x86 3. not build jre64-for-*.tar.gz anymore 4. download archive with jre x86 during installation (optional)
This commit is contained in:
+17
-17
@@ -335,13 +335,13 @@ Function ConfirmDesktopShortcut
|
||||
!insertmacro INSTALLOPTIONS_WRITE "Desktop.ini" "Field 3" "Text" $R1
|
||||
${EndIf}
|
||||
${If} ${RunningX64}
|
||||
; if 64-bit Win OS and jre64 for the build is available then add checkbox to Installation Options dialog
|
||||
StrCmp "${LINK_TO_JRE64}" "null" customPreActions 0
|
||||
inetc::head /SILENT /TOSTACK ${LINK_TO_JRE64} "" /END
|
||||
; if jre x86 for the build is available then add checkbox to Installation Options dialog
|
||||
StrCmp "${LINK_TO_JRE}" "null" customPreActions 0
|
||||
inetc::head /SILENT /TOSTACK ${LINK_TO_JRE} "" /END
|
||||
Pop $0
|
||||
${If} $0 == "OK"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "Desktop.ini" "Field 4" "Type" "checkbox"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "Desktop.ini" "Field 4" "Text" "Download and install 64-bit JRE by JetBrains (will be used with 64-bit launcher)"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "Desktop.ini" "Field 4" "Text" "Download and install x86 JRE by JetBrains"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
@@ -366,21 +366,21 @@ done:
|
||||
!insertmacro INSTALLOPTIONS_DISPLAY "Desktop.ini"
|
||||
FunctionEnd
|
||||
|
||||
Function downloadJre64
|
||||
Function downloadJre
|
||||
!insertmacro INSTALLOPTIONS_READ $R0 "Desktop.ini" "Field 4" "State"
|
||||
${If} $R0 == 1
|
||||
inetc::get ${LINK_TO_JRE64} "$TEMP\jre64.tar.gz" /END
|
||||
inetc::get ${LINK_TO_JRE} "$TEMP\jre.tar.gz" /END
|
||||
Pop $0
|
||||
${If} $0 == "OK"
|
||||
untgz::extract "-d" "$INSTDIR\jre64" "$TEMP\jre64.tar.gz"
|
||||
StrCmp $R0 "success" removeTempJre64
|
||||
DetailPrint "Failed to extract jre64.tar.gz"
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION|MB_DEFBUTTON1 "Failed to extract $TEMP\jre64.tar.gz"
|
||||
removeTempJre64:
|
||||
IfFileExists "$TEMP\jre64.tar.gz" 0 done
|
||||
Delete "$TEMP\jre64.tar.gz"
|
||||
untgz::extract "-d" "$INSTDIR\jre" "$TEMP\jre.tar.gz"
|
||||
StrCmp $R0 "success" removeTempJre
|
||||
DetailPrint "Failed to extract jre.tar.gz"
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION|MB_DEFBUTTON1 "Failed to extract $TEMP\jre.tar.gz"
|
||||
removeTempJre:
|
||||
IfFileExists "$TEMP\jre.tar.gz" 0 done
|
||||
Delete "$TEMP\jre.tar.gz"
|
||||
${Else}
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION "The ${LINK_TO_JRE64} download is failed: $0"
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION "The ${LINK_TO_JRE} download is failed: $0"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
done:
|
||||
@@ -778,9 +778,9 @@ FunctionEnd
|
||||
;------------------------------------------------------------------------------
|
||||
Section "IDEA Files" CopyIdeaFiles
|
||||
|
||||
;download and install JRE 64
|
||||
StrCmp "${LINK_TO_JRE64}" "null" shortcuts 0
|
||||
Call downloadJre64
|
||||
StrCmp "${LINK_TO_JRE}" "null" shortcuts 0
|
||||
;download and install JRE x86
|
||||
Call downloadJre
|
||||
|
||||
shortcuts:
|
||||
;create shortcuts
|
||||
|
||||
@@ -80,7 +80,7 @@ class IdeaCommunityProperties extends BaseIdeaProperties {
|
||||
}
|
||||
|
||||
@Override
|
||||
String getBaseDownloadUrlForJre64() { "https://download.jetbrains.com/idea" }
|
||||
String getBaseDownloadUrlForJre() { "https://download.jetbrains.com/idea" }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -99,10 +99,10 @@ abstract class WindowsDistributionCustomizer {
|
||||
}
|
||||
|
||||
/**
|
||||
* The returned string is base part of a Url to tar.gz archive of JetBrains JRE 64-bit for windows.
|
||||
* The URL composed from two parts. The described base part and archive name (is generated by BundledJreManager.archiveNameJre64).
|
||||
* The Url is used by windows installer to download and install JRE 64-bit.
|
||||
* If the option is chosen by user JRE x86 and 64-bit will be install together.
|
||||
* The returned string is base part of a Url to tar.gz archive of JetBrains JRE x86 for windows.
|
||||
* The URL composed from two parts. The described base part and archive name (is generated by BundledJreManager.archiveNameJre).
|
||||
* The Url is used by windows installer to download and install JRE x86.
|
||||
* If the option is chosen by user JRE 64-bit and x86 will be install together.
|
||||
*/
|
||||
String getBaseDownloadUrlForJre64() { return null }
|
||||
String getBaseDownloadUrlForJre() { return null }
|
||||
}
|
||||
|
||||
+5
-2
@@ -72,8 +72,8 @@ class BundledJreManager {
|
||||
return findJreArchive("win")
|
||||
}
|
||||
|
||||
String archiveNameJre64(BuildContext buildContext) {
|
||||
return "jre64-for-${buildContext.productProperties.getBaseArtifactName(buildContext.applicationInfo, buildContext.buildNumber)}.tar.gz"
|
||||
String archiveNameJre(BuildContext buildContext) {
|
||||
return "jre-for-${buildContext.productProperties.getBaseArtifactName(buildContext.applicationInfo, buildContext.buildNumber)}.tar.gz"
|
||||
}
|
||||
|
||||
|
||||
@@ -92,6 +92,9 @@ class BundledJreManager {
|
||||
}
|
||||
buildContext.messages.block("Extract $archive.name JRE") {
|
||||
String destination = "$targetDir/jre"
|
||||
if (osDirName == "win" && arch == JvmArchitecture.x64) {
|
||||
destination += "64"
|
||||
}
|
||||
buildContext.messages.progress("Extracting JRE from '$archive.name' archive")
|
||||
if (SystemInfo.isWindows) {
|
||||
buildContext.ant.untar(src: archive.absolutePath, dest: destination, compression: 'gzip')
|
||||
|
||||
+3
-3
@@ -131,8 +131,8 @@ class WinExeInstallerBuilder {
|
||||
|
||||
def extensionsList = customizer.fileAssociations
|
||||
def fileAssociations = extensionsList.isEmpty() ? "NoAssociation" : extensionsList.join(",")
|
||||
def linkToJre64 = customizer.getBaseDownloadUrlForJre64() != null ?
|
||||
"${customizer.getBaseDownloadUrlForJre64()}/${buildContext.bundledJreManager.archiveNameJre64(buildContext)}" :
|
||||
def linkToJre = customizer.getBaseDownloadUrlForJre() != null ?
|
||||
"${customizer.getBaseDownloadUrlForJre()}/${buildContext.bundledJreManager.archiveNameJre(buildContext)}" :
|
||||
null
|
||||
new File(box, "nsiconf/strings.nsi").text = """
|
||||
!define MANUFACTURER "${buildContext.applicationInfo.shortCompanyName}"
|
||||
@@ -146,7 +146,7 @@ class WinExeInstallerBuilder {
|
||||
!define PRODUCT_HEADER_FILE "headerlogo.bmp"
|
||||
!define ASSOCIATION "$fileAssociations"
|
||||
!define UNINSTALL_WEB_PAGE "${customizer.getUninstallFeedbackPageUrl(buildContext.applicationInfo) ?: "feedback_web_page"}"
|
||||
!define LINK_TO_JRE64 "$linkToJre64"
|
||||
!define LINK_TO_JRE "$linkToJre"
|
||||
|
||||
; if SHOULD_SET_DEFAULT_INSTDIR != 0 then default installation directory will be directory where highest-numbered IDE build has been installed
|
||||
; set to 1 for release build
|
||||
|
||||
+8
-13
@@ -81,21 +81,16 @@ class WindowsDistributionBuilder extends OsSpecificDistributionBuilder {
|
||||
@Override
|
||||
void buildArtifacts(String winDistPath) {
|
||||
def arch = customizer.bundledJreArchitecture
|
||||
def jreDirectoryPath = arch != null ? buildContext.bundledJreManager.extractWinJre(arch) : null
|
||||
List<String> jreDirectoryPaths = [jreDirectoryPath];
|
||||
def jreDirectoryPath64 = arch != null ? buildContext.bundledJreManager.extractWinJre(arch) : null
|
||||
List<String> jreDirectoryPaths = [jreDirectoryPath64];
|
||||
|
||||
if (customizer.getBaseDownloadUrlForJre64() != null && arch != JvmArchitecture.x64) {
|
||||
if (customizer.getBaseDownloadUrlForJre() != null && arch != JvmArchitecture.x32) {
|
||||
File archive = buildContext.bundledJreManager.findWinJreArchive()
|
||||
if (archive != null && archive.exists()) {
|
||||
buildContext.ant.copy(file: archive, tofile: "${buildContext.paths.artifacts}/${buildContext.bundledJreManager.archiveNameJre64(buildContext)}", overwrite: "true")
|
||||
//prepare JRE64 folder for win archive
|
||||
def jreDirectoryPath64 = buildContext.bundledJreManager.extractWinJre(JvmArchitecture.x64)
|
||||
if (! new File("${jreDirectoryPath64}/jre64").exists()) {
|
||||
buildContext.ant.move(todir: "${jreDirectoryPath64}/jre64") {
|
||||
fileset(dir: "${jreDirectoryPath64}/jre")
|
||||
}
|
||||
}
|
||||
jreDirectoryPaths = [jreDirectoryPath, jreDirectoryPath64];
|
||||
buildContext.ant.copy(file: archive, tofile: "${buildContext.paths.artifacts}/${buildContext.bundledJreManager.archiveNameJre(buildContext)}", overwrite: "true")
|
||||
//prepare folder with jre x86 for win archive
|
||||
def jreDirectoryPath = buildContext.bundledJreManager.extractWinJre(JvmArchitecture.x32)
|
||||
jreDirectoryPaths = [jreDirectoryPath64, jreDirectoryPath];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +109,7 @@ class WindowsDistributionBuilder extends OsSpecificDistributionBuilder {
|
||||
}
|
||||
|
||||
buildContext.executeStep("Build Windows Exe Installer", BuildOptions.WINDOWS_EXE_INSTALLER_STEP) {
|
||||
new WinExeInstallerBuilder(buildContext, customizer, jreDirectoryPath).buildInstaller(winDistPath)
|
||||
new WinExeInstallerBuilder(buildContext, customizer, jreDirectoryPath64).buildInstaller(winDistPath)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user