Add VstoAddinInstaller as submodule.
This commit is contained in:
1
deploy/VstoAddinInstaller
Submodule
1
deploy/VstoAddinInstaller
Submodule
Submodule deploy/VstoAddinInstaller added at 956c716d3f
28
deploy/make-installer.iss
Normal file
28
deploy/make-installer.iss
Normal file
@ -0,0 +1,28 @@
|
||||
#define VERSIONFILE "..\zaaReloaded2\VERSION"
|
||||
#define PUB_YEARS "2015-2016"
|
||||
#define TARGET_HOST "excel"
|
||||
#define APP_GUID "{{8520B887-3AB1-422B-AB6B-A265D14FE4E5}"
|
||||
#define PRODUCT "zaaReloaded"
|
||||
#define COMPANY "Daniel Kraus (bovender)"
|
||||
#define DESCRIPTION "Word-Addin, das Lauris-Laborwerte in der Zentralen Arztbriefablage formatiert."
|
||||
#define HOMEPAGE "http://zaa.nephrowiki.de"
|
||||
#define REGKEY "zaaReloaded2"
|
||||
|
||||
#define SOURCEDIR "..\zaaReloaded2\bin\Release\"
|
||||
#define VSTOFILE "zaaReloaded2.vsto"
|
||||
|
||||
; OUTPUTDIR is the directory where the installer will be saved.
|
||||
#define OUTPUTDIR "releases\"
|
||||
|
||||
#define LOGFILE "ZAARELOADED2-INSTALL-LOG.TXT"
|
||||
|
||||
#define LICENSE_FILE "license.rtf"
|
||||
#define INSTALLER_ICO "icon.ico"
|
||||
#define INSTALLER_IMAGE_LARGE "installbanner.bmp"
|
||||
#define INSTALLER_IMAGE_SMALL "installbanner-small.bmp"
|
||||
|
||||
; If the VstoAddinInstaller files are in a different subdirectory
|
||||
; than 'VstoAddinInstaller', change the path below.
|
||||
#include "VstoAddinInstaller\vsto-installer.iss"
|
||||
|
||||
; vim: ts=2 sts=2 sw=2 et
|
BIN
deploy/setup-files/icon.bmp
Normal file
BIN
deploy/setup-files/icon.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 204 KiB |
BIN
deploy/setup-files/icon.ico
Normal file
BIN
deploy/setup-files/icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
deploy/setup-files/installbanner-small.bmp
Executable file
BIN
deploy/setup-files/installbanner-small.bmp
Executable file
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
BIN
deploy/setup-files/installbanner.bmp
Executable file
BIN
deploy/setup-files/installbanner.bmp
Executable file
Binary file not shown.
After Width: | Height: | Size: 153 KiB |
120
deploy/setup-files/license.rtf
Executable file
120
deploy/setup-files/license.rtf
Executable file
@ -0,0 +1,120 @@
|
||||
{\rtf1\ansi\deff4\adeflang1025
|
||||
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\fswiss\fprq2\fcharset128 Liberation Sans{\*\falt Arial};}{\f5\fswiss\fprq2\fcharset128 Segoe UI;}{\f6\fswiss\fprq2\fcharset128 Calibri;}{\f7\fnil\fprq2\fcharset0 Times New Roman;}{\f8\fswiss\fprq2\fcharset128 FreeSans;}{\f9\fnil\fprq2\fcharset0 Calibri;}}
|
||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red128\green128\blue128;}
|
||||
{\stylesheet{\s0\snext0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031 Normal;}
|
||||
{\*\cs15\snext15 Default Paragraph Font;}
|
||||
{\*\cs16\snext16\cf2\ul\ulc0\langfe255\lang255 Internet Link;}
|
||||
{\s17\sbasedon0\snext18\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb240\sa120\keepn\ltrpar\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs28\alang1081\loch\f4\fs28\lang1031 Heading;}
|
||||
{\s18\sbasedon0\snext18\sl288\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa140\ltrpar\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031 Text Body;}
|
||||
{\s19\sbasedon18\snext19\sl288\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa140\ltrpar\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f4\fs22\lang1031 List;}
|
||||
{\s20\sbasedon0\snext20\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa120\noline\ltrpar\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af8\afs24\alang1081\ai\loch\f4\fs20\lang1031 Caption;}
|
||||
{\s21\sbasedon0\snext21\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs20\alang1081\loch\f4\fs20\lang1031 Index;}
|
||||
{\s22\snext22\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\dbch\af7\langfe1031\dbch\af9\afs22\alang1025\cf0\kerning1\loch\f6\fs22\lang1031 DocumentMap;}
|
||||
{\s23\sbasedon0\snext23\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa120\ltrpar\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs20\alang1081\ai\loch\f4\fs20\lang1031 caption;}
|
||||
}{\*\generator LibreOffice/4.4.2.2$Linux_X86_64 LibreOffice_project/40m0$Build-2}{\info{\author Daniel Kraus}{\creatim\yr2015\mo1\dy28\hr17\min3}{\author Daniel Kraus}{\revtim\yr2015\mo7\dy28\hr18\min16}{\printim\yr0\mo0\dy0\hr0\min0}}\deftab720\deftab720
|
||||
\viewscale150
|
||||
{\*\pgdsctbl
|
||||
{\pgdsc0\pgdscuse451\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Default Style;}}
|
||||
\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
|
||||
{\*\ftnsep}\pgndec\pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs18\alang1081\ai\rtlch \ltrch\loch\fs18\lang1033
|
||||
zaaReloaded2 ist mit der \uc2 \u8220\'81\'67Apache 2.0 License\u8221\'81\'68 lizensiert.\uc1 }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs18\alang1081\ai\rtlch \ltrch\loch\fs18\lang1033
|
||||
}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs18\alang1081\ai\rtlch \ltrch\loch\fs18\lang1033
|
||||
Diese Lizenz erlaubt kostenfreie Nutzung und schlie\u223\'3ft jedwede Haftung aus. Bitte lesen Sie sich den unten stehenden Lizenztext vor der Nutzung genau durch und stimmen Sie den Bedingungen zu.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Diese Software enth\u228\'3flt Code von Dritten:}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
DLLs }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
der}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Visual Studio Tools for Office }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Laufzeit und des }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Expression Blend }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
S}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
oftware }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
D}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
evelopment }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
K}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
it}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
s}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
(SDK), \u169\'3f }{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
C}{\cf1\i\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
opyright Microsoft Corporation.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qc\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8212\'81\'5c\u8212\'81\'5c\u8212\'81\'5c\u8212\'81\'5c\u8212\'81\'5c\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qc\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Apache License}{\rtlch \ltrch\loch
|
||||
\line }{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Version 2.0, January 2004}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qc\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{{\field{\*\fldinst HYPERLINK "http://www.apache.org/licenses/" }{\fldrslt {\cf2\ul\ulc0\langfe255\lang255\cf2\ul\ulc0\kerning1\dbch\af7\langfe255\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang255
|
||||
http://www.apache.org/licenses/}}}}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
1. Definitions}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af7\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
License\uc2 \u8221\'81\'68 shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Licensor\uc2 \u8221\'81\'68 shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Legal Entity\uc2 \u8221\'81\'68 shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \u8220\'81\'67control\u8221\'81\'68 means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
You\uc2 \u8221\'81\'68 (or \u8220\'81\'67Your\u8221\'81\'68) shall mean an individual or Legal Entity exercising permissions granted by this License.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Source\uc2 \u8221\'81\'68 form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Object\uc2 \u8221\'81\'68 form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Work\uc2 \u8221\'81\'68 shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Derivative Works\uc2 \u8221\'81\'68 shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Contribution\uc2 \u8221\'81\'68 shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \u8220\'81\'67submitted\u8221\'81\'68 means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \u8220\'81\'67Not a Contribution.\u8221\'81\'68\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1033
|
||||
\uc2 \u8220\'81\'67\uc1 }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
Contributor\uc2 \u8221\'81\'68 shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
2. Grant of Copyright License}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
3. Grant of Patent License}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
4. Redistribution}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
1.\tab You must give any other recipients of the Work or Derivative Works a copy of this License; and}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
2.\tab You must cause any modified files to carry prominent notices stating that You changed the files; and}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
3.\tab You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
4.\tab If the Work includes a \uc2 \u8220\'81\'67NOTICE\u8221\'81\'68 text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\uc1 }{\rtlch \ltrch\loch
|
||||
\line \line }{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
5. Submission of Contributions}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
6. Trademarks}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
7. Disclaimer of Warranty}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \uc2 \u8220\'81\'67AS IS\u8221\'81\'68 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\uc1 }
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
8. Limitation of Liability}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qj\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\b\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
9. Accepting Warranty or Additional Liability}{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\loch\fs18\lang1033
|
||||
. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.}
|
||||
\par \pard\plain \s0\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa170\ltrpar{\*\hyphen2\hyphlead0\hyphtrail4\hyphmax0}\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs22\alang1081\loch\f5\fs22\lang1031\qc\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa40{\cf1\kerning1\dbch\af7\langfe1031\dbch\af9\afs24\alang1081\rtlch \ltrch\fs18\lang1031
|
||||
\uc2 \u8212\'81\'5c\u8212\'81\'5c\u8212\'81\'5c\u8212\'81\'5c\u8212\'81\'5c\uc1 }
|
||||
\par }
|
760
deploy/zaaReloaded2.iss
Executable file
760
deploy/zaaReloaded2.iss
Executable file
@ -0,0 +1,760 @@
|
||||
; Inno Setup script for zaaReloaded2
|
||||
; (c) 2015 Daniel Kraus
|
||||
; Apache License Version 2.0
|
||||
|
||||
[Setup]
|
||||
; #define DEBUG
|
||||
|
||||
; Read the semantic and the installer file version from the VERSION file
|
||||
#define FILE_HANDLE FileOpen("..\zaaReloaded2\VERSION")
|
||||
#define SEMVER FileRead(FILE_HANDLE)
|
||||
#define VER FileRead(FILE_HANDLE)
|
||||
#expr FileClose(FILE_HANDLE)
|
||||
|
||||
#define YEAR "2015"
|
||||
#define DEV "Daniel Kraus"
|
||||
#define LOGFILE "INST-LOG.TXT"
|
||||
#define REGKEY "Software\Microsoft\Office\Word\Addins\zaaReloaded2"
|
||||
#define APPNAME "zaaReloaded"
|
||||
#define SLOGAN "Word-Addin, das Lauris-Laborwerte in der Zentralen Arztbriefablage formatiert"
|
||||
#define UNINSTALLDIR "{app}\setup"
|
||||
#define ADDINNAME "zaaReloaded2"
|
||||
#define DOTNETSHA1 "58da3d74db353aad03588cbb5cea8234166d8b99"
|
||||
#define VSTORSHA1 "ad1dcc5325cb31754105c8c783995649e2208571"
|
||||
|
||||
#ifndef DEBUG
|
||||
#define SOURCEDIR "Release"
|
||||
#define VSTORURL "http://download.microsoft.com/download/2/E/9/2E9D2603-6D1F-4B12-BD37-DB1410B23597/vstor_redist.exe"
|
||||
#define DOTNETURL "http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"
|
||||
; Build the solution with Release configuration
|
||||
#expr Exec("C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.com", \
|
||||
"x:\Code\zaaReloaded2\zaaReloaded2\zaaReloaded2.csproj /Build Release")
|
||||
#else
|
||||
#define SOURCEDIR "Debug"
|
||||
#define VSTORURL "http://vhost/vstor_redist.exe"
|
||||
#define DOTNETURL "http://vhost/dotNetFx40_Full_x86_x64.exe"
|
||||
#endif
|
||||
|
||||
; Specific AppID - NEVER CHANGE THIS!
|
||||
AppId={{8520B887-3AB1-422B-AB6B-A265D14FE4E5}
|
||||
|
||||
; Compiler info
|
||||
OutputDir=release
|
||||
#ifndef DEBUG
|
||||
OutputBaseFilename=zaaReloaded-{#SEMVER}
|
||||
#else
|
||||
OutputBaseFilename=zaaReloaded-debug
|
||||
#endif
|
||||
Compression=lzma
|
||||
InternalCompressLevel=max
|
||||
SolidCompression=true
|
||||
LicenseFile=setup-files\license.rtf
|
||||
|
||||
; Application name, version, etc.
|
||||
AppName={#APPNAME}
|
||||
AppVersion={#SEMVER}
|
||||
AppPublisher={#DEV}
|
||||
AppCopyright=2008-{#YEAR} {#DEV}
|
||||
AppComments={#SLOGAN}
|
||||
VersionInfoDescription={#SLOGAN}
|
||||
VersionInfoVersion={#VER}
|
||||
VersionInfoProductVersion={#VER}
|
||||
VersionInfoTextVersion={#SEMVER}
|
||||
VersionInfoProductTextVersion={#SEMVER}
|
||||
AppContact={#DEV}
|
||||
AppPublisherURL=http://zaa.nephrowiki.de
|
||||
AppSupportURL=http://zaa.nephrowiki.de
|
||||
AppUpdatesURL=http://zaa.nephrowiki.de
|
||||
|
||||
; Setup wizard
|
||||
SetupIconFile=setup-files\icon.ico
|
||||
WizardImageFile=setup-files\installbanner.bmp
|
||||
WizardSmallImageFile=setup-files\installbanner-small.bmp
|
||||
ArchitecturesAllowed=x86 x64
|
||||
ArchitecturesInstallIn64BitMode=x64
|
||||
DisableProgramGroupPage=true
|
||||
DisableDirPage=false
|
||||
DisableReadyPage=false
|
||||
LanguageDetectionMethod=locale
|
||||
TimeStampsInUTC=false
|
||||
PrivilegesRequired=lowest
|
||||
WizardImageStretch=false
|
||||
WizardImageBackColor=clWhite
|
||||
; ChangesAssociations=true
|
||||
AppendDefaultDirName=false
|
||||
DefaultDirName={code:SuggestInstallDir}
|
||||
CreateAppDir=true
|
||||
CloseApplicationsFilter=*.*
|
||||
DefaultDialogFontName=Segoe UI
|
||||
|
||||
; Uninstall
|
||||
;UninstallDisplayIcon={#UNINSTALLDIR}\xltoolbox.ico
|
||||
UninstallFilesDir={#UNINSTALLDIR}
|
||||
|
||||
; Inno Downloader Plugin is required for this
|
||||
; Note that this include directive MUST be located at the end of the [setup]
|
||||
; section.
|
||||
#include <idp.iss>
|
||||
|
||||
[Languages]
|
||||
Name: en; MessagesFile: compiler:Default.isl;
|
||||
Name: de; MessagesFile: compiler:Languages\German.isl;
|
||||
; Name: Brasileiro; MessagesFile: compiler:Languages\BrazilianPortuguese.isl;
|
||||
; Name: Portugues; MessagesFile: compiler:Languages\Portuguese.isl;
|
||||
#include "c:\Program Files (x86)\Inno Download Plugin\Unicode\idplang\german.iss"
|
||||
|
||||
[Files]
|
||||
Source: "..\zaaReloaded2\bin\{#SOURCEDIR}\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||
; Source: "setup-files\xltoolbox.ico"; DestDir: "{#UNINSTALLDIR}"
|
||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||
|
||||
[Registry]
|
||||
; Keys for single-user install (HKCU)
|
||||
Check: not IsMultiUserInstall; ValueName: Description; ValueData: {#SLOGAN}; ValueType: string; Root: HKCU; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: not IsMultiUserInstall; ValueName: FriendlyName; ValueData: {#APPNAME}; ValueType: string; Root: HKCU; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: not IsMultiUserInstall; ValueName: LoadBehavior; ValueData: 3; ValueType: dword; Root: HKCU; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: not IsMultiUserInstall; ValueName: Warmup; ValueData: 1; ValueType: dword; Root: HKCU; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: not IsMultiUserInstall; ValueName: Manifest; ValueData: file:///{code:ConvertSlash|{app}}/{#ADDINNAME}.vsto|vstolocal; ValueType: string; Root: HKCU; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
|
||||
; Same keys again, this time for multi-user install (HKLM)
|
||||
Check: IsMultiUserInstall; ValueName: Description; ValueData: {#SLOGAN}; ValueType: string; Root: HKLM; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: IsMultiUserInstall; ValueName: FriendlyName; ValueData: {#APPNAME}; ValueType: string; Root: HKLM; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: IsMultiUserInstall; ValueName: LoadBehavior; ValueData: 3; ValueType: dword; Root: HKLM; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: IsMultiUserInstall; ValueName: Warmup; ValueData: 1; ValueType: dword; Root: HKLM; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
Check: IsMultiUserInstall; ValueName: Manifest; ValueData: file:///{code:ConvertSlash|{app}}/{#ADDINNAME}.vsto|vstolocal; ValueType: string; Root: HKLM; Subkey: {#REGKEY}; Flags: uninsdeletekey
|
||||
|
||||
[Run]
|
||||
; Filename: http://xltoolbox.sourceforge.net/welcome.html; Flags: shellexec nowait; Check: ShowWelcomePageInBrowser
|
||||
|
||||
[UninstallRun]
|
||||
; Filename: http://xltoolbox.sourceforge.net/uninstall.html; Flags: shellexec nowait
|
||||
|
||||
[CustomMessages]
|
||||
; General messages [EN]
|
||||
en.SingleOrMulti=Single-user or system-wide install
|
||||
en.SingleOrMultiSubcaption=Install for the current user only or for all users
|
||||
en.SingleOrMultiDesc=Please indicate the scope of this installation:
|
||||
en.SingleOrMultiSingle=Single user (only for me)
|
||||
en.SingleOrMultiAll=All users (system-wide)
|
||||
en.Word2007Required=zaaReloaded requires Word 2007 or later.
|
||||
|
||||
; CannotInstallPage [EN]
|
||||
en.CannotInstallCaption=Administrator privileges required
|
||||
en.CannotInstallDesc=You do not have the necessary rights to install additional required runtime files.
|
||||
en.CannotInstallMsg=Additional runtime files from Microsoft are required to run this add-in. You may continue the installation, but the add-in won't start unless the required runtime files are installed by an administrator. Note: On Windows Vista and newer, right-click the installer file and choose 'Run as administrator'.
|
||||
en.CannotInstallCont=Continue anyway, although it won't work without the required runtime files
|
||||
en.CannotInstallAbort=Abort the installation (come back when the admin has installed the files)
|
||||
|
||||
; DownloadInfoPage [EN]
|
||||
en.RequiredCaption=Additional runtime files required
|
||||
en.RequiredDesc=Additional runtime files for the .NET framework from Microsoft are required in order to run the add-in.
|
||||
en.RequiredMsg=%d file(s) totalling about %s MiB need to be downloaded from the Microsoft servers. Click 'Next' to start downloading.
|
||||
|
||||
; InstallInfoPage [EN]
|
||||
en.InstallCaption=Runtime files downloaded
|
||||
en.InstallDesc=The required runtime files are ready to install.
|
||||
en.InstallMsg=Click 'Next' to beginn the installation.
|
||||
|
||||
en.StillNotInstalled=The required additional runtime files are still not installed. Setup cannot continue. You may try again, or abort the add-in installation.
|
||||
en.DownloadNotValidated=A downloaded file has unexpected content. It may have not been downloaded correctly, or someone might have hampered with it. You may click 'Back' and then 'Next' to download it again.
|
||||
|
||||
; General messages [DE]
|
||||
de.SingleOrMulti=Einzelner oder alle Benutzer
|
||||
de.SingleOrMultiSubcaption=Geben Sie an, f<>r wen die Installation sein soll
|
||||
de.SingleOrMultiDesc=Bitte geben Sie an, ob das Addin nur f<>r Sie oder f<>r alle Benutzer installiert werden soll.
|
||||
de.SingleOrMultiSingle=Ein Benutzer (nur f<>r mich)
|
||||
de.SingleOrMultiAll=Alle Benutzer (systemweit)
|
||||
de.Word2007Required=Dieses Addin erfordert mindestens Word 2007.
|
||||
|
||||
; "Download required" messages (.NET and VSTOR runtimes) [DE]
|
||||
de.CannotInstallCaption=Administratorrechte ben<65>tigt
|
||||
de.CannotInstallDesc=Sie haben nicht die erforderlichen Benutzerrechte, um weitere ben<65>tigte Laufzeitdateien zu installieren.
|
||||
de.CannotInstallMsg=Sie k<>nnen mit der Installation fortfahren, aber das Addin wird nicht starten, solange die VSTO-Laufzeitdateien nicht von einem Admin installiert wurden. Tipp: Wenn Sie Windows Vista oder neuer verwenden, klicken Sie mit der rechten Maustaste auf die Installationsdatei und w<>hlen "Als Administrator ausf<73>hren".
|
||||
de.CannotInstallCont=Trotzdem installieren, obwohl es nicht funktionieren wird
|
||||
de.CannotInstallAbort=Installation abbrechen
|
||||
|
||||
; DownloadInfoPage [EN]
|
||||
de.RequiredCaption=Weitere Laufzeitdateien erforderlich
|
||||
de.RequiredDesc=Weitere Laufzeitdateien f<>r das .NET-Framework von Microsoft werden ben<65>tigt, um das Addin verwenden zu k<>nnen.
|
||||
de.RequiredMsg=%d Datei(en) mit ca. %s MiB mu<6D>/m<>ssen von den Microsoft-Servern heruntergeladen werden. Klicken Sie 'Weiter', um den Download zu beginnen.
|
||||
|
||||
; InstallInfoPage [EN]
|
||||
de.InstallCaption=Weitere .NET-Laufzeitdateien heruntergeladen
|
||||
de.InstallDesc=Die zus<75>tzlichen ben<65>tigten Dateien von Microsoft k<>nnen jetzt installiert werden.
|
||||
de.InstallMsg=Klicken Sie 'Weiter', um mit der Installation zu beginnen.
|
||||
|
||||
de.StillNotInstalled=Die zus<75>tzlichen ben<65>tigten Dateien wurden leider nicht korrekt installiert, so da<64> die Installation nicht fortgesetzt werden kann.
|
||||
de.DownloadNotValidated=Es wurde unerwarteter Inhalt in einer heruntergeladenen Datei gefunden. Die Installation kann so nicht fortgesetzt werden. Sie k<>nnen aber 'Zur<75>ck' und dann 'Weiter' klicken, um den Download neu zu beginnen.
|
||||
|
||||
[Code]
|
||||
const
|
||||
maxWord = 24; //< highest Word version number to check for.
|
||||
|
||||
var
|
||||
PageDevelopmentInfo: TInputOptionWizardPage;
|
||||
PageSingleOrMultiUser: TInputOptionWizardPage;
|
||||
PageCannotInstall: TInputOptionWizardPage;
|
||||
PageDownloadInfo: TOutputMsgWizardPage;
|
||||
PageInstallInfo: TOutputMsgWizardPage;
|
||||
prerequisitesChecked: boolean;
|
||||
prerequisitesMet: boolean;
|
||||
|
||||
/// Returns the path for the Wow6432Node registry tree if the current operating
|
||||
/// system is 64-bit, i.e., simulates WOW64 redirection.
|
||||
function GetWowNode(): string;
|
||||
begin
|
||||
if IsWin64 then
|
||||
begin
|
||||
result := 'Wow6432Node\';
|
||||
end
|
||||
else
|
||||
begin
|
||||
result := '';
|
||||
end;
|
||||
end;
|
||||
|
||||
/// Checks if a given Word version is installed
|
||||
function IsWordVersionInstalled(version: integer): boolean;
|
||||
var key: string;
|
||||
var lookup1, lookup2: boolean;
|
||||
begin
|
||||
key := 'Microsoft\Office\' + IntToStr(version) + '.0\Word\InstallRoot';
|
||||
lookup1 := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\' + GetWowNode + key);
|
||||
|
||||
// If checking for version >= 14.0 ("2010"), which was the first version
|
||||
// that was produced in both 32-bit and 64-bit, on a 64-bit system we
|
||||
// also need to check a path without 'Wow6434Node'.
|
||||
if IsWin64 and (version >= 14) then
|
||||
begin
|
||||
lookup2 := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\' + key);
|
||||
end;
|
||||
|
||||
result := lookup1 or lookup2;
|
||||
end;
|
||||
|
||||
/// Checks if only Word 2007 is installed
|
||||
function IsOnlyWord2007Installed(): boolean;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
result := IsWordVersionInstalled(12);
|
||||
|
||||
// Iterate through all
|
||||
for i := 14 to maxWord do
|
||||
begin
|
||||
if IsWordVersionInstalled(i) then
|
||||
begin
|
||||
result := false;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
/// Checks if hotfix KB976477 is installed. This hotfix
|
||||
/// is required to make Word 2007 recognize add-ins in
|
||||
/// the HKLM hive as well.
|
||||
function IsHotfixInstalled(): boolean;
|
||||
begin
|
||||
result := RegKeyExists(HKEY_LOCAL_MACHINE,
|
||||
'SOFTWARE\Microsoft\Windows\Current Version\Uninstall\KB976477');
|
||||
end;
|
||||
|
||||
/// Retrieves the build number of an installed Office version
|
||||
/// in OutBuild. Returns true if the requested Office version
|
||||
/// is installed and false if it is not installed.
|
||||
function GetOfficeBuild(OfficeVersion: integer; var OutBuild: integer): boolean;
|
||||
var
|
||||
key: string;
|
||||
value: string;
|
||||
build: string;
|
||||
begin
|
||||
key := 'SOFTWARE\' + GetWowNode + 'Microsoft\Office\' +
|
||||
IntToStr(OfficeVersion) + '.0\Common\ProductVersion';
|
||||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, key, 'LastProduct', value) then
|
||||
begin
|
||||
// Office build numbers always have 4 digits, at least as of Feb. 2015;
|
||||
// from a string '14.0.1234.5000' simply copy 4 characters from the 5th
|
||||
// position to get the build number. TODO: Make this future-proof.
|
||||
build := Copy(value, 6, 4);
|
||||
Log('Found ProductVersion "' + value + '" for queried Office version '
|
||||
+ IntToStr(OfficeVersion) + ', extracted build number ' + build);
|
||||
OutBuild := StrToInt(build);
|
||||
result := true;
|
||||
end
|
||||
else
|
||||
Log('Did not find LastProduct key for Office version ' +
|
||||
IntToStr(OfficeVersion) + '.0.');
|
||||
end;
|
||||
|
||||
/// Asserts if Office 2007 is installed. Does not check whether other Office
|
||||
/// versions are concurrently installed.
|
||||
function IsOffice2007Installed(): boolean;
|
||||
begin
|
||||
result := IsWordVersionInstalled(12);
|
||||
if result then Log('Detected Office 2007.');
|
||||
end;
|
||||
|
||||
/// Asserts if Office 2010 without service pack is installed.
|
||||
/// For build number, see http://support.microsoft.com/kb/2121559/en-us
|
||||
function IsOffice2010NoSpInstalled(): boolean;
|
||||
var
|
||||
build: integer;
|
||||
begin
|
||||
if GetOfficeBuild(14, build) then
|
||||
begin
|
||||
result := build = 4763; // 4763 is the original Office 2007 build
|
||||
if result then
|
||||
Log('Detected Office 2010 without service pack (v. 14.0, build 4763)')
|
||||
else
|
||||
Log('Detected Office 2010, apparently with some service pack (build ' +
|
||||
IntToStr(build) + ').');
|
||||
end;
|
||||
end;
|
||||
|
||||
/// Checks if the VSTO runtime is installed. This is relevant if only
|
||||
/// Word 2007 is installed. Since Office 2010, the CLR is
|
||||
/// automatically included.
|
||||
/// The presence of the VSTO runtime is indicated by the presence one of
|
||||
/// four possible registry keys.
|
||||
/// See: http://xltoolbox.sf.net/blog/2015/01/net-vsto-add-ins-getting-prerequisites-right
|
||||
/// HKLM\SOFTWARE\Microsoft\VSTO Runtime Setup\v4R (32-bit)
|
||||
/// HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup\v4R (64-bit)
|
||||
function IsVstorInstalled(): boolean;
|
||||
var
|
||||
software, vstorPath: string;
|
||||
begin
|
||||
software := 'SOFTWARE\';
|
||||
vstorPath := 'Microsoft\VSTO Runtime Setup\v4R';
|
||||
result := RegKeyExists(HKEY_LOCAL_MACHINE, software + GetWowNode + vstorPath);
|
||||
end;
|
||||
|
||||
/// Checks if the .NET 4.0 (or 4.5) runtime is installed.
|
||||
/// See https://msdn.microsoft.com/en-us/library/hh925568
|
||||
function IsNetInstalled(): boolean;
|
||||
begin
|
||||
result := RegKeyExists(HKEY_LOCAL_MACHINE,
|
||||
'SOFTWARE\' + GetWowNode + 'Microsoft\NET Framework Setup\NDP\v4');
|
||||
end;
|
||||
|
||||
/// Asserts if the VSTO runtime for .NET 4.0 redistributable needs to be
|
||||
/// downloaded and installed.
|
||||
/// If Office 2010 SP 1 or newer is installed on the system, the VSTOR runtime
|
||||
/// will be automagically configured as long as the .NET 4.0 runtime is present.
|
||||
/// Office 2007 and Office 2010 without service pack need the VSTO runtime
|
||||
/// redistributable. For details, see:
|
||||
/// http://xltoolbox.sf.net/blog/2015/01/net-vsto-add-ins-getting-prerequisites-right
|
||||
function NeedToInstallVstor(): boolean;
|
||||
begin
|
||||
result := false; // Default for Office 2010 SP1 or newer
|
||||
if IsOffice2007Installed or IsOffice2010NoSpInstalled then
|
||||
result := not IsVstorInstalled;
|
||||
end;
|
||||
|
||||
/// Checks if all required prerequisites are met, i.e. if the necessary
|
||||
/// runtimes are installed on the system
|
||||
function PrerequisitesAreMet(): boolean;
|
||||
begin
|
||||
// Cache check result to avoid multiple registry lookups and log messages
|
||||
if not prerequisitesChecked then
|
||||
begin
|
||||
prerequisitesMet := IsNetInstalled and not NeedToInstallVstor;
|
||||
prerequisitesChecked := true;
|
||||
end;
|
||||
result := prerequisitesMet;
|
||||
end;
|
||||
|
||||
/// Checks if a file exists and has a valid Sha1 sum.
|
||||
function IsFileValid(file: string; expectedSha1: string): boolean;
|
||||
var
|
||||
actualSha1: string;
|
||||
begin
|
||||
try
|
||||
if FileExists(file) then
|
||||
begin
|
||||
actualSha1 := GetSHA1OfFile(file);
|
||||
end;
|
||||
finally
|
||||
result := actualSha1 = expectedSha1;
|
||||
end;
|
||||
end;
|
||||
|
||||
/// Returns the path to the downloaded VSTO runtime installer.
|
||||
function GetVstorInstallerPath(): string;
|
||||
begin
|
||||
result := ExpandConstant('{%temp}\vstor_redist_40.exe');
|
||||
end;
|
||||
|
||||
/// Returns the path to the downloaded .NET runtime installer.
|
||||
function GetNetInstallerPath(): string;
|
||||
begin
|
||||
result := ExpandConstant('{%temp}\dotNetFx40_Full_x86_x64.exe');
|
||||
end;
|
||||
|
||||
/// Checks if the VSTO runtime redistributable setup file has already been
|
||||
/// downloaded by comparing SHA1 checksums.
|
||||
function IsVstorDownloaded(): boolean;
|
||||
begin
|
||||
result := IsFileValid(GetVstorInstallerPath, '{#VSTORSHA1}');
|
||||
end;
|
||||
|
||||
/// Checks if the .NET runtime setup file has already been
|
||||
/// downloaded by comparing SHA1 checksums.
|
||||
function IsNetDownloaded(): boolean;
|
||||
begin
|
||||
result := IsFileValid(GetNetInstallerPath, '{#DOTNETSHA1}');
|
||||
end;
|
||||
|
||||
/// Determines if the VSTO runtime needs to be downloaded.
|
||||
/// This is not the case it the runtime is already installed,
|
||||
/// or if there is a file with a valid Sha1 sum.
|
||||
function NeedToDownloadVstor: boolean;
|
||||
begin
|
||||
result := NeedToInstallVstor and not IsVstorDownloaded;
|
||||
end;
|
||||
|
||||
/// Determines if the VSTO runtime needs to be downloaded.
|
||||
/// This is not the case it the runtime is already installed,
|
||||
/// or if there is a file with a valid Sha1 sum.
|
||||
function NeedToDownloadNet: boolean;
|
||||
begin
|
||||
result := not IsNetInstalled and not IsNetDownloaded;
|
||||
end;
|
||||
|
||||
/// Determines whether or not a system-wide installation
|
||||
/// is possible. This depends on whether the current user
|
||||
/// is an administrator, and whether the hotfix KB976477
|
||||
/// is present on the system if Word 2007 is the only version
|
||||
/// of Word that is present (without that hotfix, Word
|
||||
/// 2007 does not load add-ins that are registered in the
|
||||
/// HKLM hive).
|
||||
function CanInstallSystemWide(): boolean;
|
||||
begin
|
||||
if IsAdminLoggedOn then
|
||||
begin
|
||||
if IsOnlyWord2007Installed then
|
||||
begin
|
||||
result := IsHotfixInstalled;
|
||||
end
|
||||
else
|
||||
begin
|
||||
result := true;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
result := false;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure CreateSingleOrAllUserPage();
|
||||
begin
|
||||
PageSingleOrMultiUser := CreateInputOptionPage(wpLicense,
|
||||
CustomMessage('SingleOrMulti'), CustomMessage('SingleOrMultiSubcaption'),
|
||||
CustomMessage('SingleOrMultiDesc'), True, False);
|
||||
PageSingleOrMultiUser.Add(CustomMessage('SingleOrMultiSingle'));
|
||||
PageSingleOrMultiUser.Add(CustomMessage('SingleOrMultiAll'));
|
||||
if CanInstallSystemWide then
|
||||
begin
|
||||
PageSingleOrMultiUser.Values[1] := True;
|
||||
end
|
||||
else
|
||||
begin
|
||||
PageSingleOrMultiUser.Values[0] := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure CreateCannotInstallPage();
|
||||
begin
|
||||
PageCannotInstall := CreateInputOptionPage(wpWelcome,
|
||||
CustomMessage('CannotInstallCaption'),
|
||||
CustomMessage('CannotInstallDesc'),
|
||||
CustomMessage('CannotInstallMsg'), True, False);
|
||||
PageCannotInstall.Add(CustomMessage('CannotInstallCont'));
|
||||
PageCannotInstall.Add(CustomMessage('CannotInstallAbort'));
|
||||
PageCannotInstall.Values[1] := True;
|
||||
end;
|
||||
|
||||
procedure CreateDownloadInfoPage();
|
||||
var
|
||||
bytes: Int64;
|
||||
mib: Single;
|
||||
size: String;
|
||||
begin
|
||||
if idpGetFilesSize(bytes) then
|
||||
begin
|
||||
mib := bytes / 1048576;
|
||||
size := Format('%.1f', [ mib ]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
size := '[?]'
|
||||
end;
|
||||
PageDownloadInfo := CreateOutputMsgPage(PageSingleOrMultiUser.Id,
|
||||
CustomMessage('RequiredCaption'),
|
||||
CustomMessage('RequiredDesc'),
|
||||
Format(CustomMessage('RequiredMsg'), [idpFilesCount, size]));
|
||||
end;
|
||||
|
||||
procedure CreateInstallInfoPage();
|
||||
begin
|
||||
PageInstallInfo := CreateOutputMsgPage(PageDownloadInfo.Id,
|
||||
CustomMessage('InstallCaption'),
|
||||
CustomMessage('InstallDesc'),
|
||||
CustomMessage('InstallMsg'));
|
||||
end;
|
||||
|
||||
|
||||
function InitializeSetup(): boolean;
|
||||
var
|
||||
minWordInstalled: boolean;
|
||||
i: integer;
|
||||
begin
|
||||
// Determine if Word 2007 or newer is installed (absolute requirement
|
||||
// for this VSTO add-in). Word 2007 ist version 12.0.
|
||||
for i := 12 to maxWord do
|
||||
begin
|
||||
minWordInstalled := minWordInstalled or IsWordVersionInstalled(i);
|
||||
end;
|
||||
|
||||
if not minWordInstalled then
|
||||
begin
|
||||
result := False;
|
||||
Log('Informing user that Word 2007 or newer is required.');
|
||||
MsgBox(CustomMessage('Word2007Required'), mbInformation, MB_OK);
|
||||
end
|
||||
else
|
||||
begin
|
||||
result := True;
|
||||
end
|
||||
end;
|
||||
|
||||
procedure InitializeWizard();
|
||||
begin
|
||||
// CreateDevelopmentInfoPage;
|
||||
CreateSingleOrAllUserPage;
|
||||
if not PrerequisitesAreMet then
|
||||
begin
|
||||
Log('Not all prerequisites are met...');
|
||||
CreateCannotInstallPage;
|
||||
if NeedToDownloadNet then
|
||||
begin
|
||||
Log('Mark {#DOTNETURL} for download.');
|
||||
idpAddFileSize('{#DOTNETURL}', GetNetInstallerPath, 50449456);
|
||||
end;
|
||||
if NeedToDownloadVstor then
|
||||
begin
|
||||
Log('Mark {#VSTORURL} for download.');
|
||||
idpAddFileSize('{#VSTORURL}', GetVstorInstallerPath, 40123576);
|
||||
end;
|
||||
CreateDownloadInfoPage;
|
||||
CreateInstallInfoPage;
|
||||
idpDownloadAfter(PageDownloadInfo.Id);
|
||||
end;
|
||||
end;
|
||||
|
||||
function ExecuteNetSetup(): boolean;
|
||||
var
|
||||
exitCode: integer;
|
||||
begin
|
||||
result := true;
|
||||
if not IsNetInstalled then
|
||||
begin
|
||||
if IsNetDownloaded then
|
||||
begin
|
||||
Log('Valid .NET runtime download found, installing.');
|
||||
Exec(GetNetInstallerPath, '/norestart',
|
||||
'', SW_SHOW, ewWaitUntilTerminated, exitCode);
|
||||
BringToFrontAndRestore;
|
||||
if not IsNetInstalled then
|
||||
begin
|
||||
MsgBox(CustomMessage('StillNotInstalled'), mbInformation, MB_OK);
|
||||
result := False;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Log('No or invalid .NET runtime download found, will not install.');
|
||||
MsgBox(CustomMessage('DownloadNotValidated'), mbInformation, MB_OK);
|
||||
result := False;
|
||||
end;
|
||||
end; // not IsNetInstalled
|
||||
end;
|
||||
|
||||
function ExecuteVstorSetup(): boolean;
|
||||
var
|
||||
exitCode: integer;
|
||||
begin
|
||||
result := true;
|
||||
if NeedToInstallVstor then
|
||||
begin
|
||||
if IsVstorDownloaded then
|
||||
begin
|
||||
Log('Valid VSTO runtime download found, installing.');
|
||||
Exec(GetVstorInstallerPath, '/norestart', '', SW_SHOW,
|
||||
ewWaitUntilTerminated, exitCode);
|
||||
BringToFrontAndRestore;
|
||||
if not IsVstorInstalled then
|
||||
begin
|
||||
MsgBox(CustomMessage('StillNotInstalled'), mbInformation, MB_OK);
|
||||
result := False;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Log('No or invalid VSTO runtime download found, will not install.');
|
||||
MsgBox(CustomMessage('DownloadNotValidated'), mbInformation, MB_OK);
|
||||
result := False;
|
||||
end;
|
||||
end; // not IsVstorInstalled
|
||||
end;
|
||||
|
||||
function NextButtonClick(CurPageID: Integer): Boolean;
|
||||
begin
|
||||
result := True;
|
||||
{
|
||||
if not WizardSilent then
|
||||
begin
|
||||
if CurPageID = PageDevelopmentInfo.Id then
|
||||
begin
|
||||
if PageDevelopmentInfo.Values[0] = False then
|
||||
begin
|
||||
Log('Requesting user to acknowledge use of a developmental version.');
|
||||
MsgBox(CustomMessage('DevVerMsgBox'), mbInformation, MB_OK);
|
||||
result := False;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
}
|
||||
|
||||
if not PrerequisitesAreMet then
|
||||
begin
|
||||
// Abort the installation if any of the runtimes are missing, the user
|
||||
// is not an administrator, and requested to abort the installation.
|
||||
if CurPageID = PageCannotInstall.ID then
|
||||
begin
|
||||
if PageCannotInstall.Values[1] = true then
|
||||
begin
|
||||
WizardForm.Close;
|
||||
result := False;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Log('Non-admin user continues although not all required runtimes are installed.');
|
||||
end;
|
||||
end;
|
||||
|
||||
if CurPageID = PageInstallInfo.ID then
|
||||
begin
|
||||
// Return true if installation succeeds (or no installation required)
|
||||
result := ExecuteNetSetup and ExecuteVstorSetup;
|
||||
end;
|
||||
end; // not PrerequisitesAreMet
|
||||
end;
|
||||
|
||||
/// Skips the folder selection, single/multi user, and ready pages for
|
||||
/// normal users without power privileges.
|
||||
/// This function also takes care of dynamically determining what wizard
|
||||
/// pages to install, depending on the current system setup and whether
|
||||
/// the current user is an administrator.
|
||||
function ShouldSkipPage(PageID: Integer): Boolean;
|
||||
begin
|
||||
result := False;
|
||||
|
||||
if not PrerequisitesAreMet then
|
||||
begin
|
||||
// The PageDownloadCannotInstall will only have been initialized if
|
||||
// PrerequisitesAreMet returned false.
|
||||
if PageID = PageCannotInstall.ID then
|
||||
begin
|
||||
// Skip the warning if the user is an admin.
|
||||
result := IsAdminLoggedOn
|
||||
if not result then
|
||||
begin
|
||||
Log('Warning user that required runtimes cannot be installed due to missing privileges');
|
||||
end;
|
||||
end;
|
||||
|
||||
if PageID = PageDownloadInfo.ID then
|
||||
begin
|
||||
// Skip page informing about downloads if no files need to be downloaded.
|
||||
result := idpFilesCount = 0;
|
||||
end;
|
||||
|
||||
if PageID = IDPForm.Page.ID then
|
||||
begin
|
||||
// Skip downloader plugin if there are no files to download.
|
||||
result := idpFilesCount = 0;
|
||||
if not result then
|
||||
begin
|
||||
Log('Beginning download of ' + IntToStr(idpFilesCount) + ' file(s).');
|
||||
end;
|
||||
end;
|
||||
end; // not PrerequisitesAreMet
|
||||
|
||||
if PageID = PageSingleOrMultiUser.ID then
|
||||
begin
|
||||
if IsOnlyWord2007Installed then
|
||||
begin
|
||||
Log('Only Word 2007 appears to be installed on this system.');
|
||||
if IsHotfixInstalled then
|
||||
begin
|
||||
Log('Hotfix KB976477 found; can install for all users.');
|
||||
end
|
||||
else
|
||||
begin
|
||||
Log('Hotfix KB976477 not found; cannot install for all users.');
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Log('Word 2010 or newer found on this system.');
|
||||
end;
|
||||
if CanInstallSystemWide then
|
||||
begin
|
||||
Log('Offer installation for all users.');
|
||||
result := False;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Log('Offer single-user installation only.');
|
||||
result := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
if (PageID = wpSelectDir) or (PageID = wpReady) then
|
||||
begin
|
||||
// Do not show the pages to select the target directory, and the ready
|
||||
// page if the user is not an admin.
|
||||
result := not IsAdminLoggedOn;
|
||||
end
|
||||
end;
|
||||
|
||||
/// Helper function that evaluates the custom PageSingleOrMultiUser page.
|
||||
function IsMultiUserInstall(): Boolean;
|
||||
begin
|
||||
result := PageSingleOrMultiUser.Values[1];
|
||||
end;
|
||||
|
||||
/// Suggest an initial target directory depending on whether
|
||||
/// the installer is run with admin privileges.
|
||||
function SuggestInstallDir(Param: string): string;
|
||||
var
|
||||
dir: string;
|
||||
begin
|
||||
if CanInstallSystemWide then
|
||||
begin
|
||||
dir := ExpandConstant('{pf}');
|
||||
end
|
||||
else
|
||||
begin
|
||||
dir := ExpandConstant('{userappdata}');
|
||||
end;
|
||||
result := AddBackslash(dir) + 'zaaReloaded';
|
||||
end;
|
||||
|
||||
/// Converts backslashes to forward slashes.
|
||||
function ConvertSlash(Value: string): string;
|
||||
begin
|
||||
StringChangeEx(Value, '\', '/', True);
|
||||
Result := Value;
|
||||
end;
|
Reference in New Issue
Block a user