Note that there are some explanatory texts on larger screens.

plurals
  1. POCan a .msi file install itself (presumably via a Custom Action)?
    primarykey
    data
    text
    <p>I wand to construct an MSI which, in its installation process, will deploy itself along with its contained Files/Components, to the TargetDir.</p> <p>So MyApp.msi contains MyApp.exe and MyAppBootstrapperEmpty.exe (with no resources) in its File Table.</p> <p>The user launches a MyAppBootstrapperPackaged.exe (containing MyApp.msi as a resource, obtained from the internet somewhere, or email or otherwise). MyAppBootStrapperPackaged.exe extracts MyApp.msi to a temp folder and executes it via msiexec.exe.</p> <p>After the msiexec.exe process completes, I want MyApp.msi, MyBootstrapperEmpty.exe (AND MyApp.exe in %ProgramFiles%\MyApp folder so MyApp.exe can be assured access to MyApp.msi when it runs (for creating the below-mentioned packaged content).</p> <p>MyAppBootstrapper*.exe could try and copy MyApp.msi to %ProgramFiles%\MyApp folder, but would need elevation to do so, and would not allow for its removal via Windows Installer uninstall process (from Add/Remove Programs or otherwise), which should be preserved.</p> <p>Obviously (I think it's obvious - am I wrong?) I can't include the MSI as a file in my Media/CAB (chicken and egg scenario), so I believe it would have to be done via a Custom Action before the install process, adding the original MSI to the MSI DB's Media/CAB and the appropriate entry in the File table on the fly. Can this be done and if so how?</p> <p>Think of a content distribution model where content files are only ever to be distributed together with the App. Content is produced by the end user via the App at run time, and packaged into a distributable EXE which includes both the App and the content.</p> <p>MyApp's installer must remain an MSI, but may be executed by a Bootstrapper EXE. The installed MyApp.exe must have access to both MyApp.msi and EXE is to be "assembled" at runtime by the App from a base (empty) MyAppBootstrapper.exe, which is also installed by the MSI, and the content created by the end-user. The EXE's resource MSI must be the same as that used to install the App which is doing the runtime packaging.</p> <p>WIX is not to be installed with MyApp.</p> <p>There can be no network dependencies at run-/packaging- time (i.e. can't do the packaging via a Webservice - must be done locally).</p> <p>I am familiar with (and using) Custom Actions (managed and unmanaged, via DTF and otherwise).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. COPlease don't hack this, it will cause you more problems than you realize. MSI files are designed to be run one at a time. The WIX team has been working on a way to sequence the installation of several MSI files for some time, I am actually not sure of the current status, but it is worth checking it out. A large corporation might ban your install completely if it starts nesting installs and do other things that could make your install unservicable with patches and updates. I am not kidding, I have worked in large companies with deployment, and it kills products all the time.
      singulars
    2. COSeems like you desire to make a simple scenario quite complicated. When I understand your question correctly you only care about distributing a single installer, so why not use some self-extracting installation file like it can be created with WinZip or IExpress (which comes with Windows for free)?
      singulars
    3. COBecause we want to participate as a good Windows citizen application and allow uninstallation via the normal "Add/Remove Programs" ("Programs and Features" in Vista) mechanism. And distributing a single installer is not the only we care about. We are installing the application, which is multiple files and settings, but we also need to have the installer which installed that application available to the installed application itself.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload