laag-nasm 2.13.03.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +57 -0
- data/LICENSE.txt +29 -0
- data/README.org +34 -0
- data/ext/laag/nasm/extconf.rb +16 -0
- data/laag-nasm.gemspec +20 -0
- data/lib/laag/nasm.rb +29 -0
- data/patches/Makefile.in.patch +13 -0
- data/vendor/repo.or.cz/nasm/.gitignore +102 -0
- data/vendor/repo.or.cz/nasm/AUTHORS +137 -0
- data/vendor/repo.or.cz/nasm/CHANGES +2 -0
- data/vendor/repo.or.cz/nasm/ChangeLog +2905 -0
- data/vendor/repo.or.cz/nasm/INSTALL +102 -0
- data/vendor/repo.or.cz/nasm/LICENSE +29 -0
- data/vendor/repo.or.cz/nasm/Makefile.in +855 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/README +46 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/msvc.mak +732 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/openwcom.mak +706 -0
- data/vendor/repo.or.cz/nasm/README +23 -0
- data/vendor/repo.or.cz/nasm/SubmittingPatches +116 -0
- data/vendor/repo.or.cz/nasm/TODO +376 -0
- data/vendor/repo.or.cz/nasm/aclocal.m4 +139 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.c +2957 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.c +566 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.dat +92 -0
- data/vendor/repo.or.cz/nasm/asm/error.c +202 -0
- data/vendor/repo.or.cz/nasm/asm/eval.c +1014 -0
- data/vendor/repo.or.cz/nasm/asm/eval.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/exprdump.c +79 -0
- data/vendor/repo.or.cz/nasm/asm/exprlib.c +200 -0
- data/vendor/repo.or.cz/nasm/asm/float.c +952 -0
- data/vendor/repo.or.cz/nasm/asm/float.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/labels.c +540 -0
- data/vendor/repo.or.cz/nasm/asm/listing.c +346 -0
- data/vendor/repo.or.cz/nasm/asm/listing.h +113 -0
- data/vendor/repo.or.cz/nasm/asm/nasm.c +1855 -0
- data/vendor/repo.or.cz/nasm/asm/parser.c +1167 -0
- data/vendor/repo.or.cz/nasm/asm/parser.h +45 -0
- data/vendor/repo.or.cz/nasm/asm/phash.pl +109 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.dat +96 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.pl +271 -0
- data/vendor/repo.or.cz/nasm/asm/pragma.c +218 -0
- data/vendor/repo.or.cz/nasm/asm/preproc-nop.c +188 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.c +5459 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.h +55 -0
- data/vendor/repo.or.cz/nasm/asm/quote.c +479 -0
- data/vendor/repo.or.cz/nasm/asm/quote.h +44 -0
- data/vendor/repo.or.cz/nasm/asm/rdstrnum.c +68 -0
- data/vendor/repo.or.cz/nasm/asm/segalloc.c +51 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.c +345 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/strfunc.c +359 -0
- data/vendor/repo.or.cz/nasm/asm/tokens.dat +135 -0
- data/vendor/repo.or.cz/nasm/asm/tokhash.pl +284 -0
- data/vendor/repo.or.cz/nasm/autogen.sh +9 -0
- data/vendor/repo.or.cz/nasm/common/common.c +122 -0
- data/vendor/repo.or.cz/nasm/config/msvc.h +192 -0
- data/vendor/repo.or.cz/nasm/config/unknown.h +51 -0
- data/vendor/repo.or.cz/nasm/config/watcom.h +74 -0
- data/vendor/repo.or.cz/nasm/configure.ac +253 -0
- data/vendor/repo.or.cz/nasm/contrib/MSVC6.txt +25 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.README +16 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.rules +79 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.c +1735 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.h +49 -0
- data/vendor/repo.or.cz/nasm/disasm/ndisasm.c +397 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.c +132 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.h +45 -0
- data/vendor/repo.or.cz/nasm/doc/Makefile.in +86 -0
- data/vendor/repo.or.cz/nasm/doc/README +20 -0
- data/vendor/repo.or.cz/nasm/doc/afmmetrics.ph +102 -0
- data/vendor/repo.or.cz/nasm/doc/changes.src +2588 -0
- data/vendor/repo.or.cz/nasm/doc/findfont.ph +180 -0
- data/vendor/repo.or.cz/nasm/doc/genps.pl +1294 -0
- data/vendor/repo.or.cz/nasm/doc/inslist.pl +108 -0
- data/vendor/repo.or.cz/nasm/doc/internal.doc +290 -0
- data/vendor/repo.or.cz/nasm/doc/local.css +1 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.css +150 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.src +8309 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogo.eps +212 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogw.png +0 -0
- data/vendor/repo.or.cz/nasm/doc/psfonts.ph +53 -0
- data/vendor/repo.or.cz/nasm/doc/pspdf.pl +98 -0
- data/vendor/repo.or.cz/nasm/doc/pswidth.ph +25 -0
- data/vendor/repo.or.cz/nasm/doc/rdsrc.pl +1111 -0
- data/vendor/repo.or.cz/nasm/doc/ttfmetrics.ph +63 -0
- data/vendor/repo.or.cz/nasm/headers/c +33 -0
- data/vendor/repo.or.cz/nasm/headers/doc +33 -0
- data/vendor/repo.or.cz/nasm/headers/mac +33 -0
- data/vendor/repo.or.cz/nasm/headers/perl +33 -0
- data/vendor/repo.or.cz/nasm/include/compiler.h +277 -0
- data/vendor/repo.or.cz/nasm/include/disp8.h +45 -0
- data/vendor/repo.or.cz/nasm/include/error.h +135 -0
- data/vendor/repo.or.cz/nasm/include/hashtbl.h +85 -0
- data/vendor/repo.or.cz/nasm/include/iflag.h +173 -0
- data/vendor/repo.or.cz/nasm/include/insns.h +76 -0
- data/vendor/repo.or.cz/nasm/include/labels.h +60 -0
- data/vendor/repo.or.cz/nasm/include/md5.h +21 -0
- data/vendor/repo.or.cz/nasm/include/nasm.h +1246 -0
- data/vendor/repo.or.cz/nasm/include/nasmint.h +219 -0
- data/vendor/repo.or.cz/nasm/include/nasmlib.h +524 -0
- data/vendor/repo.or.cz/nasm/include/opflags.h +271 -0
- data/vendor/repo.or.cz/nasm/include/perfhash.h +52 -0
- data/vendor/repo.or.cz/nasm/include/raa.h +46 -0
- data/vendor/repo.or.cz/nasm/include/rbtree.h +51 -0
- data/vendor/repo.or.cz/nasm/include/rdoff.h +169 -0
- data/vendor/repo.or.cz/nasm/include/saa.h +94 -0
- data/vendor/repo.or.cz/nasm/include/strlist.h +55 -0
- data/vendor/repo.or.cz/nasm/include/tables.h +70 -0
- data/vendor/repo.or.cz/nasm/include/ver.h +47 -0
- data/vendor/repo.or.cz/nasm/install-sh +250 -0
- data/vendor/repo.or.cz/nasm/macros/altreg.mac +107 -0
- data/vendor/repo.or.cz/nasm/macros/fp.mac +54 -0
- data/vendor/repo.or.cz/nasm/macros/ifunc.mac +48 -0
- data/vendor/repo.or.cz/nasm/macros/macros.pl +294 -0
- data/vendor/repo.or.cz/nasm/macros/smartalign.mac +189 -0
- data/vendor/repo.or.cz/nasm/macros/standard.mac +226 -0
- data/vendor/repo.or.cz/nasm/misc/Doxyfile +752 -0
- data/vendor/repo.or.cz/nasm/misc/Nindent +18 -0
- data/vendor/repo.or.cz/nasm/misc/README +2 -0
- data/vendor/repo.or.cz/nasm/misc/c16.mac +82 -0
- data/vendor/repo.or.cz/nasm/misc/c32.mac +52 -0
- data/vendor/repo.or.cz/nasm/misc/crcgen.c +44 -0
- data/vendor/repo.or.cz/nasm/misc/exebin.mac +57 -0
- data/vendor/repo.or.cz/nasm/misc/exebin2.mac +114 -0
- data/vendor/repo.or.cz/nasm/misc/fmtinsns.pl +40 -0
- data/vendor/repo.or.cz/nasm/misc/genfma.pl +63 -0
- data/vendor/repo.or.cz/nasm/misc/hints.txt +26 -0
- data/vendor/repo.or.cz/nasm/misc/magic +6 -0
- data/vendor/repo.or.cz/nasm/misc/myC32.mac +121 -0
- data/vendor/repo.or.cz/nasm/misc/nasm.sl +320 -0
- data/vendor/repo.or.cz/nasm/misc/nasmstab +296 -0
- data/vendor/repo.or.cz/nasm/misc/omfdump.c +517 -0
- data/vendor/repo.or.cz/nasm/misc/pmw.bat +9 -0
- data/vendor/repo.or.cz/nasm/misc/proc32.ash +441 -0
- data/vendor/repo.or.cz/nasm/misc/scitech.mac +1223 -0
- data/vendor/repo.or.cz/nasm/misc/xcrcgen.c +80 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.in +83 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.sed +3 -0
- data/vendor/repo.or.cz/nasm/nasm.txt +306 -0
- data/vendor/repo.or.cz/nasm/nasmlib/badenum.c +43 -0
- data/vendor/repo.or.cz/nasm/nasmlib/bsi.c +77 -0
- data/vendor/repo.or.cz/nasm/nasmlib/crc64.c +189 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.c +259 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.h +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/filename.c +69 -0
- data/vendor/repo.or.cz/nasm/nasmlib/hashtbl.c +232 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ilog2.c +168 -0
- data/vendor/repo.or.cz/nasm/nasmlib/malloc.c +108 -0
- data/vendor/repo.or.cz/nasm/nasmlib/md5c.c +247 -0
- data/vendor/repo.or.cz/nasm/nasmlib/mmap.c +139 -0
- data/vendor/repo.or.cz/nasm/nasmlib/path.c +186 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.c +55 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.pl +362 -0
- data/vendor/repo.or.cz/nasm/nasmlib/raa.c +173 -0
- data/vendor/repo.or.cz/nasm/nasmlib/rbtree.c +119 -0
- data/vendor/repo.or.cz/nasm/nasmlib/readnum.c +172 -0
- data/vendor/repo.or.cz/nasm/nasmlib/realpath.c +135 -0
- data/vendor/repo.or.cz/nasm/nasmlib/saa.c +431 -0
- data/vendor/repo.or.cz/nasm/nasmlib/srcfile.c +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/string.c +242 -0
- data/vendor/repo.or.cz/nasm/nasmlib/strlist.c +100 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ver.c +51 -0
- data/vendor/repo.or.cz/nasm/nasmlib/zerobuf.c +42 -0
- data/vendor/repo.or.cz/nasm/ndisasm.txt +94 -0
- data/vendor/repo.or.cz/nasm/nsis/NASMMultiUser.nsh +478 -0
- data/vendor/repo.or.cz/nasm/nsis/getpearch.pl +76 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm-un.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.nsi +241 -0
- data/vendor/repo.or.cz/nasm/output/codeview.c +814 -0
- data/vendor/repo.or.cz/nasm/output/dwarf.h +566 -0
- data/vendor/repo.or.cz/nasm/output/elf.h +537 -0
- data/vendor/repo.or.cz/nasm/output/legacy.c +112 -0
- data/vendor/repo.or.cz/nasm/output/nulldbg.c +93 -0
- data/vendor/repo.or.cz/nasm/output/nullout.c +51 -0
- data/vendor/repo.or.cz/nasm/output/outaout.c +954 -0
- data/vendor/repo.or.cz/nasm/output/outaout.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outas86.c +650 -0
- data/vendor/repo.or.cz/nasm/output/outas86.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outbin.c +1713 -0
- data/vendor/repo.or.cz/nasm/output/outbin.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.c +1242 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/outdbg.c +425 -0
- data/vendor/repo.or.cz/nasm/output/outelf.c +3370 -0
- data/vendor/repo.or.cz/nasm/output/outelf.h +156 -0
- data/vendor/repo.or.cz/nasm/output/outelf.mac +41 -0
- data/vendor/repo.or.cz/nasm/output/outform.c +120 -0
- data/vendor/repo.or.cz/nasm/output/outform.h +379 -0
- data/vendor/repo.or.cz/nasm/output/outieee.c +1528 -0
- data/vendor/repo.or.cz/nasm/output/outlib.c +58 -0
- data/vendor/repo.or.cz/nasm/output/outlib.h +63 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.c +2387 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outobj.c +2725 -0
- data/vendor/repo.or.cz/nasm/output/outobj.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outrdf.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.c +791 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/pecoff.h +532 -0
- data/vendor/repo.or.cz/nasm/output/stabs.h +144 -0
- data/vendor/repo.or.cz/nasm/perllib/crc64.ph +158 -0
- data/vendor/repo.or.cz/nasm/perllib/gensv.pl +34 -0
- data/vendor/repo.or.cz/nasm/perllib/phash.ph +200 -0
- data/vendor/repo.or.cz/nasm/perllib/random_sv_vectors.ph +67 -0
- data/vendor/repo.or.cz/nasm/rdoff/README +185 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.c +44 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.h +22 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/Makefile +37 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/rdoff.texi +137 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/v1-v2.txt +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.c +122 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.h +17 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.1 +41 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.c +1395 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldsegs.h +59 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.1 +65 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.c +431 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2com.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ihx.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ith.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2srec.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.1 +24 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.c +347 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.1 +39 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.c +434 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.c +213 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.h +29 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfutils.h +165 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.c +492 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.h +34 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.c +290 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.h +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdoff.c +621 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.1 +21 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.c +90 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.c +172 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.h +45 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.c +159 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.h +55 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/Makefile +10 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/makelib.sh +14 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg.asm +20 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg2.asm +12 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest1.asm +54 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest2.asm +33 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtlib.asm +48 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtmain.asm +47 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/testlib.asm +18 -0
- data/vendor/repo.or.cz/nasm/stdlib/snprintf.c +29 -0
- data/vendor/repo.or.cz/nasm/stdlib/strlcpy.c +51 -0
- data/vendor/repo.or.cz/nasm/stdlib/strnlen.c +46 -0
- data/vendor/repo.or.cz/nasm/stdlib/vsnprintf.c +51 -0
- data/vendor/repo.or.cz/nasm/test/Makefile +106 -0
- data/vendor/repo.or.cz/nasm/test/_file_.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/_version.asm +2 -0
- data/vendor/repo.or.cz/nasm/test/a32offs.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/absolute.asm +40 -0
- data/vendor/repo.or.cz/nasm/test/addr64x.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/align13.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/align13s.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/alonesym-obj.asm +166 -0
- data/vendor/repo.or.cz/nasm/test/andbyte.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/aoutso.asm +99 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.asm +86 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.c +36 -0
- data/vendor/repo.or.cz/nasm/test/avx.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/avx005.asm +529 -0
- data/vendor/repo.or.cz/nasm/test/avx2.asm +1608 -0
- data/vendor/repo.or.cz/nasm/test/avx512cd.asm +106 -0
- data/vendor/repo.or.cz/nasm/test/avx512er.asm +144 -0
- data/vendor/repo.or.cz/nasm/test/avx512f.asm +7000 -0
- data/vendor/repo.or.cz/nasm/test/avx512pf.asm +88 -0
- data/vendor/repo.or.cz/nasm/test/bcd.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/binexe.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/bintest.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/bisect.sh +22 -0
- data/vendor/repo.or.cz/nasm/test/br1879590.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br2003451.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br2030823.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br2148476.asm +221 -0
- data/vendor/repo.or.cz/nasm/test/br2222615.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/br2496848.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/br3005117.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/br3026808.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/br3028880.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3041451.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/br3058845.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/br3066383.asm +70 -0
- data/vendor/repo.or.cz/nasm/test/br3074517.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/br3092924.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3104312.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3109604.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3174983.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3187743.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3189064.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3200749.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3385573.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3392252.asm +43 -0
- data/vendor/repo.or.cz/nasm/test/br3392259.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3392363.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/br3392392.asm +16 -0
- data/vendor/repo.or.cz/nasm/test/br3392396.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/br3392411.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/br3392418.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/br3392439.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3392442.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/br560575.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br560873.asm +27 -0
- data/vendor/repo.or.cz/nasm/test/br890790.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br890790_i.asm +1 -0
- data/vendor/repo.or.cz/nasm/test/br978756.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/changed.asm +383 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.c +35 -0
- data/vendor/repo.or.cz/nasm/test/crc32.asm +37 -0
- data/vendor/repo.or.cz/nasm/test/cv8struc.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/dtbcd.asm +72 -0
- data/vendor/repo.or.cz/nasm/test/elf64so.asm +118 -0
- data/vendor/repo.or.cz/nasm/test/elfso.asm +100 -0
- data/vendor/repo.or.cz/nasm/test/elftest.asm +87 -0
- data/vendor/repo.or.cz/nasm/test/elftest.c +38 -0
- data/vendor/repo.or.cz/nasm/test/elftest64.c +43 -0
- data/vendor/repo.or.cz/nasm/test/elif.asm +39 -0
- data/vendor/repo.or.cz/nasm/test/expimp.asm +90 -0
- data/vendor/repo.or.cz/nasm/test/far64.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/float.asm +186 -0
- data/vendor/repo.or.cz/nasm/test/float8.asm +135 -0
- data/vendor/repo.or.cz/nasm/test/floatb.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/floatexp.asm +382 -0
- data/vendor/repo.or.cz/nasm/test/floatize.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/floattest.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/floatx.asm +525 -0
- data/vendor/repo.or.cz/nasm/test/fpu.asm +127 -0
- data/vendor/repo.or.cz/nasm/test/fwdopt.asm +133 -0
- data/vendor/repo.or.cz/nasm/test/fwdoptpp.asm +150 -0
- data/vendor/repo.or.cz/nasm/test/gas2nasm.py +104 -0
- data/vendor/repo.or.cz/nasm/test/gather.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/gotoff64.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hexfp.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hle.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/ifelse.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/ifenv.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/ifmacro.asm +413 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.asm +317 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.pl +32 -0
- data/vendor/repo.or.cz/nasm/test/ilog2.asm +271 -0
- data/vendor/repo.or.cz/nasm/test/imacro.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/imm.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/imm64.asm +61 -0
- data/vendor/repo.or.cz/nasm/test/immwarn.asm +91 -0
- data/vendor/repo.or.cz/nasm/test/imul.asm +117 -0
- data/vendor/repo.or.cz/nasm/test/inc1.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/inc2.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/incbin.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/incbin.data +2 -0
- data/vendor/repo.or.cz/nasm/test/inctest.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/insnlbl.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/invlpga.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/jmp64.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/lar_lsl.asm +124 -0
- data/vendor/repo.or.cz/nasm/test/larlsl.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/lnxhello.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/local.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/loopoffs.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/lwp.asm +213 -0
- data/vendor/repo.or.cz/nasm/test/macro-defaults.asm +64 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.inc +3 -0
- data/vendor/repo.or.cz/nasm/test/mmxsize.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/movd.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/movd64.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/movimm.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/movnti.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/mpx-64.asm +120 -0
- data/vendor/repo.or.cz/nasm/test/mpx.asm +89 -0
- data/vendor/repo.or.cz/nasm/test/multisection.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/nasmformat.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/new +9 -0
- data/vendor/repo.or.cz/nasm/test/newrdwr.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/nop.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/nullfile.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/objexe.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/objlink.c +33 -0
- data/vendor/repo.or.cz/nasm/test/objtest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/optimization.asm +104 -0
- data/vendor/repo.or.cz/nasm/test/org.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/paste.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/pcrel.asm +52 -0
- data/vendor/repo.or.cz/nasm/test/perf/label.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/macro.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/token.pl +23 -0
- data/vendor/repo.or.cz/nasm/test/performtest.pl +192 -0
- data/vendor/repo.or.cz/nasm/test/pextrw.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/pinsr16.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr32.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr64.asm +68 -0
- data/vendor/repo.or.cz/nasm/test/popcnt.asm +32 -0
- data/vendor/repo.or.cz/nasm/test/ppindirect.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/pragma.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/prefix66.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/ptr.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/pushseg.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/r13.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/radix.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/rdpid.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/reldef.asm +57 -0
- data/vendor/repo.or.cz/nasm/test/relocs.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/riprel.asm +5357 -0
- data/vendor/repo.or.cz/nasm/test/riprel.pl +29 -0
- data/vendor/repo.or.cz/nasm/test/riprel2.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sha-64.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/sha.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/smartalign16.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign32.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign64.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/splitea.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sreg.asm +65 -0
- data/vendor/repo.or.cz/nasm/test/strlen.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/struc.asm +33 -0
- data/vendor/repo.or.cz/nasm/test/test67.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/testdos.asm +13 -0
- data/vendor/repo.or.cz/nasm/test/testnos3.asm +973 -0
- data/vendor/repo.or.cz/nasm/test/time.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/times.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/timesneg.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/tmap.nas +1447 -0
- data/vendor/repo.or.cz/nasm/test/uscore.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/utf.asm +82 -0
- data/vendor/repo.or.cz/nasm/test/vaesenc.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/vex.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/vgather.asm +76 -0
- data/vendor/repo.or.cz/nasm/test/vmread.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/weirdpaste.asm +29 -0
- data/vendor/repo.or.cz/nasm/test/xchg.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/xcrypt.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/xmm0.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/zerobyte.asm +22 -0
- data/vendor/repo.or.cz/nasm/tools/cleanfile +176 -0
- data/vendor/repo.or.cz/nasm/tools/cleanpatch +258 -0
- data/vendor/repo.or.cz/nasm/tools/mkdep.pl +261 -0
- data/vendor/repo.or.cz/nasm/tools/release +105 -0
- data/vendor/repo.or.cz/nasm/tools/syncfiles.pl +137 -0
- data/vendor/repo.or.cz/nasm/tools/tag-release +58 -0
- data/vendor/repo.or.cz/nasm/version +1 -0
- data/vendor/repo.or.cz/nasm/version.pl +189 -0
- data/vendor/repo.or.cz/nasm/x86/disp8.c +131 -0
- data/vendor/repo.or.cz/nasm/x86/insns-iflags.ph +280 -0
- data/vendor/repo.or.cz/nasm/x86/insns.dat +5371 -0
- data/vendor/repo.or.cz/nasm/x86/insns.pl +1043 -0
- data/vendor/repo.or.cz/nasm/x86/regs.dat +138 -0
- data/vendor/repo.or.cz/nasm/x86/regs.pl +204 -0
- metadata +520 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
|
2
|
+
*
|
|
3
|
+
* Copyright 1996-2016 The NASM Authors - All Rights Reserved
|
|
4
|
+
* See the file AUTHORS included with the NASM distribution for
|
|
5
|
+
* the specific copyright holders.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following
|
|
9
|
+
* conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* * Redistributions of source code must retain the above copyright
|
|
12
|
+
* notice, this list of conditions and the following disclaimer.
|
|
13
|
+
* * Redistributions in binary form must reproduce the above
|
|
14
|
+
* copyright notice, this list of conditions and the following
|
|
15
|
+
* disclaimer in the documentation and/or other materials provided
|
|
16
|
+
* with the distribution.
|
|
17
|
+
*
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
19
|
+
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
20
|
+
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
21
|
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
23
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
25
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
26
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
27
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
28
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
29
|
+
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
30
|
+
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
*
|
|
32
|
+
* ----------------------------------------------------------------------- */
|
|
33
|
+
|
|
34
|
+
#include "ver.h"
|
|
35
|
+
#include "version.h"
|
|
36
|
+
|
|
37
|
+
/* This is printed when entering nasm -v */
|
|
38
|
+
const char nasm_version[] = NASM_VER;
|
|
39
|
+
const char nasm_date[] = __DATE__;
|
|
40
|
+
const char nasm_compile_options[] = ""
|
|
41
|
+
#ifdef DEBUG
|
|
42
|
+
" with -DDEBUG"
|
|
43
|
+
#endif
|
|
44
|
+
;
|
|
45
|
+
|
|
46
|
+
/* These are used by some backends. */
|
|
47
|
+
const char nasm_comment[] =
|
|
48
|
+
"The Netwide Assembler " NASM_VER;
|
|
49
|
+
|
|
50
|
+
const char nasm_signature[] =
|
|
51
|
+
"NASM " NASM_VER;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
|
2
|
+
*
|
|
3
|
+
* Copyright 1996-2016 The NASM Authors - All Rights Reserved
|
|
4
|
+
* See the file AUTHORS included with the NASM distribution for
|
|
5
|
+
* the specific copyright holders.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following
|
|
9
|
+
* conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* * Redistributions of source code must retain the above copyright
|
|
12
|
+
* notice, this list of conditions and the following disclaimer.
|
|
13
|
+
* * Redistributions in binary form must reproduce the above
|
|
14
|
+
* copyright notice, this list of conditions and the following
|
|
15
|
+
* disclaimer in the documentation and/or other materials provided
|
|
16
|
+
* with the distribution.
|
|
17
|
+
*
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
19
|
+
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
20
|
+
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
21
|
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
23
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
25
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
26
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
27
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
28
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
29
|
+
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
30
|
+
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
*
|
|
32
|
+
* ----------------------------------------------------------------------- */
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* nasmlib.c library routines for the Netwide Assembler
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#include "compiler.h"
|
|
39
|
+
#include "nasmlib.h"
|
|
40
|
+
|
|
41
|
+
/* Uninitialized -> all zero by C spec */
|
|
42
|
+
const uint8_t zero_buffer[ZERO_BUF_SIZE];
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
ndisasm(1)
|
|
2
|
+
==========
|
|
3
|
+
:doctype: manpage
|
|
4
|
+
:man source: NASM
|
|
5
|
+
:man manual: The Netwide Assembler Project
|
|
6
|
+
|
|
7
|
+
NAME
|
|
8
|
+
----
|
|
9
|
+
ndisasm - the Netwide Disassembler, an 80x86 binary file disassembler
|
|
10
|
+
|
|
11
|
+
SYNOPSIS
|
|
12
|
+
--------
|
|
13
|
+
*ndisasm* [ *-o* origin ] [ *-s* sync-point [...]] [ *-a* | *-i* ]
|
|
14
|
+
[ *-b* bits ] [ *-u* ] [ *-e* hdrlen ] [ *-p* vendor ]
|
|
15
|
+
[ *-k* offset,length [...]] infile
|
|
16
|
+
|
|
17
|
+
DESCRIPTION
|
|
18
|
+
-----------
|
|
19
|
+
The *ndisasm* command generates a disassembly listing of the binary file
|
|
20
|
+
infile and directs it to stdout.
|
|
21
|
+
|
|
22
|
+
OPTIONS
|
|
23
|
+
-------
|
|
24
|
+
*-h*::
|
|
25
|
+
Causes *ndisasm* to exit immediately, after giving a summary
|
|
26
|
+
of its invocation options.
|
|
27
|
+
|
|
28
|
+
*-r*|*-v*::
|
|
29
|
+
Causes *ndisasm* to exit immediately, after displaying its
|
|
30
|
+
version number.
|
|
31
|
+
|
|
32
|
+
*-o* 'origin'::
|
|
33
|
+
Specifies the notional load address for the file. This
|
|
34
|
+
option causes *ndisasm* to get the addresses it lists
|
|
35
|
+
down the left hand margin, and the target addresses
|
|
36
|
+
of PC-relative jumps and calls, right.
|
|
37
|
+
|
|
38
|
+
*-s* 'sync-point'::
|
|
39
|
+
Manually specifies a synchronisation address, such that
|
|
40
|
+
*ndisasm* will not output any machine instruction which
|
|
41
|
+
encompasses bytes on both sides of the address. Hence
|
|
42
|
+
the instruction which starts at that address will be
|
|
43
|
+
correctly disassembled.
|
|
44
|
+
|
|
45
|
+
*-e* 'hdrlen'::
|
|
46
|
+
Specifies a number of bytes to discard from the beginning
|
|
47
|
+
of the file before starting disassembly. This does not
|
|
48
|
+
count towards the calculation of the disassembly offset:
|
|
49
|
+
the first 'disassembled' instruction will be shown starting
|
|
50
|
+
at the given load address.
|
|
51
|
+
|
|
52
|
+
*-k* 'offset,length'::
|
|
53
|
+
Specifies that 'length' bytes, starting from disassembly
|
|
54
|
+
offset 'offset', should be skipped over without generating
|
|
55
|
+
any output. The skipped bytes still count towards the
|
|
56
|
+
calculation of the disassembly offset.
|
|
57
|
+
|
|
58
|
+
*-a*|*-i*::
|
|
59
|
+
Enables automatic (or intelligent) sync mode, in which
|
|
60
|
+
*ndisasm* will attempt to guess where synchronisation should
|
|
61
|
+
be performed, by means of examining the target addresses
|
|
62
|
+
of the relative jumps and calls it disassembles.
|
|
63
|
+
|
|
64
|
+
*-b* 'bits'::
|
|
65
|
+
Specifies 16-, 32- or 64-bit mode. The default is 16-bit
|
|
66
|
+
mode.
|
|
67
|
+
|
|
68
|
+
*-u*::
|
|
69
|
+
Specifies 32-bit mode, more compactly than using `-b 32'.
|
|
70
|
+
|
|
71
|
+
*-p* 'vendor'::
|
|
72
|
+
Prefers instructions as defined by 'vendor' in case of
|
|
73
|
+
a conflict. Known 'vendor' names include *intel*, *amd*,
|
|
74
|
+
*cyrix*, and *idt*. The default is *intel*.
|
|
75
|
+
|
|
76
|
+
RESTRICTIONS
|
|
77
|
+
------------
|
|
78
|
+
*ndisasm* only disassembles binary files: it has no understanding of
|
|
79
|
+
the header information present in object or executable files.
|
|
80
|
+
If you want to disassemble an object file, you should probably
|
|
81
|
+
be using *objdump*(1).
|
|
82
|
+
|
|
83
|
+
Auto-sync mode won't necessarily cure all your synchronisation
|
|
84
|
+
problems: a sync marker can only be placed automatically if a
|
|
85
|
+
jump or call instruction is found to refer to it 'before'
|
|
86
|
+
*ndisasm* actually disassembles that part of the code. Also,
|
|
87
|
+
if spurious jumps or calls result from disassembling
|
|
88
|
+
non-machine-code data, sync markers may get placed in strange
|
|
89
|
+
places. Feel free to turn auto-sync off and go back to doing
|
|
90
|
+
it manually if necessary.
|
|
91
|
+
|
|
92
|
+
SEE ALSO
|
|
93
|
+
--------
|
|
94
|
+
*objdump*(1)
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
MultiUser.nsh
|
|
4
|
+
|
|
5
|
+
Installer configuration for multi-user Windows environments
|
|
6
|
+
|
|
7
|
+
Copyright 2008-2009 Joost Verburg
|
|
8
|
+
Updated 2016 by H. Peter Anvin to handle 64-bit Windows
|
|
9
|
+
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
!ifndef MULTIUSER_INCLUDED
|
|
13
|
+
!define MULTIUSER_INCLUDED
|
|
14
|
+
!verbose push
|
|
15
|
+
!verbose 3
|
|
16
|
+
|
|
17
|
+
;Standard NSIS header files
|
|
18
|
+
|
|
19
|
+
!ifdef MULTIUSER_MUI
|
|
20
|
+
!include MUI2.nsh
|
|
21
|
+
!endif
|
|
22
|
+
!include nsDialogs.nsh
|
|
23
|
+
!include LogicLib.nsh
|
|
24
|
+
!include WinVer.nsh
|
|
25
|
+
!include FileFunc.nsh
|
|
26
|
+
|
|
27
|
+
;Variables
|
|
28
|
+
|
|
29
|
+
Var MultiUser.Privileges
|
|
30
|
+
Var MultiUser.InstallMode
|
|
31
|
+
|
|
32
|
+
;Command line installation mode setting
|
|
33
|
+
|
|
34
|
+
!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
|
|
35
|
+
!include StrFunc.nsh
|
|
36
|
+
!ifndef StrStr_INCLUDED
|
|
37
|
+
${StrStr}
|
|
38
|
+
!endif
|
|
39
|
+
!ifndef MULTIUSER_NOUNINSTALL
|
|
40
|
+
!ifndef UnStrStr_INCLUDED
|
|
41
|
+
${UnStrStr}
|
|
42
|
+
!endif
|
|
43
|
+
!endif
|
|
44
|
+
|
|
45
|
+
Var MultiUser.Parameters
|
|
46
|
+
Var MultiUser.Result
|
|
47
|
+
!endif
|
|
48
|
+
|
|
49
|
+
;Installation folder stored in registry
|
|
50
|
+
|
|
51
|
+
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
|
|
52
|
+
Var MultiUser.InstDir
|
|
53
|
+
!endif
|
|
54
|
+
|
|
55
|
+
!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
|
|
56
|
+
Var MultiUser.DefaultKeyValue
|
|
57
|
+
!endif
|
|
58
|
+
|
|
59
|
+
;Windows Vista UAC setting
|
|
60
|
+
|
|
61
|
+
!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin
|
|
62
|
+
RequestExecutionLevel admin
|
|
63
|
+
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
|
|
64
|
+
!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power
|
|
65
|
+
RequestExecutionLevel admin
|
|
66
|
+
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
|
|
67
|
+
!else if "${MULTIUSER_EXECUTIONLEVEL}" == Highest
|
|
68
|
+
RequestExecutionLevel highest
|
|
69
|
+
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
|
|
70
|
+
!else
|
|
71
|
+
RequestExecutionLevel user
|
|
72
|
+
!endif
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
|
|
76
|
+
Install modes
|
|
77
|
+
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
!macro MULTIUSER_INSTALLMODE_ALLUSERS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
|
|
81
|
+
|
|
82
|
+
;Install mode initialization - per-machine
|
|
83
|
+
|
|
84
|
+
${ifnot} ${IsNT}
|
|
85
|
+
${orif} $MultiUser.Privileges == "Admin"
|
|
86
|
+
${orif} $MultiUser.Privileges == "Power"
|
|
87
|
+
|
|
88
|
+
StrCpy $MultiUser.InstallMode AllUsers
|
|
89
|
+
|
|
90
|
+
SetShellVarContext all
|
|
91
|
+
|
|
92
|
+
!if "${UNINSTALLER_PREFIX}" != UN
|
|
93
|
+
;Set default installation location for installer
|
|
94
|
+
!ifdef MULTIUSER_INSTALLMODE_INSTDIR
|
|
95
|
+
StrCpy $INSTDIR "${GLOBALINSTDIR}\${MULTIUSER_INSTALLMODE_INSTDIR}"
|
|
96
|
+
!endif
|
|
97
|
+
!endif
|
|
98
|
+
|
|
99
|
+
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
|
|
100
|
+
|
|
101
|
+
ReadRegStr $MultiUser.InstDir HKLM "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
|
|
102
|
+
|
|
103
|
+
${if} $MultiUser.InstDir != ""
|
|
104
|
+
StrCpy $INSTDIR $MultiUser.InstDir
|
|
105
|
+
${endif}
|
|
106
|
+
|
|
107
|
+
!endif
|
|
108
|
+
|
|
109
|
+
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
|
|
110
|
+
Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
|
|
111
|
+
!endif
|
|
112
|
+
|
|
113
|
+
${endif}
|
|
114
|
+
|
|
115
|
+
!macroend
|
|
116
|
+
|
|
117
|
+
!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
|
|
118
|
+
|
|
119
|
+
;Install mode initialization - per-user
|
|
120
|
+
|
|
121
|
+
${if} ${IsNT}
|
|
122
|
+
|
|
123
|
+
StrCpy $MultiUser.InstallMode CurrentUser
|
|
124
|
+
|
|
125
|
+
SetShellVarContext current
|
|
126
|
+
|
|
127
|
+
!if "${UNINSTALLER_PREFIX}" != UN
|
|
128
|
+
;Set default installation location for installer
|
|
129
|
+
!ifdef MULTIUSER_INSTALLMODE_INSTDIR
|
|
130
|
+
${if} ${AtLeastWin2000}
|
|
131
|
+
StrCpy $INSTDIR "$LOCALAPPDATA\bin\${MULTIUSER_INSTALLMODE_INSTDIR}"
|
|
132
|
+
${else}
|
|
133
|
+
StrCpy $INSTDIR "${GLOBALINSTDIR}\${MULTIUSER_INSTALLMODE_INSTDIR}"
|
|
134
|
+
${endif}
|
|
135
|
+
!endif
|
|
136
|
+
!endif
|
|
137
|
+
|
|
138
|
+
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
|
|
139
|
+
|
|
140
|
+
ReadRegStr $MultiUser.InstDir HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
|
|
141
|
+
|
|
142
|
+
${if} $MultiUser.InstDir != ""
|
|
143
|
+
StrCpy $INSTDIR $MultiUser.InstDir
|
|
144
|
+
${endif}
|
|
145
|
+
|
|
146
|
+
!endif
|
|
147
|
+
|
|
148
|
+
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
|
|
149
|
+
Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
|
|
150
|
+
!endif
|
|
151
|
+
|
|
152
|
+
${endif}
|
|
153
|
+
|
|
154
|
+
!macroend
|
|
155
|
+
|
|
156
|
+
Function MultiUser.InstallMode.AllUsers
|
|
157
|
+
!insertmacro MULTIUSER_INSTALLMODE_ALLUSERS "" ""
|
|
158
|
+
FunctionEnd
|
|
159
|
+
|
|
160
|
+
Function MultiUser.InstallMode.CurrentUser
|
|
161
|
+
!insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER "" ""
|
|
162
|
+
FunctionEnd
|
|
163
|
+
|
|
164
|
+
!ifndef MULTIUSER_NOUNINSTALL
|
|
165
|
+
|
|
166
|
+
Function un.MultiUser.InstallMode.AllUsers
|
|
167
|
+
!insertmacro MULTIUSER_INSTALLMODE_ALLUSERS UN .un
|
|
168
|
+
FunctionEnd
|
|
169
|
+
|
|
170
|
+
Function un.MultiUser.InstallMode.CurrentUser
|
|
171
|
+
!insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER UN .un
|
|
172
|
+
FunctionEnd
|
|
173
|
+
|
|
174
|
+
!endif
|
|
175
|
+
|
|
176
|
+
/*
|
|
177
|
+
|
|
178
|
+
Installer/uninstaller initialization
|
|
179
|
+
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
!macro MULTIUSER_INIT_QUIT UNINSTALLER_FUNCPREFIX
|
|
183
|
+
|
|
184
|
+
!ifdef MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT
|
|
185
|
+
Call "${MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUCTIONQUIT}
|
|
186
|
+
!else
|
|
187
|
+
Quit
|
|
188
|
+
!endif
|
|
189
|
+
|
|
190
|
+
!macroend
|
|
191
|
+
|
|
192
|
+
!macro MULTIUSER_INIT_TEXTS
|
|
193
|
+
|
|
194
|
+
!ifndef MULTIUSER_INIT_TEXT_ADMINREQUIRED
|
|
195
|
+
!define MULTIUSER_INIT_TEXT_ADMINREQUIRED "$(^Caption) requires Administrator priviledges."
|
|
196
|
+
!endif
|
|
197
|
+
|
|
198
|
+
!ifndef MULTIUSER_INIT_TEXT_POWERREQUIRED
|
|
199
|
+
!define MULTIUSER_INIT_TEXT_POWERREQUIRED "$(^Caption) requires at least Power User priviledges."
|
|
200
|
+
!endif
|
|
201
|
+
|
|
202
|
+
!ifndef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE
|
|
203
|
+
!define MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this compuetr."
|
|
204
|
+
!endif
|
|
205
|
+
|
|
206
|
+
!macroend
|
|
207
|
+
|
|
208
|
+
!macro MULTIUSER_INIT_CHECKS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
|
|
209
|
+
|
|
210
|
+
;Installer initialization - check privileges and set install mode
|
|
211
|
+
|
|
212
|
+
!insertmacro MULTIUSER_INIT_TEXTS
|
|
213
|
+
|
|
214
|
+
UserInfo::GetAccountType
|
|
215
|
+
Pop $MultiUser.Privileges
|
|
216
|
+
|
|
217
|
+
${if} ${IsNT}
|
|
218
|
+
|
|
219
|
+
;Check privileges
|
|
220
|
+
|
|
221
|
+
!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin
|
|
222
|
+
|
|
223
|
+
${if} $MultiUser.Privileges != "Admin"
|
|
224
|
+
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}"
|
|
225
|
+
!insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}"
|
|
226
|
+
${endif}
|
|
227
|
+
|
|
228
|
+
!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power
|
|
229
|
+
|
|
230
|
+
${if} $MultiUser.Privileges != "Power"
|
|
231
|
+
${andif} $MultiUser.Privileges != "Admin"
|
|
232
|
+
${if} ${AtMostWinXP}
|
|
233
|
+
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_POWERREQUIRED}"
|
|
234
|
+
${else}
|
|
235
|
+
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}"
|
|
236
|
+
${endif}
|
|
237
|
+
!insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}"
|
|
238
|
+
${endif}
|
|
239
|
+
|
|
240
|
+
!endif
|
|
241
|
+
|
|
242
|
+
!ifdef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
|
|
243
|
+
|
|
244
|
+
;Default to per-machine installation if possible
|
|
245
|
+
|
|
246
|
+
${if} $MultiUser.Privileges == "Admin"
|
|
247
|
+
${orif} $MultiUser.Privileges == "Power"
|
|
248
|
+
!ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
|
|
249
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
|
|
250
|
+
!else
|
|
251
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
|
|
252
|
+
!endif
|
|
253
|
+
|
|
254
|
+
!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
|
|
255
|
+
|
|
256
|
+
;Set installation mode to setting from a previous installation
|
|
257
|
+
|
|
258
|
+
!ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
|
|
259
|
+
ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
|
|
260
|
+
${if} $MultiUser.DefaultKeyValue == ""
|
|
261
|
+
ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
|
|
262
|
+
${if} $MultiUser.DefaultKeyValue != ""
|
|
263
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
|
|
264
|
+
${endif}
|
|
265
|
+
${endif}
|
|
266
|
+
!else
|
|
267
|
+
ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
|
|
268
|
+
${if} $MultiUser.DefaultKeyValue == ""
|
|
269
|
+
ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}"
|
|
270
|
+
${if} $MultiUser.DefaultKeyValue != ""
|
|
271
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
|
|
272
|
+
${endif}
|
|
273
|
+
${endif}
|
|
274
|
+
!endif
|
|
275
|
+
|
|
276
|
+
!endif
|
|
277
|
+
|
|
278
|
+
${else}
|
|
279
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
|
|
280
|
+
${endif}
|
|
281
|
+
|
|
282
|
+
!else
|
|
283
|
+
|
|
284
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
|
|
285
|
+
|
|
286
|
+
!endif
|
|
287
|
+
|
|
288
|
+
!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
|
|
289
|
+
|
|
290
|
+
;Check for install mode setting on command line
|
|
291
|
+
|
|
292
|
+
${${UNINSTALLER_FUNCPREFIX}GetParameters} $MultiUser.Parameters
|
|
293
|
+
|
|
294
|
+
${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/CurrentUser"
|
|
295
|
+
|
|
296
|
+
${if} $MultiUser.Result != ""
|
|
297
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser
|
|
298
|
+
${endif}
|
|
299
|
+
|
|
300
|
+
${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/AllUsers"
|
|
301
|
+
|
|
302
|
+
${if} $MultiUser.Result != ""
|
|
303
|
+
${if} $MultiUser.Privileges == "Admin"
|
|
304
|
+
${orif} $MultiUser.Privileges == "Power"
|
|
305
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
|
|
306
|
+
${else}
|
|
307
|
+
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE}"
|
|
308
|
+
${endif}
|
|
309
|
+
${endif}
|
|
310
|
+
|
|
311
|
+
!endif
|
|
312
|
+
|
|
313
|
+
${else}
|
|
314
|
+
|
|
315
|
+
;Not running Windows NT, per-user installation not supported
|
|
316
|
+
|
|
317
|
+
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
|
|
318
|
+
|
|
319
|
+
${endif}
|
|
320
|
+
|
|
321
|
+
!macroend
|
|
322
|
+
|
|
323
|
+
!macro MULTIUSER_INIT
|
|
324
|
+
!verbose push
|
|
325
|
+
!verbose 3
|
|
326
|
+
|
|
327
|
+
!insertmacro MULTIUSER_INIT_CHECKS "" ""
|
|
328
|
+
|
|
329
|
+
!verbose pop
|
|
330
|
+
!macroend
|
|
331
|
+
|
|
332
|
+
!ifndef MULTIUSER_NOUNINSTALL
|
|
333
|
+
|
|
334
|
+
!macro MULTIUSER_UNINIT
|
|
335
|
+
!verbose push
|
|
336
|
+
!verbose 3
|
|
337
|
+
|
|
338
|
+
!insertmacro MULTIUSER_INIT_CHECKS Un un.
|
|
339
|
+
|
|
340
|
+
!verbose pop
|
|
341
|
+
!macroend
|
|
342
|
+
|
|
343
|
+
!endif
|
|
344
|
+
|
|
345
|
+
/*
|
|
346
|
+
|
|
347
|
+
Modern UI 2 page
|
|
348
|
+
|
|
349
|
+
*/
|
|
350
|
+
|
|
351
|
+
!ifdef MULTIUSER_MUI
|
|
352
|
+
|
|
353
|
+
!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE
|
|
354
|
+
|
|
355
|
+
!ifndef MULTIUSER_INSTALLMODEPAGE_INTERFACE
|
|
356
|
+
!define MULTIUSER_INSTALLMODEPAGE_INTERFACE
|
|
357
|
+
Var MultiUser.InstallModePage
|
|
358
|
+
|
|
359
|
+
Var MultiUser.InstallModePage.Text
|
|
360
|
+
|
|
361
|
+
Var MultiUser.InstallModePage.AllUsers
|
|
362
|
+
Var MultiUser.InstallModePage.CurrentUser
|
|
363
|
+
|
|
364
|
+
Var MultiUser.InstallModePage.ReturnValue
|
|
365
|
+
!endif
|
|
366
|
+
|
|
367
|
+
!macroend
|
|
368
|
+
|
|
369
|
+
!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE
|
|
370
|
+
|
|
371
|
+
!insertmacro MUI_SET MULTIUSER_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLMODEPAGE ""
|
|
372
|
+
!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
|
|
373
|
+
|
|
374
|
+
!insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)"
|
|
375
|
+
!insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)"
|
|
376
|
+
!insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)"
|
|
377
|
+
|
|
378
|
+
PageEx custom
|
|
379
|
+
|
|
380
|
+
PageCallbacks MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID}
|
|
381
|
+
|
|
382
|
+
Caption " "
|
|
383
|
+
|
|
384
|
+
PageExEnd
|
|
385
|
+
|
|
386
|
+
!insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID}
|
|
387
|
+
|
|
388
|
+
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP
|
|
389
|
+
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS
|
|
390
|
+
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER
|
|
391
|
+
|
|
392
|
+
!macroend
|
|
393
|
+
|
|
394
|
+
!macro MULTIUSER_PAGE_INSTALLMODE
|
|
395
|
+
|
|
396
|
+
;Modern UI page for install mode
|
|
397
|
+
|
|
398
|
+
!verbose push
|
|
399
|
+
!verbose 3
|
|
400
|
+
|
|
401
|
+
!ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
|
|
402
|
+
!error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest."
|
|
403
|
+
!endif
|
|
404
|
+
|
|
405
|
+
!insertmacro MUI_PAGE_INIT
|
|
406
|
+
!insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE
|
|
407
|
+
|
|
408
|
+
!verbose pop
|
|
409
|
+
|
|
410
|
+
!macroend
|
|
411
|
+
|
|
412
|
+
!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE
|
|
413
|
+
|
|
414
|
+
!ifndef MULTIUSER_TEXT_NOTADMIN
|
|
415
|
+
!define MULTIUSER_TEXT_NOTADMIN "The installer is currently running as an unprivileged user. It will not be possible to install this software for all users on the system. Cancel and re-run the installer as Administrator to install system-wide."
|
|
416
|
+
!endif
|
|
417
|
+
|
|
418
|
+
;Page functions of Modern UI page
|
|
419
|
+
|
|
420
|
+
Function "${PRE}"
|
|
421
|
+
|
|
422
|
+
${ifnot} ${IsNT}
|
|
423
|
+
Abort
|
|
424
|
+
${endif}
|
|
425
|
+
|
|
426
|
+
${if} $MultiUser.Privileges != "Power"
|
|
427
|
+
${andif} $MultiUser.Privileges != "Admin"
|
|
428
|
+
MessageBox MB_OKCANCEL "${MULTIUSER_TEXT_NOTADMIN}" /SD IDOK IDABORT nofun
|
|
429
|
+
Abort
|
|
430
|
+
|
|
431
|
+
nofun:
|
|
432
|
+
Quit
|
|
433
|
+
${endif}
|
|
434
|
+
|
|
435
|
+
!insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
|
|
436
|
+
!insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE)
|
|
437
|
+
|
|
438
|
+
nsDialogs::Create 1018
|
|
439
|
+
Pop $MultiUser.InstallModePage
|
|
440
|
+
|
|
441
|
+
${NSD_CreateLabel} 0u 0u 300u 20u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}"
|
|
442
|
+
Pop $MultiUser.InstallModePage.Text
|
|
443
|
+
|
|
444
|
+
${NSD_CreateRadioButton} 20u 50u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}"
|
|
445
|
+
Pop $MultiUser.InstallModePage.AllUsers
|
|
446
|
+
|
|
447
|
+
${NSD_CreateRadioButton} 20u 70u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}"
|
|
448
|
+
Pop $MultiUser.InstallModePage.CurrentUser
|
|
449
|
+
|
|
450
|
+
${if} $MultiUser.InstallMode == "AllUsers"
|
|
451
|
+
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0
|
|
452
|
+
${else}
|
|
453
|
+
SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0
|
|
454
|
+
${endif}
|
|
455
|
+
|
|
456
|
+
!insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
|
|
457
|
+
nsDialogs::Show
|
|
458
|
+
|
|
459
|
+
FunctionEnd
|
|
460
|
+
|
|
461
|
+
Function "${LEAVE}"
|
|
462
|
+
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $MultiUser.InstallModePage.ReturnValue
|
|
463
|
+
|
|
464
|
+
${if} $MultiUser.InstallModePage.ReturnValue = ${BST_CHECKED}
|
|
465
|
+
Call MultiUser.InstallMode.AllUsers
|
|
466
|
+
${else}
|
|
467
|
+
Call MultiUser.InstallMode.CurrentUser
|
|
468
|
+
${endif}
|
|
469
|
+
|
|
470
|
+
!insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
|
|
471
|
+
FunctionEnd
|
|
472
|
+
|
|
473
|
+
!macroend
|
|
474
|
+
|
|
475
|
+
!endif
|
|
476
|
+
|
|
477
|
+
!verbose pop
|
|
478
|
+
!endif
|