added link to stackoverflow discussion
msi.dll source code does not seem to be published
|Deletions are marked like this.||Additions are marked like this.|
|Line 1:||Line 1:|
|= Gpg4win installer|
|Line 9:||Line 10:|
|== criteria||== Criteria|
|Line 30:||Line 31:|
|# maybe inspected before execution? Could be security feature or makeing it possible to get it installed in more restricted environments?||# maybe inspected before execution? Could be security feature or making it possible to get it installed in more restricted environments?|
|Line 32:||Line 33:|
|== discussion||== Discussion|
|Line 43:||Line 44:|
|=== examples for "executable" installers||=== Examples for "executable" installers|
|Line 48:||Line 49:|
|* Media Creation Tool (Installer für Windows 10)||* Media Creation Tool (Installer for Windows 10)|
|Line 72:||Line 73:|
|=== msi aka "Windows Installer"||=== MSI aka "Windows Installer"|
|Line 125:||Line 126:|
Source code (2015-12-02) **not** found on
* https://github.com/dotnet/corefx and other github repos
|Line 128:||Line 137:|
|// Discussion about the best installing technology targetting MS Windows. Started by bernhard.//||// Discussion about the best installing technology targeting MS Windows. Started by Bernhard.//|
TODO, under construction
Gpg4win v2.3.0 and earlier uses an installer build on top of NSIS, cross build on Debian GNU/Linux. There were once instructions to manually build an MSI installer from the NSIS package, which are now outdated (see below).
Should we use something else? What is a better solution?
(Todo: weight and rank)
- can be automated, because manual building will induce errors, is less reproducible and costs significant efforts.
- can be cross build, because main GnuPG build environment and developer community is on GNU/Linux.
- consists of Free Software, so it can be independently audited
- behaves like a common application on the platform, so users can use their tools and knowledge
- if a software distribution system or a system management solution is used, we shall play nice with it.
- deinstallation should work via system controls
- looks attractive, to promote acceptance.
- can be internationalized, because GnuPG and apps target a lot of international users. German is a core language.
- can do everything that is needed, e.g. if services are to registered for autostart.
- is easy to understand and change, because this reduces efforts and problems.
- handling some level of dependencies and version, because we want Ggp4win to be updated separately from applications that use it, e.g. Claws Mail.
- we also want the crypto engine to be updateable independently from "the rest" of Gpg4win. Rationale: less risk of breaking by separate testing and faster (security) updates.
- install/updates/deinstall should be possible
- update notifications, so that users will know when they run an outdated version and should update.
- verification of the Installer, so that user can be sure where it comes from.
- allow (volunteering) payments?
- allow to be found, conceived via "popular" stores? Windows App Store? Steam?
- maybe inspected before execution? Could be security feature or making it possible to get it installed in more restricted environments?
WiX 3 tutorial makes a case for Windows Installer/MSI as being declarative and thus more robust. But recommends WiX only for more complicated cases: The relatively steep learning curve [..] and the unavoidable exposure to the internal details and, sometimes, intricacies of the underlying Windows Installer technology suggest that [..] those who don't really need the [..] performance [..] might be better served by a simpler, GUI-based setup authoring tool [..]
Stefan Kanthak's case against executable installers, does not discuss given reasons for using a "bootstrapper" like burn from WiXtools.
http://installsite.org/ (contaminated with advertisements) but links to old and new stuff The Future of Windows Installer (MSI) in the Light of Windows 10 and the Universal Windows Platform:
AppX is now our deployment model. MSI isn’t going to go away, but we want you to move to AppX. (May 3rd, 2015)
Examples for "executable" installers
Microsoft and other known vendors still use executable installers. (That may or may not include Windows Installer (aka msi) files.) Probably for a reason. (Which reasons more precisely?)
- Media Creation Tool (Installer for Windows 10)
- Outlook 2013 Installer
- Outlook 2016 Installer
- Microsoft Word Viewer
- Microsoft dot net Framework installer
- EvE Online
- WiX itself, e.g. comes as wx310.exe https://wix.codeplex.com/releases/ , the move was made between v3.5 and 2012 v3.6
It may still be state of the art used by a large fraction (how large, majority?) of current software products for windows.
- need to load additional files from the internet?
- need to register system services?
- easier to construct or to control?
- more transparent in what will be happening? As custom actions seems possible with Windows Installer, it is unclear where the limitation is.
- 2009: Rob Mensching about adding am executable "bootstrapper" to WiX Double clicking an MSI file should be sufficient to get the installation process going. Unfortunately, due to several design decisions in the Windows Installer there are a plethora of work items for a bootstrapper.
MSI aka "Windows Installer"
Old, probably outdated instructions to build an msi Installer for Gpg4win: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpg4win.git;a=blob_plain;f=src/README-msi.txt;hb=HEAD
https://en.wikipedia.org/wiki/COM_Structured_Storage The format inside is unspecified and implemented in msi.dll.
If you really want to know more about the details of the internals of the MSI file format then take a read through of these two blog articles by Rob Mensching (the author of WiX)
- 2003: http://robmensching.com/blog/posts/2003/11/25/inside-the-msi-file-format/
- 2004: http://robmensching.com/blog/posts/2004/2/10/inside-the-msi-file-format-again/
It is possible to launch executables from MSI during installation:
- https://msdn.microsoft.com/en-us/library/aa368066%28v=vs.85%29.aspx "You want to launch an executable during installation"
MSI files can contain other MSI files and other files like CAB files.
Free Software that potentially could read/write COM Structured Storage files:
http://wixtoolset.org/ The WiX toolset builds Windows installation packages from XML source code.
It uses msi.dll for the internal, undocumented database implementation inside "COM structure storage", thus it cannot run without a windows implementation like Wine.
http://wixtoolset.org/issues/4381/, 2014-04: """The managed code should work on Mono but WiX contains native code and relies on an implementation of msi.dll. You end up needing Wine anyway. """
- 2007: Marcus trying msi.dll on Wine: http://marc.info/?l=wine-patches&m=119455178826804&w=2
- 2005: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/WiX-on-mono-td689218.html So, you can run WiX on Mono but you can't necessarily build MSI files except on Windows.
Source code (2015-12-02) not found on
- https://github.com/dotnet/corefx and other github repos
Discussion about the best installing technology targeting MS Windows. Started by Bernhard.