blob: 9bcc37eeec7240770e16bdc1f0a71423fd3629e2 [file] [log] [blame]
# File src/gnuwin32/installer/JRins.R
#
# Part of the R package, https://www.R-project.org
#
# This program 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 2 of the License, or
# (at your option) any later version.
#
# This program 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.
#
# A copy of the GNU General Public License is available at
# https://www.R-project.org/Licenses/
### JRins.R Rversion srcdir MDISDI HelpStyle Producer ISDIR
.make_R.iss <- function(RW, srcdir, MDISDI=0, HelpStyle=1,
Producer = "R-core", ISDIR)
{
have32bit <- file_test("-d", file.path(srcdir, "bin", "i386"))
have64bit <- file_test("-d", file.path(srcdir, "bin", "x64"))
## need DOS-style paths
srcdir = gsub("/", "\\", srcdir, fixed = TRUE)
Rver <- readLines("../../../VERSION")[1L]
Rver <- sub("Under .*$", "Pre-release", Rver)
## This is now over 2^16, so truncate
SVN <- sub("Revision: ", "", readLines("../../../SVN-REVISION"))[1L]
SVN <- as.character(as.numeric(SVN) - 50000L)
Rver0 <- paste(sub(" .*$", "", Rver), SVN, sep = ".")
con <- file("R.iss", "w")
cat("[Setup]\n", file = con)
if (have64bit) {
regfile <- "reg3264.iss"
types <- "types3264.iss"
cat("ArchitecturesInstallIn64BitMode=x64\n", file = con)
} else { # 32-bit only
regfile <- "reg.iss"
types <- "types32.iss"
}
suffix <- "win"
cat(paste("OutputBaseFilename=", RW, "-", suffix, sep = ""),
paste("AppName=R for Windows ", Rver, sep = ""),
paste("AppVerName=R for Windows ", Rver, sep = ""),
paste("AppVersion=", Rver, sep = ""),
paste("VersionInfoVersion=", Rver0, sep = ""),
paste("DefaultDirName={code:UserPF}\\R\\", RW, sep = ""),
paste("InfoBeforeFile=", srcdir, "\\doc\\COPYING", sep = ""),
if(Producer == "R-core") "AppPublisher=R Core Team"
else paste("AppPublisher=", Producer, sep = ""),
file = con, sep = "\n")
## different versions of the installer have different translation files
lines <- readLines("header1.iss")
check <- grepl("Languages\\", lines, fixed = TRUE)
langs <- sub(".*\\\\", "", lines[check])
langs <- sub('"$', "", langs)
avail <- dir(file.path(ISDIR, "Languages"), pattern = "[.]isl$")
drop <- !(langs %in% avail)
if(any(drop))
lines <- grep(paste0("(", paste(langs[drop], collapse = "|"), ")"),
lines, value = TRUE, invert = TRUE)
writeLines(lines, con)
lines <- readLines(regfile)
lines <- gsub("@RVER@", Rver, lines)
lines <- gsub("@Producer@", Producer, lines)
writeLines(lines, con)
lines <- readLines(types)
if(have64bit && !have32bit) {
lines <- lines[-c(3,4,10)]
lines <- gsub("user(32)* ", "", lines)
lines <- gsub("compact ", "", lines)
}
writeLines(lines, con)
lines <- readLines("code.iss")
lines <- gsub("@MDISDI@", MDISDI, lines)
lines <- gsub("@HelpStyle@", HelpStyle, lines)
writeLines(lines, con)
writeLines(c("", "", "[Files]"), con)
setwd(srcdir)
files <- sub("^./", "",
list.files(".", full.names = TRUE, recursive = TRUE))
for (f in files) {
dir <- sub("[^/]+$", "", f)
dir <- paste("\\", gsub("/", "\\", dir, fixed = TRUE), sep = "")
dir <- sub("\\\\$", "", dir)
component <- if (grepl("^Tcl/(bin|lib)64", f)) "x64"
else if (have64bit &&
(grepl("^Tcl/bin", f) ||
grepl("^Tcl/lib/(dde1.3|reg1.2|Tktable)", f))) "i386"
else if (grepl("/i386/", f)) "i386"
else if (grepl("/x64/", f)) "x64"
else if (grepl("(/po$|/po/|/msgs$|/msgs/|^library/translations)", f))
"translations"
else "main"
if (component == "x64" && !have64bit) next
# Skip the /bin front ends, they are installed below
if (grepl("bin/R.exe$", f)) next
if (grepl("bin/Rscript.exe$", f)) next
f <- gsub("/", "\\", f, fixed = TRUE)
# The /bin front ends are installed according to this rule:
# - If x64 is installed, use that version of Rfe
# - Otherwise, use the i386 version
if (grepl("Rfe\\.exe$", f)) {
if (component == "i386")
comp <- "i386 and not x64"
else
comp <- component
bindir <- gsub("/", "\\", dirname(dir), fixed = TRUE)
cat('Source: "', srcdir, '\\', f, '"; ',
'DestDir: "{app}', bindir, '"; ',
'DestName: "R.exe"; ',
'Flags: ignoreversion; ',
'Components: ', comp,
'\n',
file = con, sep = "")
cat('Source: "', srcdir, '\\', f, '"; ',
'DestDir: "{app}', bindir, '"; ',
'DestName: "Rscript.exe"; ',
'Flags: ignoreversion; ',
'Components: ', comp,
'\n',
file = con, sep = "")
}
cat('Source: "', srcdir, '\\', f, '"; ',
'DestDir: "{app}', dir, '"; ',
'Flags: ignoreversion; ',
'Components: ', component,
file = con, sep = "")
if(f %in% c("etc\\Rprofile.site", "etc\\Rconsole"))
cat("; AfterInstall: EditOptions()", file = con)
cat("\n", file = con)
}
close(con)
}
args <- commandArgs(TRUE)
do.call(".make_R.iss", as.list(args))