mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Sync the 1.3.x and 1.4.x Windows packaging stuff.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@10201 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
0aab8ead34
commit
017bd21202
@ -1,12 +1,19 @@
|
||||
Packaging LyX 1.3.6 for Windows
|
||||
===============================
|
||||
Angus Leeming, 14 July 2005
|
||||
===========================
|
||||
|
||||
Preparing the way
|
||||
=================
|
||||
|
||||
The very first thing to do on the way to creating a LyX/Win package is
|
||||
to build the sources and install them somewhere accessible. (I've been
|
||||
using PREFIX='/J/Programs/LyX'.)
|
||||
to build the sources and install them somewhere accessible. I've written
|
||||
a script, build_lyxwin.sh, that performs all the necessary steps. Please
|
||||
read the preamble and (un)comment those steps that are necessary at the
|
||||
end of the script.
|
||||
|
||||
The (eventual --- mingw is a *very* slow compiler) result is a lyx
|
||||
package that's almost ready to go in $LYX_SRCS/build/installprefix.
|
||||
|
||||
Thereafter, the contents of this tree must be manipulated a
|
||||
little. I've written a little script, package_lyxwin.sh, to automate
|
||||
@ -91,7 +98,7 @@ lyx_original.exe. Remove it.
|
||||
Building the LyX installer
|
||||
==========================
|
||||
|
||||
At this point my J:\Programs\LyX tree now contains everything that is
|
||||
At this point my build/installprefix tree now contains everything that is
|
||||
to be released as a LyX/Win package. All that remains to do is to
|
||||
generate a Windows installer for it. I've written a script for NSIS
|
||||
(http://nsis.sourceforge.net/) to compile into an installer.
|
||||
|
319
development/Win32/packaging/build_lyxwin.sh
Normal file
319
development/Win32/packaging/build_lyxwin.sh
Normal file
@ -0,0 +1,319 @@
|
||||
#! /bin/sh
|
||||
|
||||
# This script aims to do averything necessary to automate the building
|
||||
# of a LyX/Win package.
|
||||
|
||||
# Invocation:
|
||||
# sh build_lyxwin.sh "1.3.6-pre23"
|
||||
# The string will be shown in the "About LyX" dialog.
|
||||
|
||||
# This script is written as a bunch of subroutines. You'll probably
|
||||
# only need to build a couple of the packages (dtl, aspell) once.
|
||||
# Thereafter, the invocation of these subroutines can be commented out.
|
||||
# (See the end of the script.)
|
||||
|
||||
# Notes:
|
||||
# It uses the MinGW/MinSYS environment and compiler.
|
||||
|
||||
# It asks whether the Qt and LyX cvs trees are up to date.
|
||||
# It asks whether the Qt library has been compiled.
|
||||
# It checks that qt-mt3.dll, libiconv-2.dll,
|
||||
# mingw10.dll and clean_dvi.py exist.
|
||||
# It compiles the dv2dt and dt2dv utilites.
|
||||
# It compiles and installs the Aspell library.
|
||||
# It compiles and installs LyX.
|
||||
# It copies the dv2dt and dt2dv utilites, the .dlls and
|
||||
# clean_dvi.py to the lyx package.
|
||||
# It modifies the Resources/lyx/configure script to
|
||||
# ensure that the generated .dvi file is usable.
|
||||
|
||||
# Once all this is done, you're ready to "package" LyX.
|
||||
# See the README for details.
|
||||
|
||||
# The script compiles the .dll version of the Qt libraries. Linking of lyx
|
||||
# against this will, therefore, take "some time".
|
||||
|
||||
# It compiles the static version of the Aspell libraries because no
|
||||
# .dll version exists.
|
||||
|
||||
HOME="/home/Angus"
|
||||
|
||||
# You may need to change these three variables.
|
||||
QT_DIR="${HOME}"/qt3
|
||||
ASPELL_DIR="${HOME}"/aspell-0.50.5
|
||||
# A space-separated string of directories
|
||||
# ASPELL_DICT_DIRS="${HOME}/aspell-en-0.50-2 ${HOME}/aspell-de-0.50-2 "
|
||||
ASPELL_DICT_DIRS="${HOME}/aspell-en-0.50-2"
|
||||
LYX_DIR="${HOME}"/lyx/13x
|
||||
|
||||
# Everything from here on down should be OK "as is".
|
||||
PACKAGING_DIR="$LYX_DIR/development/Win32/packaging"
|
||||
DTL_DIR="$PACKAGING_DIR/dtl"
|
||||
CLEAN_DVI_DIR="$PACKAGING_DIR"
|
||||
|
||||
ASPELL_INSTALL_DIR="c:/Aspell"
|
||||
LYX_ASPELL_DIR="/c/Aspell" # the Autotools don't like "C:/" syntax.
|
||||
LYX_RELATIVE_BUILDDIR=build
|
||||
LYX_INSTALL_DIR=installprefix
|
||||
|
||||
# These are all installed in the final LyX package
|
||||
QT_DLL="${QT_DIR}/bin/qt-mt3.dll"
|
||||
LIBICONV_DLL="/j/MinGW/bin/libiconv-2.dll"
|
||||
MINGW_DLL="/j/MinGW/bin/mingwm10.dll"
|
||||
|
||||
DT2DV="$DTL_DIR/dt2dv.exe"
|
||||
DV2DT="$DTL_DIR/dv2dt.exe"
|
||||
CLEAN_DVI_PY="$CLEAN_DVI_DIR/clean_dvi.py"
|
||||
|
||||
# Change this to 'mv -f' when you are confident that
|
||||
# the various sed scripts are working correctly.
|
||||
MV='mv -f'
|
||||
|
||||
check_dirs_exist()
|
||||
{
|
||||
for dir in "$QT_DIR" "$ASPELL_DIR" "$LYX_DIR" "$DTL_DIR"
|
||||
do
|
||||
test -d "$dir" || {
|
||||
echo "$dir does not exist" >&2
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
query_qt()
|
||||
{
|
||||
echo "Please ensure that the Qt and LyX cvs trees are up to date"
|
||||
echo "and that the Qt library is compiled and ready to go."
|
||||
echo "Press any key to continue"
|
||||
read ans
|
||||
}
|
||||
|
||||
|
||||
check_files_exist()
|
||||
{
|
||||
# Check that the dlls and clean_dvi.py exist
|
||||
for file in "${QT_DLL}" "${LIBICONV_DLL}" "${MINGW_DLL}" "${CLEAN_DVI_PY}"
|
||||
do
|
||||
test -r "${file}" || {
|
||||
echo "$file does not exist" >&2
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
build_dtl()
|
||||
{
|
||||
# dt2dv and dv2dt
|
||||
(
|
||||
cd "$DTL_DIR" || {
|
||||
echo "Unable to cd $DTL_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
make || {
|
||||
echo "Failed to make $DTL_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
)
|
||||
|
||||
for file in "${DT2DV}" "${DV2DT}"
|
||||
do
|
||||
test -x "$file" || {
|
||||
echo "${file} does not exist or is not executable" >&2
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
build_aspell()
|
||||
{
|
||||
# Aspell
|
||||
(
|
||||
cd "$ASPELL_DIR" || {
|
||||
echo "Unable to cd $ASPELL_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
./configure --enable-static --disable-shared --prefix="${ASPELL_INSTALL_DIR}" --sysconfdir="${ASPELL_INSTALL_DIR}" --enable-docdir="${ASPELL_INSTALL_DIR}/doc" --datadir="${ASPELL_INSTALL_DIR}/data" --enable-pkgdatadir="${ASPELL_INSTALL_DIR}/data" --enable-dict-dir="${ASPELL_INSTALL_DIR}/dict" --enable-win32-relocatable || {
|
||||
echo "Failed to configure $ASPELL_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# We have to clean up two of the generated Makefiles.
|
||||
TMP=tmp.$$
|
||||
MAKEFILE=examples/Makefile
|
||||
sed '
|
||||
# Replace "CC = gcc" with "CC = g++"
|
||||
s/^ *\(CC *= *\)gcc *$/\1g++/
|
||||
# Remove trailing "/" from the -I directory.
|
||||
s@^ *\(INCLUDES *= *-I\${top_srcdir}/interfaces/cc\)/ *$@\1@
|
||||
' "${MAKEFILE}" > "${TMP}"
|
||||
cmp -s "${MAKEFILE}" "${TMP}" && {
|
||||
echo "${MAKEFILE} is unchanged" 2>&1
|
||||
} || {
|
||||
diff -u "${MAKEFILE}" "${TMP}"
|
||||
${MV} "${TMP}" "${MAKEFILE}"
|
||||
}
|
||||
rm -f "${TMP}"
|
||||
|
||||
MAKEFILE=prog/Makefile
|
||||
sed '
|
||||
# Remove trailing "/" from the -I directories.
|
||||
/^ *INCLUDES *= *-I\${top_srcdir}\/common/{
|
||||
:loop
|
||||
$!{
|
||||
N
|
||||
/\n *$/!bloop
|
||||
}
|
||||
s@/ *\(\\ *\n\)@ \1@g
|
||||
}' "${MAKEFILE}" > "${TMP}"
|
||||
cmp -s "${MAKEFILE}" "${TMP}" && {
|
||||
echo "${MAKEFILE} is unchanged" 2>&1
|
||||
} || {
|
||||
diff -u "${MAKEFILE}" "${TMP}"
|
||||
${MV} "${TMP}" "${MAKEFILE}"
|
||||
}
|
||||
rm -f "${TMP}"
|
||||
|
||||
make || {
|
||||
echo "Failed to make $ASPELL_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
rm -fr "$ASPELL_INSTALL_DIR" || {
|
||||
echo "Failed to remove $ASPELL_INSTALL_DIR prior to installing Aspell" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
make install || {
|
||||
echo "Failed to install $ASPELL_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
build_aspell_dicts()
|
||||
{
|
||||
(
|
||||
PATH="${LYX_ASPELL_DIR}:$PATH"
|
||||
export PATH
|
||||
|
||||
for dir in $ASPELL_DICT_DIRS
|
||||
do
|
||||
(
|
||||
cd $dir
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
)
|
||||
done
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
modify_version_C()
|
||||
{
|
||||
VERSION_C="src/version.C"
|
||||
test -r "${VERSION_C}" || {
|
||||
echo "Unable to find ${VERSION_C}"
|
||||
return
|
||||
}
|
||||
test "${LYX_VERSION_STR}" == "" && return
|
||||
|
||||
sed '/char const \* lyx_version = /s/"[^"]*"/"'${LYX_VERSION_STR}'"/' \
|
||||
${VERSION_C} > tmp.$$
|
||||
diff -u ${VERSION_C} tmp.$$
|
||||
${MV} tmp.$$ ${VERSION_C}
|
||||
}
|
||||
|
||||
|
||||
build_lyx()
|
||||
{
|
||||
(
|
||||
cd "${LYX_DIR}" || {
|
||||
echo "Unable to cd ${LYX_DIR}" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Check the line endings of configure.ac
|
||||
# The configure script will be unable to create config.h if it
|
||||
# contains Win32-style line endings.
|
||||
sed 's/
|
||||
$//' ${LYX_DIR}/configure.ac > configure.ac.$$
|
||||
cmp -s ${LYX_DIR}/configure.ac configure.ac.$$ && {
|
||||
rm -f configure.ac.$$
|
||||
} || {
|
||||
mv -f configure.ac.$$ ${LYX_DIR}/configure.ac
|
||||
echo 'configure.ac has Win32-style line endings. Corrected' >&2
|
||||
}
|
||||
|
||||
./autogen.sh || {
|
||||
echo "autogen.sh failed" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
BUILDDIR="${LYX_RELATIVE_BUILDDIR}"
|
||||
test ! -d "${BUILDDIR}" && {
|
||||
mkdir "${BUILDDIR}" || \
|
||||
Error "Unable to create build dir, ${BUILDDIR}."
|
||||
}
|
||||
|
||||
CONFIGURE="../configure --without-x --with-included-gettext --with-extra-prefix='${LYX_ASPELL_DIR}' --with-frontend=qt QTDIR='$QT_DIR'"
|
||||
|
||||
echo "${CONFIGURE}"
|
||||
cd "${BUILDDIR}"
|
||||
echo "${PWD}"
|
||||
eval "${CONFIGURE}" || {
|
||||
echo "Failed to configure LyX" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Modify the "lyx_version" string in build/src/version.C
|
||||
modify_version_C
|
||||
|
||||
# Build LyX
|
||||
make || {
|
||||
echo "Failed to make $LYX_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
install_lyx()
|
||||
{
|
||||
(
|
||||
BUILDDIR="${LYX_RELATIVE_BUILDDIR}"
|
||||
cd "${LYX_DIR}/${BUILDDIR}" || {
|
||||
echo "Unable to cd ${LYX_DIR}/${BUILDDIR}" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
rm -fr "$LYX_INSTALL_DIR" || {
|
||||
echo "Failed to remove $LYX_INSTALL_DIR prior to installing LyX" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
make install || {
|
||||
echo "Failed to install $LYX_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
LYX_VERSION_STR=""
|
||||
test $# -ne 0 && LYX_VERSION_STR=$1
|
||||
|
||||
check_dirs_exist || exit 1
|
||||
query_qt || exit 1
|
||||
check_files_exist || exit 1
|
||||
#build_dtl || exit 1
|
||||
#build_aspell || exit 1
|
||||
#build_aspell_dicts || exit 1
|
||||
build_lyx || exit 1
|
||||
install_lyx || exit 1
|
||||
# The end
|
@ -51,20 +51,20 @@
|
||||
; DoNothing.
|
||||
; If the widget is disabled then set DoNothing ($3) to 0.
|
||||
; Otherwise, set it equal to the "state" variable of the field.
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $3 "ioDownload.ini" "Field 2" "Flags"
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $3 "io_download.ini" "Field 2" "Flags"
|
||||
IntOp $3 $3 & DISABLED
|
||||
${if} $3 == 1
|
||||
StrCpy $3 0
|
||||
${else}
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $3 "ioDownload.ini" "Field 2" "State"
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $3 "io_download.ini" "Field 2" "State"
|
||||
${endif}
|
||||
|
||||
; Download
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $2 "ioDownload.ini" "Field 3" "State"
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $2 "io_download.ini" "Field 3" "State"
|
||||
; SelectFolder
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $1 "ioDownload.ini" "Field 4" "State"
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $1 "io_download.ini" "Field 4" "State"
|
||||
; FolderPath
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $0 "ioDownload.ini" "Field 5" "State"
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $0 "io_download.ini" "Field 5" "State"
|
||||
|
||||
; Return output to user.
|
||||
; The stack available to the user contains:
|
||||
@ -193,8 +193,8 @@
|
||||
|
||||
|
||||
!macro DownloadEnter_Private ExePath Required DownloadLabel HomeLabel PageHeader PageDescription
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 1" "Text" ""
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 2" "Text" "$(DownloadPageField2)"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 1" "Text" ""
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 2" "Text" "$(DownloadPageField2)"
|
||||
|
||||
Push $0
|
||||
${if} ${Required} == 1
|
||||
@ -202,31 +202,31 @@
|
||||
${else}
|
||||
StrCpy $0 "DISABLED"
|
||||
${endif}
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 2" "Flags" $0
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 2" "Flags" $0
|
||||
Pop $0
|
||||
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 2" "State" "0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 3" "Text" "${DownloadLabel}"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 4" "Text" "${HomeLabel}"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 2" "State" "0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 3" "Text" "${DownloadLabel}"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 4" "Text" "${HomeLabel}"
|
||||
|
||||
|
||||
${if} ${ExePath} == ""
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 3" "State" "1"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 4" "State" "0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 5" "Flags" PATH_MUST_EXIST|DISABLED
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 5" "State" ""
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 3" "State" "1"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 4" "State" "0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 5" "Flags" PATH_MUST_EXIST|DISABLED
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 5" "State" ""
|
||||
${else}
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 3" "State" "0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 4" "State" "1"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 5" "Flags" PATH_MUST_EXIST
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 3" "State" "0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 4" "State" "1"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 5" "Flags" PATH_MUST_EXIST
|
||||
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioDownload.ini" "Field 5" "State" "${ExePath}"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_download.ini" "Field 5" "State" "${ExePath}"
|
||||
${endif}
|
||||
|
||||
ClearErrors
|
||||
|
||||
!insertmacro MUI_HEADER_TEXT "${PageHeader}" "${PageDescription}"
|
||||
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioDownload.ini"
|
||||
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "io_download.ini"
|
||||
!macroend
|
||||
|
||||
|
||||
@ -282,7 +282,7 @@
|
||||
|
||||
|
||||
!macro DownloadLeave_Private DoNotRequire Download FolderPath URL EnterFolder ExeName InvalidFolder
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $0 "ioDownload.ini" "Settings" "State"
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $0 "io_download.ini" "Settings" "State"
|
||||
|
||||
StrCmp $0 0 go_on ; Next button?
|
||||
|
||||
|
@ -6,4 +6,4 @@ Type=Label
|
||||
Left=5
|
||||
Right=-1
|
||||
Top=0
|
||||
Bottom=60
|
||||
Bottom=140
|
18
development/Win32/packaging/installer/io_ui_language.ini
Normal file
18
development/Win32/packaging/installer/io_ui_language.ini
Normal file
@ -0,0 +1,18 @@
|
||||
[Settings]
|
||||
NumFields=2
|
||||
|
||||
[Field 1]
|
||||
Type=GroupBox
|
||||
Left=0
|
||||
Right=160
|
||||
Top=0
|
||||
Bottom=-4
|
||||
Text=" Available Languages "
|
||||
|
||||
[Field 2]
|
||||
Type=Droplist
|
||||
ListItems=Dansk|Deutsch|English|Español|Euskara|Français|Italiano|Nederlands|Norsk|Nynorsk|Polski|Româna|Russian|Slovenský|Slovenšcina|Suomi|Türkçe
|
||||
Left=20
|
||||
Right=130
|
||||
Top=15
|
||||
Bottom=130
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* \file lyx_path_prefix.C
|
||||
* \file lyx_configure.C
|
||||
* This file is part of LyX, the document processor.
|
||||
* http://www.lyx.org/
|
||||
* Licence details can be found in the file COPYING or copy at
|
||||
@ -9,30 +9,37 @@
|
||||
* Full author contact details are available in file CREDITS or copy at
|
||||
* http://www.lyx.org/about/credits.php
|
||||
*
|
||||
* This little piece of code is used to insert some code into LyX's
|
||||
* Resources/lyx/configure script so that it will cause lyxrc.defaults to
|
||||
* contain
|
||||
* Define four functions that can be called from the NSIS installer:
|
||||
*
|
||||
* \path_prefix "<path to sh.exe>;<path to python.exe>;..."
|
||||
* set_path_prefix [ configure_file, path_prefix ]
|
||||
* create_bat_files [ bin_dir, lang ]
|
||||
* run_configure [ configure_file, path_prefix ]
|
||||
* set_env [ var_name, var_value ]
|
||||
*
|
||||
* The quantities in [ ... ] are the variables that the functions exxpect
|
||||
* to find on the stack. They push "-1" onto the stack on failure and "0"
|
||||
* onto the stack on success.
|
||||
*
|
||||
* Compile the code with
|
||||
*
|
||||
* g++ -I/c/Program\ Files/NSIS/Contrib -Wall -shared \
|
||||
* lyx_path_prefix.C -o lyx_path_prefix.dll
|
||||
* lyx_configure.C -o lyx_configure.dll
|
||||
*
|
||||
* Move resulting .dll to /c/Program\ Files/NSIS/Plugins
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include "ExDLL/exdll.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
#include <windows.h>
|
||||
#include "ExDLL/exdll.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
std::string const subst(std::string const & a,
|
||||
@ -53,18 +60,18 @@ std::string const subst(std::string const & a,
|
||||
std::string const basename(std::string const & path)
|
||||
{
|
||||
std::string::size_type const final_slash = path.find_last_of('\\');
|
||||
if (final_slash == std::string::npos)
|
||||
return path;
|
||||
return path.substr(final_slash+1);
|
||||
return (final_slash == std::string::npos) ?
|
||||
path :
|
||||
path.substr(final_slash+1);
|
||||
}
|
||||
|
||||
|
||||
std::string const dirname(std::string const & path)
|
||||
{
|
||||
std::string::size_type const final_slash = path.find_last_of('\\');
|
||||
if (final_slash == std::string::npos)
|
||||
return std::string();
|
||||
return path.substr(0, final_slash);
|
||||
return (final_slash == std::string::npos) ?
|
||||
std::string() :
|
||||
path.substr(0, final_slash);
|
||||
}
|
||||
|
||||
|
||||
@ -76,6 +83,14 @@ std::string const pop_from_stack()
|
||||
}
|
||||
|
||||
|
||||
void push_to_stack(int data)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << data;
|
||||
pushstring(os.str().c_str());
|
||||
}
|
||||
|
||||
|
||||
std::list<std::string> const tokenize(std::string data,
|
||||
char const separator)
|
||||
{
|
||||
@ -192,29 +207,15 @@ bool insert_path_prefix(std::string & data,
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// Inserts code into "configure" to output "path_prefix" to lyxrc.defaults.
|
||||
extern "C"
|
||||
void __declspec(dllexport) set_path_prefix(HWND hwndParent, int string_size, char *variables, stack_t **stacktop)
|
||||
// \returns 0 on success, -1 on failure
|
||||
int set_path_prefix(std::string const & configure_file,
|
||||
std::string const & path_prefix)
|
||||
{
|
||||
EXDLL_INIT();
|
||||
|
||||
std::string const configure_file = pop_from_stack();
|
||||
std::string const path_prefix = pop_from_stack();
|
||||
|
||||
std::ifstream ifs(configure_file.c_str());
|
||||
if (!ifs) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
if (!ifs)
|
||||
return -1;
|
||||
|
||||
std::istreambuf_iterator<char> const begin_ifs(ifs);
|
||||
std::istreambuf_iterator<char> const end_ifs;
|
||||
@ -226,77 +227,184 @@ void __declspec(dllexport) set_path_prefix(HWND hwndParent, int string_size, cha
|
||||
std::string::size_type const prefix_pos =
|
||||
configure_data.find("path_prefix");
|
||||
if (prefix_pos != std::string::npos) {
|
||||
if (!replace_path_prefix(configure_data, prefix_pos, path_prefix)) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
if (!replace_path_prefix(configure_data, prefix_pos, path_prefix))
|
||||
return -1;
|
||||
} else {
|
||||
std::string::size_type const xfonts_pos =
|
||||
configure_data.find("X FONTS");
|
||||
|
||||
if (xfonts_pos == std::string::npos) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
if (xfonts_pos == std::string::npos)
|
||||
return -1;
|
||||
|
||||
if (!insert_path_prefix(configure_data, xfonts_pos, path_prefix)) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
if (!insert_path_prefix(configure_data, xfonts_pos, path_prefix))
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::ofstream ofs(configure_file.c_str());
|
||||
if (!ofs) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
if (!ofs)
|
||||
return -1;
|
||||
|
||||
ofs << configure_data;
|
||||
pushstring("0");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool write_bat(std::ostream & os, std::string const & quoted_exe)
|
||||
{
|
||||
os << "if \"%~1\" == \"~1\" goto win95\n"
|
||||
<< quoted_exe << " %*\n"
|
||||
<< "goto end\n"
|
||||
<< ":win95\n"
|
||||
<< quoted_exe << " %1 %2 %3 %4 %5 %6 %7 %8 %9\n"
|
||||
<< ":end\n";
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
// Creates the files lyx.bat and reLyX.bat in the LyX\bin folder.
|
||||
// \returns 0 on success, -1 on failure
|
||||
int create_bat_files(std::string const & bin_dir, std::string const & lang)
|
||||
{
|
||||
std::string const lyx_bat_file = bin_dir + "\\lyx.bat";
|
||||
std::ofstream lyx_bat(lyx_bat_file.c_str());
|
||||
if (!lyx_bat)
|
||||
return -1;
|
||||
|
||||
lyx_bat << "@echo off\n"
|
||||
<< "if \"%LANG%\"==\"\" SET LANG=" << lang << "\n";
|
||||
|
||||
std::string const lyx_exe_file = bin_dir + "\\lyx.exe";
|
||||
if (!write_bat(lyx_bat, "start \"LyX\" \"" + lyx_exe_file + "\""))
|
||||
return -1;
|
||||
|
||||
std::string const relyx_bat_file = bin_dir + "\\reLyX.bat";
|
||||
std::ofstream relyx_bat(relyx_bat_file.c_str());
|
||||
if (!relyx_bat)
|
||||
return -1;
|
||||
|
||||
std::string relyx_file = bin_dir + "\\reLyX";
|
||||
std::string relyx = "perl.exe \"" + relyx_file + "\"";
|
||||
if (!write_bat(relyx_bat, "perl.exe \"" + relyx_file + "\""))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Runs "sh configure" to generate things like lyxrc.defaults.
|
||||
// \returns 0 on success, -1 on failure
|
||||
int run_configure(std::string const & abs_configure_file,
|
||||
std::string const & path_prefix)
|
||||
{
|
||||
std::string const configure_dir = dirname(abs_configure_file);
|
||||
std::string const configure_file = basename(abs_configure_file);
|
||||
|
||||
if (configure_dir.empty())
|
||||
return -1;
|
||||
|
||||
if (SetCurrentDirectory(configure_dir.c_str()) == 0)
|
||||
return -1;
|
||||
|
||||
char path_orig[10*MAX_PATH];
|
||||
if (GetEnvironmentVariable("PATH", path_orig, 10*MAX_PATH) == 0)
|
||||
return -1;
|
||||
|
||||
std::string const path = path_prefix + ';' + path_orig;
|
||||
if (SetEnvironmentVariable("PATH", path.c_str()) == 0)
|
||||
return -1;
|
||||
|
||||
// Even "start /WAIT /B sh.exe configure" returns
|
||||
// before the script is done, so just invoke "sh" directly.
|
||||
std::string const command = std::string("sh.exe ") + configure_file;
|
||||
if (system(command.c_str()) != 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
//===========================================//
|
||||
// //
|
||||
// Below is the public interface to the .dll //
|
||||
// //
|
||||
//===========================================//
|
||||
|
||||
BOOL WINAPI DllMain(HANDLE hInst,
|
||||
ULONG ul_reason_for_call,
|
||||
LPVOID lpReserved)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// Inserts code into "configure" to output "path_prefix" to lyxrc.defaults.
|
||||
extern "C"
|
||||
void __declspec(dllexport) set_path_prefix(HWND hwndParent,
|
||||
int string_size,
|
||||
char * variables,
|
||||
stack_t ** stacktop)
|
||||
{
|
||||
EXDLL_INIT();
|
||||
|
||||
std::string const configure_file = pop_from_stack();
|
||||
std::string const path_prefix = pop_from_stack();
|
||||
|
||||
int const result = set_path_prefix(configure_file, path_prefix);
|
||||
push_to_stack(result);
|
||||
}
|
||||
|
||||
|
||||
// Creates the files lyx.bat and reLyX.bat in the LyX\bin folder.
|
||||
extern "C"
|
||||
void __declspec(dllexport) create_bat_files(HWND hwndParent,
|
||||
int string_size,
|
||||
char * variables,
|
||||
stack_t ** stacktop)
|
||||
{
|
||||
EXDLL_INIT();
|
||||
|
||||
std::string const bin_dir = pop_from_stack();
|
||||
std::string const lang = pop_from_stack();
|
||||
|
||||
int const result = create_bat_files(bin_dir, lang);
|
||||
push_to_stack(result);
|
||||
}
|
||||
|
||||
|
||||
// Runs "sh configure" to generate things like lyxrc.defaults.
|
||||
extern "C"
|
||||
void __declspec(dllexport) run_configure(HWND hwndParent, int string_size, char *variables, stack_t **stacktop)
|
||||
void __declspec(dllexport) run_configure(HWND hwndParent,
|
||||
int string_size,
|
||||
char * variables,
|
||||
stack_t ** stacktop)
|
||||
{
|
||||
EXDLL_INIT();
|
||||
|
||||
std::string configure_file = pop_from_stack();
|
||||
std::string const configure_file = pop_from_stack();
|
||||
std::string const path_prefix = pop_from_stack();
|
||||
|
||||
std::string const configure_dir = dirname(configure_file);
|
||||
configure_file = basename(configure_file);
|
||||
|
||||
if (configure_dir.empty()) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
|
||||
if (SetCurrentDirectory(configure_dir.c_str()) == 0) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
|
||||
char path_orig[10*MAX_PATH];
|
||||
if (GetEnvironmentVariable("PATH", path_orig, 10*MAX_PATH) == 0) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
|
||||
std::string const path = path_prefix + ';' + path_orig;
|
||||
if (SetEnvironmentVariable("PATH", path.c_str()) == 0) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
|
||||
// Even "start /WAIT /B sh.exe configure" returns
|
||||
// before the script is done, so just invoke "sh" directly.
|
||||
std::string const command = std::string("sh.exe ") + configure_file;
|
||||
if (system(command.c_str()) != 0) {
|
||||
pushstring("-1");
|
||||
return;
|
||||
}
|
||||
|
||||
pushstring("0");
|
||||
int const result = run_configure(configure_file, path_prefix);
|
||||
push_to_stack(result);
|
||||
}
|
||||
|
||||
|
||||
// Set an environment variable
|
||||
extern "C"
|
||||
void __declspec(dllexport) set_env(HWND hwndParent,
|
||||
int string_size,
|
||||
char * variables,
|
||||
stack_t ** stacktop)
|
||||
{
|
||||
EXDLL_INIT();
|
||||
|
||||
std::string const var_name = pop_from_stack();
|
||||
std::string const var_value = pop_from_stack();
|
||||
|
||||
// Function returns a nonzero value on success.
|
||||
int const result =
|
||||
SetEnvironmentVariableA(var_name.c_str(), var_value.c_str()) ?
|
||||
0 : -1;
|
||||
|
||||
push_to_stack(result);
|
||||
}
|
@ -7,6 +7,7 @@
|
||||
; http://www.lyx.org/about/license.php3
|
||||
|
||||
; Author Angus Leeming
|
||||
; Author Uwe Stöhr
|
||||
; Full author contact details are available in file CREDITS or copy at
|
||||
; http://www.lyx.org/about/credits.php
|
||||
|
||||
@ -27,8 +28,9 @@ SetCompressor lzma
|
||||
!define PRODUCT_NAME "LyX"
|
||||
!define PRODUCT_VERSION "1.3.6"
|
||||
!define PRODUCT_LICENSE_FILE "..\..\..\..\COPYING"
|
||||
!define PRODUCT_SOURCEDIR "J:\Programs\LyX"
|
||||
!define PRODUCT_SOURCEDIR "..\..\..\..\build\installprefix"
|
||||
!define PRODUCT_EXE "$INSTDIR\bin\lyx.exe"
|
||||
!define PRODUCT_BAT "$INSTDIR\bin\lyx.bat"
|
||||
!define PRODUCT_EXT ".lyx"
|
||||
!define PRODUCT_MIME_TYPE "application/lyx"
|
||||
!define PRODUCT_UNINSTALL_EXE "$INSTDIR\uninstall.exe"
|
||||
@ -55,20 +57,7 @@ InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
|
||||
!include "StrFunc.nsh"
|
||||
!include "strtrim.nsh"
|
||||
!include "download.nsh"
|
||||
|
||||
; Declare used functions
|
||||
${StrLoc}
|
||||
${StrNSISToIO}
|
||||
${StrRep}
|
||||
${StrTrim}
|
||||
${StrLTrim}
|
||||
${StrRTrim}
|
||||
${StrRTrimChar}
|
||||
${ReadDownloadValues}
|
||||
${EnableBrowseControls}
|
||||
${SearchRegistry}
|
||||
${DownloadEnter}
|
||||
${DownloadLeave}
|
||||
!include "lyx_utils.nsh"
|
||||
|
||||
; Grabbed from
|
||||
; http://nsis.sourceforge.net/archive/viewpage.php?pageid=275
|
||||
@ -80,6 +69,24 @@ ${DownloadLeave}
|
||||
; in the Registry.
|
||||
!include "abi_util_fileassoc.nsh"
|
||||
|
||||
;--------------------------------
|
||||
; Declare used functions
|
||||
|
||||
${StrStrAdv}
|
||||
${StrLoc}
|
||||
${StrNSISToIO}
|
||||
${StrRep}
|
||||
${StrTok}
|
||||
${StrTrim}
|
||||
${StrLTrim}
|
||||
${StrRTrim}
|
||||
${StrRTrimChar}
|
||||
${ReadDownloadValues}
|
||||
${EnableBrowseControls}
|
||||
${SearchRegistry}
|
||||
${DownloadEnter}
|
||||
${DownloadLeave}
|
||||
|
||||
;--------------------------------
|
||||
; Variables
|
||||
|
||||
@ -105,6 +112,12 @@ Var DoNotRequireImageMagick
|
||||
Var ImageMagickPath
|
||||
Var DownloadImageMagick
|
||||
|
||||
Var PDFViewerPath
|
||||
Var PDFViewerProg
|
||||
|
||||
Var PSViewerPath
|
||||
Var PSViewerProg
|
||||
|
||||
Var DoNotInstallLyX
|
||||
Var PathPrefix
|
||||
|
||||
@ -113,6 +126,9 @@ Var CreateDesktopIcon
|
||||
Var StartmenuFolder
|
||||
Var ProductRootKey
|
||||
|
||||
Var LangName
|
||||
Var LangCode
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Remember the installer language
|
||||
@ -141,6 +157,9 @@ Page custom SummariseDownloads SummariseDownloads_LeaveFunction
|
||||
; Specify the installation directory.
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
|
||||
; Specify LyX's menu language.
|
||||
Page custom SelectMenuLanguage SelectMenuLanguage_LeaveFunction
|
||||
|
||||
; Define which components to install.
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
|
||||
@ -153,9 +172,10 @@ Page custom SummariseDownloads SummariseDownloads_LeaveFunction
|
||||
; Watch the components being installed.
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!define MUI_FINISHPAGE_RUN
|
||||
!define MUI_FINISHPAGE_TEXT "$(FinishPageMessage)"
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageRun)"
|
||||
!define MUI_FINISHPAGE_RUN "${PRODUCT_EXE}"
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchProduct"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
; The uninstaller.
|
||||
@ -169,6 +189,7 @@ Page custom SummariseDownloads SummariseDownloads_LeaveFunction
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "Swedish"
|
||||
|
||||
@ -177,6 +198,7 @@ Page custom SummariseDownloads SummariseDownloads_LeaveFunction
|
||||
!include "lyx_languages\dutch.nsh"
|
||||
!include "lyx_languages\french.nsh"
|
||||
!include "lyx_languages\german.nsh"
|
||||
!include "lyx_languages\italian.nsh"
|
||||
!include "lyx_languages\spanish.nsh"
|
||||
!include "lyx_languages\swedish.nsh"
|
||||
|
||||
@ -189,9 +211,11 @@ LicenseData "$(LyXLicenseData)"
|
||||
; Keep these lines before any File command
|
||||
; Only for solid compression (by default, solid compression
|
||||
; is enabled for BZIP2 and LZMA)
|
||||
ReserveFile "ioDownload.ini"
|
||||
ReserveFile "ioSummary.ini"
|
||||
ReserveFile "io_download.ini"
|
||||
ReserveFile "io_summary.ini"
|
||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||
ReserveFile "io_ui_language.ini"
|
||||
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
|
||||
|
||||
;--------------------------------
|
||||
|
||||
@ -216,22 +240,29 @@ SectionEnd
|
||||
; Sections are entered in order, so the settings above are all
|
||||
; available to SecInstallation
|
||||
Section "-Installation actions" SecInstallation
|
||||
SetOverwrite off
|
||||
SetOverwrite on
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "${PRODUCT_SOURCEDIR}\Resources"
|
||||
File /r "${PRODUCT_SOURCEDIR}\bin"
|
||||
|
||||
${if} "$PathPrefix" != ""
|
||||
lyx_path_prefix::set_path_prefix "$INSTDIR\Resources\lyx\configure" "$PathPrefix"
|
||||
lyx_configure::set_path_prefix "$INSTDIR\Resources\lyx\configure" "$PathPrefix"
|
||||
Pop $0
|
||||
${if} $0 != 0
|
||||
MessageBox MB_OK "$(ModifyingConfigureFailed)"
|
||||
${endif}
|
||||
lyx_path_prefix::run_configure "$INSTDIR\Resources\lyx\configure" "$PathPrefix"
|
||||
Pop $0
|
||||
${if} $0 != 0
|
||||
MessageBox MB_OK "$(RunConfigureFailed)"
|
||||
${endif}
|
||||
${endif}
|
||||
|
||||
lyx_configure::create_bat_files "$INSTDIR\bin" "$LangCode"
|
||||
Pop $0
|
||||
${if} $0 != 0
|
||||
MessageBox MB_OK "$(CreateCmdFilesFailed)"
|
||||
${endif}
|
||||
|
||||
lyx_configure::run_configure "$INSTDIR\Resources\lyx\configure" "$PathPrefix"
|
||||
Pop $0
|
||||
${if} $0 != 0
|
||||
MessageBox MB_OK "$(RunConfigureFailed)"
|
||||
${endif}
|
||||
|
||||
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "${PRODUCT_EXE}"
|
||||
@ -243,11 +274,11 @@ Section "-Installation actions" SecInstallation
|
||||
WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "StartMenu" "$SMPROGRAMS\$StartmenuFolder"
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\$StartmenuFolder"
|
||||
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\${PRODUCT_NAME}.lnk" "${PRODUCT_EXE}"
|
||||
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\${PRODUCT_NAME}.lnk" "${PRODUCT_BAT}" "" "${PRODUCT_EXE}"
|
||||
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Uninstall.lnk" "${PRODUCT_UNINSTALL_EXE}"
|
||||
|
||||
${if} $CreateDesktopIcon == "true"
|
||||
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "${PRODUCT_EXE}"
|
||||
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "${PRODUCT_BAT}" "" "${PRODUCT_EXE}"
|
||||
${endif}
|
||||
|
||||
${if} $CreateFileAssociations == "true"
|
||||
@ -256,7 +287,7 @@ Section "-Installation actions" SecInstallation
|
||||
"${PRODUCT_NAME}" \
|
||||
"${PRODUCT_NAME} Document" \
|
||||
"${PRODUCT_EXE},1" \
|
||||
"${PRODUCT_EXE}"
|
||||
"${PRODUCT_BAT}"
|
||||
|
||||
${CreateFileAssociation} "${PRODUCT_EXT}" "${PRODUCT_NAME}" "${PRODUCT_MIME_TYPE}"
|
||||
${endif}
|
||||
@ -280,8 +311,9 @@ SectionEnd
|
||||
Function .onInit
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioDownload.ini"
|
||||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioSummary.ini"
|
||||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "io_download.ini"
|
||||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "io_summary.ini"
|
||||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "io_ui_language.ini"
|
||||
|
||||
; Default settings
|
||||
; These can be reset to "all" in section SecAllUsers.
|
||||
@ -316,13 +348,30 @@ Function .onInit
|
||||
Call SearchPerl
|
||||
Call SearchGhostscript
|
||||
Call SearchImageMagick
|
||||
Call SearchPDFViewer
|
||||
Call SearchPSViewer
|
||||
|
||||
ClearErrors
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
Function LaunchProduct
|
||||
lyx_configure::set_env LANG $LangCode
|
||||
Exec ${PRODUCT_EXE}
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $MinSYSPath variable.
|
||||
Function SearchMinSYS
|
||||
; This function manipulates the registers $0-$3,
|
||||
; so push their current content onto the stack.
|
||||
Push $0
|
||||
Push $1
|
||||
Push $2
|
||||
Push $3
|
||||
|
||||
; Search the registry for the MinSYS uninstaller.
|
||||
; If successful, put its location in $2.
|
||||
StrCpy $3 "Software\Microsoft\Windows\CurrentVersion\Uninstall"
|
||||
@ -351,6 +400,12 @@ Function SearchMinSYS
|
||||
"Inno Setup: App Path" \
|
||||
"" \
|
||||
"\bin"
|
||||
|
||||
; Return the $0, $1, $2 and $2 registers to their original state
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
Function DownloadMinSYS
|
||||
@ -366,6 +421,10 @@ Function DownloadMinSYS
|
||||
FunctionEnd
|
||||
|
||||
Function DownloadMinSYS_LeaveFunction
|
||||
; This function manipulates the $0 register
|
||||
; so push its current content onto the stack.
|
||||
Push $0
|
||||
|
||||
${DownloadLeave} \
|
||||
$0 \
|
||||
$DownloadMinSYS \
|
||||
@ -374,10 +433,14 @@ Function DownloadMinSYS_LeaveFunction
|
||||
"$(EnterMinSYSFolder)" \
|
||||
"sh.exe" \
|
||||
"$(InvalidMinSYSFolder)"
|
||||
|
||||
; Return the $0 register to its original state
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $PythonPath variable.
|
||||
Function SearchPython
|
||||
${SearchRegistry} \
|
||||
$PythonPath \
|
||||
@ -400,6 +463,10 @@ Function DownloadPython
|
||||
FunctionEnd
|
||||
|
||||
Function DownloadPython_LeaveFunction
|
||||
; This function manipulates the $0 register
|
||||
; so push its current content onto the stack.
|
||||
Push $0
|
||||
|
||||
${DownloadLeave} \
|
||||
$0 \
|
||||
$DownloadPython \
|
||||
@ -408,10 +475,14 @@ Function DownloadPython_LeaveFunction
|
||||
"$(EnterPythonFolder)" \
|
||||
"Python.exe" \
|
||||
"$(InvalidPythonFolder)"
|
||||
|
||||
; Return the $0 register to its original state
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $MiKTeXPath variable.
|
||||
Function SearchMiKTeX
|
||||
${SearchRegistry} \
|
||||
$MiKTeXPath \
|
||||
@ -447,6 +518,7 @@ FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $PerlPath variable.
|
||||
Function SearchPerl
|
||||
${SearchRegistry} \
|
||||
$PerlPath \
|
||||
@ -482,13 +554,24 @@ FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $GhostscriptPath variable.
|
||||
Function SearchGhostscript
|
||||
; This function manipulates the $0 and $1 registers,
|
||||
; so push their current content onto the stack.
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
; Find which version of ghostscript, if any, is installed.
|
||||
; Store this value in $0.
|
||||
StrCpy $0 ""
|
||||
EnumRegKey $1 HKLM "Software\AFPL Ghostscript" 0
|
||||
${if} $1 != ""
|
||||
StrCpy $0 "Software\AFPL Ghostscript\$1"
|
||||
${else}
|
||||
StrCpy $0 ""
|
||||
EnumRegKey $1 HKLM "Software\GPL Ghostscript" 0
|
||||
${if} $1 != ""
|
||||
StrCpy $0 "Software\GPL Ghostscript\$1"
|
||||
${endif}
|
||||
${endif}
|
||||
|
||||
${SearchRegistry} \
|
||||
@ -497,6 +580,10 @@ Function SearchGhostscript
|
||||
"GS_DLL" \
|
||||
"\gsdll32.dll" \
|
||||
""
|
||||
|
||||
; Return the $0 and $1 registers to their original states
|
||||
Pop $1
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
Function DownloadGhostscript
|
||||
@ -505,8 +592,16 @@ Function DownloadGhostscript
|
||||
|
||||
; Find which version of ghostscript, if any, is installed.
|
||||
EnumRegKey $1 HKLM "Software\AFPL Ghostscript" 0
|
||||
${if} $1 == ""
|
||||
EnumRegKey $1 HKLM "Software\GPL Ghostscript" 0
|
||||
StrCpy $2 "True"
|
||||
${endif}
|
||||
${if} $1 != ""
|
||||
${if} $2 == "True"
|
||||
StrCpy $0 "Software\GPL Ghostscript\$1"
|
||||
${else}
|
||||
StrCpy $0 "Software\AFPL Ghostscript\$1"
|
||||
${endif}
|
||||
${else}
|
||||
StrCpy $0 ""
|
||||
${endif}
|
||||
@ -533,6 +628,7 @@ FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $ImageMagickPath variable.
|
||||
Function SearchImageMagick
|
||||
${SearchRegistry} \
|
||||
$ImageMagickPath \
|
||||
@ -568,6 +664,58 @@ FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
; Sets the value of the global $PDFViewerPath and $PDFViewerProg variables.
|
||||
Function SearchPDFViewer
|
||||
StrCpy $PDFViewerPath ""
|
||||
!insertmacro GetFileExtProg $PDFViewerPath $PDFViewerProg ".pdf" "a"
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
Function SearchPSViewer
|
||||
; This function manipulates the $0 and $1 registers,
|
||||
; so push their current content onto the stack.
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
StrCpy $PSViewerPath ""
|
||||
StrCpy $0 ""
|
||||
StrCpy $1 ""
|
||||
!insertmacro GetFileExtProg $PSViewerPath $PSViewerProg ".ps" "a"
|
||||
${if} $PSViewerPath != ""
|
||||
StrCpy $0 $PSViewerPath
|
||||
StrCpy $0 $0 "" -8
|
||||
${endif}
|
||||
${if} $0 == "Distillr"
|
||||
!insertmacro GetFileExtProg $0 $1 ".ps" "b"
|
||||
${if} $1 != ""
|
||||
StrCpy $PSViewerPath $0
|
||||
StrCpy $PSViewerProg $1
|
||||
${endif}
|
||||
${endif}
|
||||
|
||||
; Failed to find anything that way. Try another.
|
||||
${if} $PSViewerPath == ""
|
||||
ReadRegStr $PSViewerProg HKCR "psfile\shell\open\command" ""
|
||||
; Extract the first quoted word.
|
||||
${StrTok} $0 "$PSViewerProg" '"' '1' '0'
|
||||
${if} $0 != ""
|
||||
StrCpy $PSViewerProg $0
|
||||
${endif}
|
||||
|
||||
${StrTrim} $PSViewerProg "$PSViewerProg"
|
||||
; Split into <path,exe> pair
|
||||
${StrStrAdv} $PSViewerPath $PSViewerProg "\" "<" "<" "0" "0" "0"
|
||||
${StrStrAdv} $PSViewerProg $PSViewerProg "\" "<" ">" "0" "0" "0"
|
||||
${endif}
|
||||
|
||||
; Return the $0 and $1 registers to their original states
|
||||
Pop $1
|
||||
Pop $0
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
Function SummariseDownloads
|
||||
|
||||
StrCpy $PathPrefix ""
|
||||
@ -599,15 +747,16 @@ Function SummariseDownloads
|
||||
IntOp $DoNotInstallLyX $DoNotInstallLyX + $DownloadImageMagick
|
||||
|
||||
${if} "$DoNotInstallLyX" == 1
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSummary.ini" "Field 1" "Text" "$(SummaryPleaseInstall)"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_summary.ini" "Field 1" "Text" "$(SummaryPleaseInstall)"
|
||||
${else}
|
||||
${StrNSISToIO} $0 '$PathPrefix'
|
||||
${StrRep} $0 "$0" ";" "\r\n"
|
||||
StrCpy $0 "$(SummaryPathPrefix)\r\n\r\n$0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioSummary.ini" "Field 1" "Text" "$0"
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_summary.ini" "Field 1" "Text" "$0"
|
||||
${endif}
|
||||
|
||||
!insertmacro MUI_HEADER_TEXT "$(SummaryTitle)" ""
|
||||
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioSummary.ini"
|
||||
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "io_summary.ini"
|
||||
FunctionEnd
|
||||
|
||||
Function SummariseDownloads_LeaveFunction
|
||||
@ -616,6 +765,30 @@ Function SummariseDownloads_LeaveFunction
|
||||
${endif}
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
Function SelectMenuLanguage
|
||||
StrCpy $LangName ""
|
||||
|
||||
;tranlate NSIS's language code to the language name; macro from lyx_utils.nsh
|
||||
!insertmacro TranslateLangCode $LangName $Language
|
||||
|
||||
!insertmacro MUI_INSTALLOPTIONS_WRITE "io_ui_language.ini" "Field 2" "State" "$LangName"
|
||||
|
||||
!insertmacro MUI_HEADER_TEXT "$(UILangageTitle)" "$(UILangageDescription)"
|
||||
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "io_ui_language.ini"
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
|
||||
Function SelectMenuLanguage_LeaveFunction
|
||||
!insertmacro MUI_INSTALLOPTIONS_READ $LangName "io_ui_language.ini" "Field 2" "State"
|
||||
|
||||
;Get the language code; macro from lyx_utils.nsh
|
||||
StrCpy $LangCode ""
|
||||
!insertmacro GetLangCode $LangCode $LangName
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
; The Uninstaller
|
||||
|
||||
|
@ -18,6 +18,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Opret association mellem LyX o
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "Et ${PRODUCT_NAME} ikon på skrivebordet"
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Forsøget på at indstille 'path_prefix' i konfigurationen mislykkedes"
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Mislykket forsøg på at afvikle konfigurations-scriptet"
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Tillykke!! LyX er installeret."
|
||||
@ -71,6 +72,9 @@ LangString SummaryTitle "${LYX_LANG}" "Software - sammendrag"
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Installer de filer du har downloaded, og kør så LyX's installationsprogram igen."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "Jeg tilføjer en 'path_prefix' streng til 'lyxrc.defaults' som indeholder:"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "Kunne ikke finde $(^Name) i registreringsdatabsen$\r$\nGenvejene på skrivebordet og i Start-menuen bliver ikke fjernet"
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Beklager! Du skal have administrator-rettigheder$\r$\nfor at afinstallere$(^Name)."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Er du sikker på, at du vil slette $(^Name) og alle tilhørende komponenter?"
|
||||
|
@ -18,6 +18,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Associeer het LyX programma me
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "Een ${PRODUCT_NAME} pictogram op het Bureaublad."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Mislukte poging om 'path_prefix' te registreren tijdens de configuratie"
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Mislukte configuratie poging"
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Gefeliciteerd! LyX is succesvol geinstalleerd."
|
||||
@ -71,6 +72,9 @@ LangString SummaryTitle "${LYX_LANG}" "Software samenvatting"
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Installeer de opgehaalde bestanden en start vervolgens het LyX installatie programma nogmaals om de installatie af te ronden."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "Ik voeg een 'path_prefix' tekst aan 'lyxrc.defaults' toe met:"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "$(^Name) is niet gevonden in het Windows register$\r$\nSnelkoppelingen op het Bureaublad en in het Start Menu worden niet verwijderd."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Sorry! U heeft systeembeheer rechten nodig$\r$\nom $(^Name) te verwijderen."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Weet u zeker dat u $(^Name) en alle componenten volledig wil verwijderen van deze computer?"
|
||||
|
@ -18,6 +18,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Create associations between th
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "A ${PRODUCT_NAME} icon on the desktop."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Failed attempting to set 'path_prefix' in the configure script"
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Failed attempting to execute the configure script"
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Congratulations! LyX has been installed successfully."
|
||||
@ -61,7 +62,7 @@ LangString ImageMagickDownloadLabel "${LYX_LANG}" "&Download ImageMagick"
|
||||
LangString ImageMagickFolderLabel "${LYX_LANG}" "&Folder containing convert.exe"
|
||||
|
||||
LangString GhostscriptHeader "${LYX_LANG}" "Ghostscript"
|
||||
LangString GhostscriptDescription "${LYX_LANG}" "Ghostscript (http://www.cs.wisc.edu/~ghost/) is used to convert images to/from PostScript."
|
||||
LangString GhostscriptDescription "${LYX_LANG}" "Ghostscript (www.cs.wisc.edu/~ghost/) is used to convert images to/from PostScript."
|
||||
LangString EnterGhostscriptFolder "${LYX_LANG}" "Please input the path to the folder containing gswin32c.exe"
|
||||
LangString InvalidGhostscriptFolder "${LYX_LANG}" "Unable to find gswin32c.exe"
|
||||
LangString GhostscriptDownloadLabel "${LYX_LANG}" "&Download Ghostscript"
|
||||
@ -71,6 +72,9 @@ LangString SummaryTitle "${LYX_LANG}" "Software summary"
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Please install your downloaded files and then run LyX's installer once again."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "I shall add a 'path_prefix' string to 'lyxrc.defaults' containing:"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "Unable to find $(^Name) in the registry$\r$\nShortcuts on the desktop and in the Start Menu will not be removed."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Sorry! You must have administrator privileges$\r$\nto uninstall $(^Name)."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Are you sure you want to completely remove $(^Name) and all of its components?"
|
||||
|
@ -19,6 +19,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Cr
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "Une icône ${PRODUCT_NAME} sur le bureau."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Échec de l'allocation 'path_prefix' lors de la configuration."
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Échec de la tentative de configuration initiale de LyX."
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Félicitations ! LyX est installé avec succès."
|
||||
@ -72,6 +73,9 @@ LangString SummaryTitle "${LYX_LANG}" "R
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Merci d'installer les fichiers téléchargés, puis d'exécuter de nouveau l'installation de LyX."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "Durant l'installation, une chaîne de caractères 'path_prefix' sera ajoutée à 'lyxrc.defaults', elle contiendra :"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "$(^Name) introuvable dans le base des registres. $\r$\nLes raccourcis sur le bureau et dans le menu de démarrage ne seront pas supprimés."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Désolé ! Vous devez avoir les droits d'administration$\r$\npour installer$(^Name)."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Êtes vous sûr(e) de vouloir supprimer complètement $(^Name) et tous ses composants ?"
|
||||
|
@ -18,6 +18,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Vern
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "Verknüpfung zu ${PRODUCT_NAME} auf dem Desktop."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Der 'path_prefix' (Liste mit Programmpfaden) konnte nicht im Konfigurationsskript gesetzt werden."
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Konnte das Konfigurationsskript nicht ausführen."
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Glückwunsch! LyX wurde erfolgreich installiert."
|
||||
@ -71,6 +72,9 @@ LangString SummaryTitle "${LYX_LANG}" "Software Zusammenfassung"
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Bitte installieren sie die heruntergeladenen Programme und starten dann ${PRODUCT_NAME}'s Installer nochmal."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "Die Liste mit den Programmpfaden, der so genannte 'path_prefix' wird zur Datei 'lyxrc.defaults' hinzugefügt:"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "Kann $(^Name) nicht in der Registry finden. $\r$\n Desktopsymbole und Einträge im Startmenü können nicht entfernt werden."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Sie benötigen Administratorrechte $\r$\n um $(^Name) zu deinstallieren."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Sind Sie sicher, dass sie $(^Name) und all seine Komponenten deinstalliern möchten?"
|
||||
|
@ -0,0 +1,85 @@
|
||||
!ifndef _LYX_LANGUAGES_ITALIAN_NSH_
|
||||
!define _LYX_LANGUAGES_ITALIAN_NSH_
|
||||
|
||||
!ifdef LYX_LANG
|
||||
!undef LYX_LANG
|
||||
!endif
|
||||
!define LYX_LANG ${LANG_ITALIAN}
|
||||
|
||||
LicenseLangString LyXLicenseData ${LYX_LANG} "${PRODUCT_LICENSE_FILE}"
|
||||
|
||||
LangString SecAllUsersTitle "${LYX_LANG}" "Installazione per tutti gli utenti?"
|
||||
LangString SecFileAssocTitle "${LYX_LANG}" "Associazioni dei file"
|
||||
LangString SecDesktopTitle "${LYX_LANG}" "Icona sul Desktop"
|
||||
|
||||
LangString SecCoreDescription "${LYX_LANG}" "I file di ${PRODUCT_NAME}."
|
||||
LangString SecAllUsersDescription "${LYX_LANG}" "Installazione per tutti gli utenti o solo per l'utente attuale. (Sono richiesti privilegi da amministratore.)"
|
||||
LangString SecFileAssocDescription "${LYX_LANG}" "Crea le associazioni tra il programma e le estensioni .lyx."
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "Icona ${PRODUCT_NAME} sul desktop."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Fallito tentativo di aggiornare 'path_prefix' nello script di configurazione"
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Fallito tentativo di eseguire lo script di configurazione"
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Congratulazioni! LyX è stato installato con successo."
|
||||
LangString FinishPageRun "${LYX_LANG}" "Lancia LyX"
|
||||
|
||||
LangString DownloadPageField2 "${LYX_LANG}" "&Non installare"
|
||||
|
||||
LangString MinSYSHeader "${LYX_LANG}" "MinSYS"
|
||||
LangString MinSYSDescription "${LYX_LANG}" "MinSYS fornisce un ambiente unix minimale (www.mingw.org/msys.shtml) richiesto da ${PRODUCT_NAME} per far girare un certo numero di file script."
|
||||
LangString EnterMinSYSFolder "${LYX_LANG}" "Inserite il percorso alla cartella contenente sh.exe"
|
||||
LangString InvalidMinSYSFolder "${LYX_LANG}" "Non riesco a trovare sh.exe"
|
||||
LangString MinSYSDownloadLabel "${LYX_LANG}" "&Scarica MinSYS"
|
||||
LangString MinSYSFolderLabel "${LYX_LANG}" "&Cartella contenente sh.exe"
|
||||
|
||||
LangString PythonHeader "${LYX_LANG}" "Python"
|
||||
LangString PythonDescription "${LYX_LANG}" "L'interprete Python (www.python.org) deve essere installato, altrimenti ${PRODUCT_NAME} non sarà in grado di far girare un certo numero di file script."
|
||||
LangString EnterPythonFolder "${LYX_LANG}" "Inserite il percorso alla cartella contenente Python.exe"
|
||||
LangString InvalidPythonFolder "${LYX_LANG}" "Non riesco a trovare Python.exe"
|
||||
LangString PythonDownloadLabel "${LYX_LANG}" "&carica Python"
|
||||
LangString PythonFolderLabel "${LYX_LANG}" "&Cartella contenente Python.exe"
|
||||
|
||||
LangString MiKTeXHeader "${LYX_LANG}" "MiKTeX"
|
||||
LangString MiKTeXDescription "${LYX_LANG}" "MiKTeX (www.miktex.org) è un'aggiornata implementazione di TeX per Windows."
|
||||
LangString EnterMiKTeXFolder "${LYX_LANG}" "Inserite il percorso alla cartella contenente latex.exe"
|
||||
LangString InvalidMiKTeXFolder "${LYX_LANG}" "Non riesco a trovare latex.exe"
|
||||
LangString MiKTeXDownloadLabel "${LYX_LANG}" "&Scarica MiKTeX"
|
||||
LangString MiKTeXFolderLabel "${LYX_LANG}" "&Cartella contenente latex.exe"
|
||||
|
||||
LangString PerlHeader "${LYX_LANG}" "Perl"
|
||||
LangString PerlDescription "${LYX_LANG}" "Se volete usare reLyX per convertire documenti LaTeX nel formato LyX, dovete installare Perl (www.perl.com)."
|
||||
LangString EnterPerlFolder "${LYX_LANG}" "Inserite il percorso alla cartella contenente Perl.exe"
|
||||
LangString InvalidPerlFolder "${LYX_LANG}" "Non riesco a trovare Perl.exe"
|
||||
LangString PerlDownloadLabel "${LYX_LANG}" "&Scarica Perl"
|
||||
LangString PerlFolderLabel "${LYX_LANG}" "&Cartella contenente perl.exe"
|
||||
|
||||
LangString ImageMagickHeader "${LYX_LANG}" "ImageMagick"
|
||||
LangString ImageMagickDescription "${LYX_LANG}" "I programmi forniti da ImageMagick (www.imagemagick.org/script/index.php) vengono usati per convertire file grafici da un certo formato ad un qualsiasi altro formato."
|
||||
LangString EnterImageMagickFolder "${LYX_LANG}" "Inserite il percorso alla cartella contenente convert.exe"
|
||||
LangString InvalidImageMagickFolder "${LYX_LANG}" "Non riesco a trovare convert.exe"
|
||||
LangString ImageMagickDownloadLabel "${LYX_LANG}" "&Scarica ImageMagick"
|
||||
LangString ImageMagickFolderLabel "${LYX_LANG}" "&Cartella contenente convert.exe"
|
||||
|
||||
LangString GhostscriptHeader "${LYX_LANG}" "Ghostscript"
|
||||
LangString GhostscriptDescription "${LYX_LANG}" "Ghostscript (http://www.cs.wisc.edu/~ghost/) viene usato per convertire immagini in/da PostScript."
|
||||
LangString EnterGhostscriptFolder "${LYX_LANG}" "Inserite il percorso alla cartella contenente gswin32c.exe"
|
||||
LangString InvalidGhostscriptFolder "${LYX_LANG}" "Non riesco a trovare gswin32c.exe"
|
||||
LangString GhostscriptDownloadLabel "${LYX_LANG}" "&Scarica Ghostscript"
|
||||
LangString GhostscriptFolderLabel "${LYX_LANG}" "&Cartella contenente gswin32c.exe"
|
||||
|
||||
LangString SummaryTitle "${LYX_LANG}" "Sommario del software"
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Siete pregati di installare i pacchetti scaricati e quindi lanciare nuovamente l'installazione di LyX."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "Verrà aggiunta una stringa 'path_prefix' al file 'lyxrc.defaults' contenente:"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "Non riesco a trovare $(^Name) nel registro$\r$\nI collegamenti sul desktop e nel menu Start non saranno rimossi."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Spiacente! Occorrono privilegi da amministratore$\r$\nper disinstallare $(^Name)."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Siete sicuri di voler rimuovere completamente $(^Name) e tutti i suoi componenti?"
|
||||
LangString UnRemoveSuccessLabel "${LYX_LANG}" "$(^Name) è stato rimosso con successo dal computer."
|
||||
|
||||
!undef LYX_LANG
|
||||
|
||||
!endif ; _LYX_LANGUAGES_ITALIAN_NSH_
|
@ -18,6 +18,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Asociar la extesi
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "Crear un icono de ${PRODUCT_NAME} en el escritorio."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Error al intentar añadir 'path_prefix' durante la ejecución del programa de configuración"
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Error al intentar ejecutar el programa de configuración"
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Enhorabuena! LyX ha sido instalado satisfactoriamente."
|
||||
@ -71,6 +72,9 @@ LangString SummaryTitle "${LYX_LANG}" "Resumen de la instalaci
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Por favor, instale los programas descargados y vuelva a ejecutar el insralador de LyX una vez más."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "Durante la instalación el siguiente 'path_prefix' se añadirá a 'lyxrc.defaults':"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "Imposible encontrar $(^Name) en el registro$\r$\nLos accesos rápidos del escritorio y del Menú de Inicio no serán eliminados."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Lo siento! Necesita privilegios de administrador$\r$\npara desinstalar $(^Name)."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "¿Está seguro de que desea eliminar completamente $(^Name) y todos sus componentes?"
|
||||
|
@ -23,6 +23,7 @@ LangString SecFileAssocDescription "${LYX_LANG}" "Skapa en association mellan pr
|
||||
LangString SecDesktopDescription "${LYX_LANG}" "En ${PRODUCT_NAME}ikon på skrivbordet."
|
||||
|
||||
LangString ModifyingConfigureFailed "${LYX_LANG}" "Misslyckades med att sätta 'path_prefix' i konfigurationsskriptet"
|
||||
LangString CreateCmdFilesFailed "${LYX_LANG}" "Failed atempting to create lyx.cmd and reLyX.cmd"
|
||||
LangString RunConfigureFailed "${LYX_LANG}" "Misslyckades med att köra konfigurationsskriptet"
|
||||
|
||||
LangString FinishPageMessage "${LYX_LANG}" "Gratulerar! LyX har installerats framgångsrikt."
|
||||
@ -76,6 +77,9 @@ LangString SummaryTitle "${LYX_LANG}" "Mjukvarusammanfattning"
|
||||
LangString SummaryPleaseInstall "${LYX_LANG}" "Var god installera först dina nedladdade filer och kör sedan LyXs installationsprogram igen."
|
||||
LangString SummaryPathPrefix "${LYX_LANG}" "En 'path_prefix'-sträng kommer att läggas till i filen 'lyxrc.defaults' innehållande följande:"
|
||||
|
||||
LangString UILangageTitle "${LYX_LANG}" "The language of LyX's interface"
|
||||
LangString UILangageDescription "${LYX_LANG}" "As used for menus, messages, etc."
|
||||
|
||||
LangString UnNotInRegistryLabel "${LYX_LANG}" "${SwedishUnableToFind} $(^Name) i registret\r$\nGenvägar på skrivbordet och i startmeny kommer inte att tas bort."
|
||||
LangString UnNotAdminLabel "${LYX_LANG}" "Tyvärr! Du måste ha administratörsrättigheter för\r$\natt avinstallera $(^Name)."
|
||||
LangString UnReallyRemoveLabel "${LYX_LANG}" "Är du säker på att du verkligen vill fullständigt avinstallera $(^Name) och alla dess komponenter?"
|
||||
|
152
development/Win32/packaging/installer/lyx_utils.nsh
Normal file
152
development/Win32/packaging/installer/lyx_utils.nsh
Normal file
@ -0,0 +1,152 @@
|
||||
;--------------------------------
|
||||
|
||||
!macro GetFileExtProg ProgPath AppExe Extension Subentry
|
||||
|
||||
ReadRegStr ${AppExe} HKCU \
|
||||
|
||||
"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\${Extension}\OpenWithList" \
|
||||
"${Subentry}"
|
||||
${if} ${AppExe} != ""
|
||||
ReadRegStr ${ProgPath} HKLM \
|
||||
"Software\Microsoft\Windows\CurrentVersion\App Paths\${AppExe}" "Path"
|
||||
;remove the "\" at the end
|
||||
StrCpy $0 ${ProgPath} "" -1
|
||||
${if} $0 == "\"
|
||||
StrCpy ${ProgPath} ${ProgPath} -1
|
||||
${endif}
|
||||
${endif}
|
||||
|
||||
!macroend
|
||||
|
||||
;--------------------------------
|
||||
|
||||
!macro FileCheck Result FileName FilePath
|
||||
Push $0
|
||||
Push $1
|
||||
StrCpy $0 ""
|
||||
StrCpy $1 ""
|
||||
|
||||
FileOpen $0 "${Filepath}\${FileName}" r
|
||||
|
||||
${if} $0 = ""
|
||||
StrCpy $1 "False"
|
||||
${Else}
|
||||
StrCpy $1 "True"
|
||||
${endif}
|
||||
|
||||
FileClose $0
|
||||
StrCpy ${Result} $1
|
||||
|
||||
Pop $1
|
||||
Pop $0
|
||||
!macroend
|
||||
|
||||
|
||||
!macro TranslateLangCode LangNme LangISOCode
|
||||
|
||||
${if} ${LangISOCode} = 1030
|
||||
StrCpy ${LangNme} "Dansk"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1031
|
||||
StrCpy ${LangNme} "Deutsch"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1033
|
||||
StrCpy ${LangNme} "English"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1034
|
||||
StrCpy ${LangNme} "Español"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1036
|
||||
StrCpy ${LangNme} "Français"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1040
|
||||
StrCpy ${LangNme} "Italiano"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1043
|
||||
StrCpy ${LangNme} "Nederlands"
|
||||
${endif}
|
||||
|
||||
${if} ${LangISOCode} = 1053
|
||||
StrCpy ${LangNme} "Svenska"
|
||||
${endif}
|
||||
|
||||
!macroend
|
||||
|
||||
|
||||
!macro GetLangCode LangCde Name
|
||||
|
||||
${if} ${Name} == "Dansk"
|
||||
StrCpy ${LangCde} "da_DK"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Deutsch"
|
||||
StrCpy ${LangCde} "de_DE"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "English"
|
||||
StrCpy ${LangCde} "en_EN"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Español"
|
||||
StrCpy ${LangCde} "es_ES"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Euskara"
|
||||
StrCpy ${LangCde} "eu_EU"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Français"
|
||||
StrCpy ${LangCde} "fr_FR"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Italiano"
|
||||
StrCpy ${LangCde} "it_IT"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Nederlands"
|
||||
StrCpy ${LangCde} "nl_NL"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Norsk"
|
||||
StrCpy ${LangCde} "no_NO"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Nynorsk"
|
||||
StrCpy ${LangCde} "no_NY"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Polski"
|
||||
StrCpy ${LangCde} "pl_PL"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Româna"
|
||||
StrCpy ${LangCde} "ro_RO"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Russian"
|
||||
StrCpy ${LangCde} "ru_RU"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Slovenský"
|
||||
StrCpy ${LangCde} "sk_SK"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Slovenšcina"
|
||||
StrCpy ${LangCde} "sl_SI"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Suomi"
|
||||
StrCpy ${LangCde} "fi_FI"
|
||||
${endif}
|
||||
|
||||
${if} ${Name} == "Türkçe"
|
||||
StrCpy ${LangCde} "tr_TR"
|
||||
${endif}
|
||||
|
||||
!macroend
|
@ -33,7 +33,7 @@ DTL_DIR=dtl
|
||||
DT2DV="$DTL_DIR/dt2dv.exe"
|
||||
DV2DT="$DTL_DIR/dv2dt.exe"
|
||||
|
||||
LYX_INSTALL_DIR="/j/Programs/LyX"
|
||||
LYX_INSTALL_DIR="../../../build/installprefix"
|
||||
|
||||
# Change this to 'mv -f' when you are confident that
|
||||
# the various sed scripts are working correctly.
|
||||
|
Loading…
Reference in New Issue
Block a user