build scripts: provide ability to build artifacts without product version in root installation folder (Rider needs).

IDEA-160860 install directory should be named after major or minor version only

IDEA-CR-55018

GitOrigin-RevId: 13d6222e04470641fdd495b00a4019d67fc592ba
This commit is contained in:
Vladimir.Orlov
2019-11-19 07:33:09 +00:00
committed by intellij-monorepo-bot
parent 88fbc6522e
commit ca7a4cff3a
6 changed files with 31 additions and 34 deletions
+20 -20
View File
@@ -552,7 +552,7 @@ UninstPage custom un.ConfirmDeleteSettings
OutFile "${OUT_DIR}\${OUT_FILE}.exe"
InstallDir "$PROGRAMFILES\${MANUFACTURER}\${PRODUCT_WITH_VER}"
InstallDir "$PROGRAMFILES\${MANUFACTURER}\${INSTALL_DIR_AND_SHORTCUT_NAME}"
!define MUI_BRANDINGTEXT " "
BrandingText " "
@@ -1012,9 +1012,9 @@ continue_enum_versions_hklm:
end_enum_versions_hklm:
StrCmp $INSTDIR "" 0 skip_default_instdir
${If} ${RunningX64}
StrCpy $INSTDIR "$PROGRAMFILES64\${MANUFACTURER}\${MUI_PRODUCT} ${MUI_VERSION_MAJOR}.${MUI_VERSION_MINOR}"
StrCpy $INSTDIR "$PROGRAMFILES64\${MANUFACTURER}\${INSTALL_DIR_AND_SHORTCUT_NAME}"
${Else}
StrCpy $INSTDIR "$PROGRAMFILES\${MANUFACTURER}\${MUI_PRODUCT} ${MUI_VERSION_MAJOR}.${MUI_VERSION_MINOR}"
StrCpy $INSTDIR "$PROGRAMFILES\${MANUFACTURER}\${INSTALL_DIR_AND_SHORTCUT_NAME}"
${EndIf}
skip_default_instdir:
@@ -1231,16 +1231,16 @@ shortcuts:
!insertmacro INSTALLOPTIONS_READ $R2 "Desktop.ini" "Field $launcherShortcut" "State"
StrCmp ${JRE_32BIT_VERSION_SUPPORTED} "0" shortcut_for_exe_64 0
StrCmp $R2 1 "" exe_64
CreateShortCut "$DESKTOP\${PRODUCT_FULL_NAME_WITH_VER}.lnk" \
CreateShortCut "$DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk" \
"$INSTDIR\bin\${PRODUCT_EXE_FILE}" "" "" "" SW_SHOWNORMAL
${LogText} "Create shortcut: $DESKTOP\${PRODUCT_FULL_NAME_WITH_VER}.lnk $INSTDIR\bin\${PRODUCT_EXE_FILE}"
${LogText} "Create shortcut: $DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk $INSTDIR\bin\${PRODUCT_EXE_FILE}"
exe_64:
!insertmacro INSTALLOPTIONS_READ $R2 "Desktop.ini" "Field $secondLauncherShortcut" "State"
shortcut_for_exe_64:
StrCmp $R2 1 "" add_to_path
CreateShortCut "$DESKTOP\${PRODUCT_FULL_NAME_WITH_VER} x64.lnk" \
CreateShortCut "$DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME} x64.lnk" \
"$INSTDIR\bin\${PRODUCT_EXE_FILE_64}" "" "" "" SW_SHOWNORMAL
${LogText} "Create shortcut: $DESKTOP\${PRODUCT_FULL_NAME_WITH_VER} x64.lnk $INSTDIR\bin\${PRODUCT_EXE_FILE_64}"
${LogText} "Create shortcut: $DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME} x64.lnk $INSTDIR\bin\${PRODUCT_EXE_FILE_64}"
add_to_path:
!insertmacro INSTALLOPTIONS_READ $R0 "Desktop.ini" "Field $addToPath" "State"
@@ -1310,10 +1310,10 @@ skip_ipr:
; $STARTMENU_FOLDER stores name of IDEA folder in Start Menu,
; save it name in the "MenuFolder" RegValue
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${PRODUCT_FULL_NAME_WITH_VER}.lnk" \
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk" \
"$productLauncher" "" "" "" SW_SHOWNORMAL
StrCpy $7 "$SMPROGRAMS\$STARTMENU_FOLDER\${PRODUCT_FULL_NAME_WITH_VER}.lnk"
StrCpy $7 "$SMPROGRAMS\$STARTMENU_FOLDER\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk"
ShellLink::GetShortCutWorkingDirectory $7
Pop $0
DetailPrint "ShortCutWorkingDirectory: $0"
@@ -1341,7 +1341,7 @@ skip_ipr:
; write uninstaller & add it to add/remove programs in control panel
WriteUninstaller "$INSTDIR\bin\Uninstall.exe"
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_WITH_VER}" \
"DisplayName" "${PRODUCT_FULL_NAME_WITH_VER}"
"DisplayName" "${INSTALL_DIR_AND_SHORTCUT_NAME}"
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_WITH_VER}" \
"UninstallString" "$INSTDIR\bin\Uninstall.exe"
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_WITH_VER}" \
@@ -1443,7 +1443,7 @@ uac_elevation_aborted:
${LogText} ""
${LogText} " NOTE: UAC elevation has been aborted. Installation dir will be changed."
${LogText} ""
StrCpy $INSTDIR "$LOCALAPPDATA\${MANUFACTURER}\${PRODUCT_WITH_VER}"
StrCpy $INSTDIR "$LOCALAPPDATA\${MANUFACTURER}\${INSTALL_DIR_AND_SHORTCUT_NAME}"
goto installdir_is_empty
uac_success:
StrCmp 1 $3 uac_admin ;Admin?
@@ -1453,9 +1453,9 @@ uac_admin:
IfSilent uac_all_users set_install_dir_admin_mode
set_install_dir_admin_mode:
${If} ${RunningX64}
StrCpy $INSTDIR "$PROGRAMFILES64\${MANUFACTURER}\${PRODUCT_WITH_VER}"
StrCpy $INSTDIR "$PROGRAMFILES64\${MANUFACTURER}\${INSTALL_DIR_AND_SHORTCUT_NAME}"
${Else}
StrCpy $INSTDIR "$PROGRAMFILES\${MANUFACTURER}\${PRODUCT_WITH_VER}"
StrCpy $INSTDIR "$PROGRAMFILES\${MANUFACTURER}\${INSTALL_DIR_AND_SHORTCUT_NAME}"
${EndIf}
uac_all_users:
SetShellVarContext all
@@ -1847,7 +1847,7 @@ Section "Uninstall"
StrCmp $3 "" delete_caches shortcuts
shortcuts:
StrCpy $7 "$SMPROGRAMS\$3\${PRODUCT_FULL_NAME_WITH_VER}.lnk"
StrCpy $7 "$SMPROGRAMS\$3\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk"
Call un.validateStartMenuLinkToLauncher
StrCmp $8 "" 0 remove_link
DetailPrint "StartMenu: $7 is not point to valid launcher."
@@ -1931,13 +1931,13 @@ no_jre32:
; remove desktop shortcuts
desktop_shortcut_launcher32:
IfFileExists "$DESKTOP\${PRODUCT_FULL_NAME_WITH_VER}.lnk" 0 desktop_shortcut_launcher64
DetailPrint "remove desktop shortcut to launcher32: $DESKTOP\${PRODUCT_FULL_NAME_WITH_VER}.lnk"
Delete "$DESKTOP\${PRODUCT_FULL_NAME_WITH_VER}.lnk"
IfFileExists "$DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk" 0 desktop_shortcut_launcher64
DetailPrint "remove desktop shortcut to launcher32: $DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk"
Delete "$DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME}.lnk"
desktop_shortcut_launcher64:
IfFileExists "$DESKTOP\${PRODUCT_FULL_NAME_WITH_VER} x64.lnk" 0 registry
DetailPrint "remove desktop shortcut to launcher64: $DESKTOP\${PRODUCT_FULL_NAME_WITH_VER} x64.lnk"
Delete "$DESKTOP\${PRODUCT_FULL_NAME_WITH_VER} x64.lnk"
IfFileExists "$DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME} x64.lnk" 0 registry
DetailPrint "remove desktop shortcut to launcher64: $DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME} x64.lnk"
Delete "$DESKTOP\${INSTALL_DIR_AND_SHORTCUT_NAME} x64.lnk"
registry:
StrCpy $0 "SHCTX"
@@ -162,11 +162,6 @@ abstract class ProductProperties {
*/
boolean buildSourcesArchive = false
/**
* add product version to root installation folder
*/
boolean includeVersionToInstallDir = true
/**
* Specifies how Maven artifacts for IDE modules should be generated, by default no artifacts are generated.
*/
@@ -78,6 +78,13 @@ abstract class WindowsDistributionCustomizer {
*/
String getRootDirectoryName(ApplicationInfoProperties applicationInfo, String buildNumber) { "" }
/**
* Name of the root product windows installation directory and Desktop ShortCut
*/
String getNameForInstallDirAndDesktopShortcut(ApplicationInfoProperties applicationInfo, String buildNumber) {
"${applicationInfo.productName} ${applicationInfo.isEAP ? buildNumber : applicationInfo.fullVersion}"
}
/**
* Override this method to copy additional files to Windows distribution of the product.
* @param targetDirectory contents of this directory will be packed into zip archive and exe installer, so when the product is installed
@@ -89,7 +96,6 @@ abstract class WindowsDistributionCustomizer {
* The returned name will be shown in Windows Installer and used in Registry keys
*/
String getFullNameIncludingEdition(ApplicationInfoProperties applicationInfo) { applicationInfo.productName }
/**
* The returned name will be used to create links on Desktop
*/
@@ -150,9 +150,7 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
}
private void buildTarGz(String jreDirectoryPath, String unixDistPath, String suffix) {
def tarRoot = !buildContext.productProperties.includeVersionToInstallDir ?
buildContext.applicationInfo.productName :
customizer.getRootDirectoryName(buildContext.applicationInfo, buildContext.buildNumber)
def tarRoot = customizer.getRootDirectoryName(buildContext.applicationInfo, buildContext.buildNumber)
def baseName = buildContext.productProperties.getBaseArtifactName(buildContext.applicationInfo, buildContext.buildNumber)
def tarPath = "${buildContext.paths.artifacts}/${baseName}${suffix}.tar.gz"
def paths = [buildContext.paths.distAll, unixDistPath]
@@ -305,8 +305,6 @@ class MacDistributionBuilder extends OsSpecificDistributionBuilder {
}
static String getZipRoot(BuildContext buildContext, MacDistributionCustomizer customizer) {
!buildContext.productProperties.includeVersionToInstallDir ?
"${buildContext.applicationInfo.productName}.app/Contents" :
"${customizer.getRootDirectoryName(buildContext.applicationInfo, buildContext.buildNumber)}/Contents"
}
@@ -203,15 +203,15 @@ class WinExeInstallerBuilder {
!define SHOULD_SET_DEFAULT_INSTDIR "0"
"""
def versionString = !productProperties.includeVersionToInstallDir ? "" : buildContext.applicationInfo.isEAP ? "\${VER_BUILD}" : "\${MUI_VERSION_MAJOR}.\${MUI_VERSION_MINOR}"
def versionString = buildContext.applicationInfo.isEAP ? "\${VER_BUILD}" : "\${MUI_VERSION_MAJOR}.\${MUI_VERSION_MINOR}"
def installDirAndShortcutName = customizer.getNameForInstallDirAndDesktopShortcut(buildContext.applicationInfo, buildContext.buildNumber)
new File(box, "nsiconf/version.nsi").text = """
!define MUI_VERSION_MAJOR "${buildContext.applicationInfo.majorVersion}"
!define MUI_VERSION_MINOR "${buildContext.applicationInfo.minorVersion}"
!define VER_BUILD ${buildContext.buildNumber}
!define INSTALL_DIR_AND_SHORTCUT_NAME "${installDirAndShortcutName}"
!define PRODUCT_WITH_VER "\${MUI_PRODUCT} $versionString"
!define PRODUCT_FULL_NAME_WITH_VER "\${PRODUCT_FULL_NAME} $versionString"
!define PRODUCT_PATHS_SELECTOR "${buildContext.systemSelector}"
!define PRODUCT_SETTINGS_DIR ".\${PRODUCT_PATHS_SELECTOR}"
"""