getting msi from setup.exe and repacking

V

Viviana Vc

Hi all,

Let's say I deliver a package only as a .msi file. Is there a way to
replace one of the files from the package? For instance I prepare a
package with a readme.txt file and I deliver to a system admin that
wants to replace this readme.txt file. Is this possible somehow if I
provide the installer as a msi package?

Can this be done if I provide a setup.exe only? I know that one can
unpack whatever is in the setup.exe by doing setup.exe /v /a and then
the needed file can be replaced, but can then also everything get
packaged again into a setup.exe inluding on a linux machine?

Thanks,
Viv
 
L

Luke Surace

Im not too sure how a setup.exe would work on a linux machine :)

But for an msi based package, you can just change where the file/files are
picked up from. You could place the readme.txt in a folder under where the
msi is sitting and change the File Table so that the file is picked up from
here.

If you are using install shield, Install Shield allows you to keep the files
uncompressed instead of placing them inside a CAB which would achieve the
result you are after.

cheers,
Luke
 
V

Viviana Vc

Hi Luke,

Thanks for you answer. My answer is inline ...
Im not too sure how a setup.exe would work on a linux machine :)

Good question :) Actually I just need the package to be changed on a
linux machine, meaning the system admin having a setup.exe or a .msi
file and to be able on a linux machine to replace my readme.txt with his
readme.txt.
But for an msi based package, you can just change where the file/files are
picked up from. You could place the readme.txt in a folder under where the
msi is sitting and change the File Table so that the file is picked up from
here.

I'm not sure I understand this. I know I could provide the package as:
a) a setup.exe. In this case I could use setup.exe /v /a to get the
package uncompressed. I am not sure if abusing the flag /a is correct
but for me seems to just uncompress the package which is exactly what I
need. Then the system admin could replace the readme.txt, but how could
he then pack them all again together on a linux machine in order then to
put the final package on a downloable intranet page?
b) a not compressed package meaning I will get all the files outside the
msi or cab file so in this case the files can be easily replaced, but
this way of deployment is not desired by my bosses
c) a msi file containing the whole package and all of the files from the
package (so the whole package is formed from a msi file only).
- Is there a way in this case to replace the readme.txt file on a linux
system?
- If not on a linux system would be this possible with Orca? (I checked
the File table but I don't see anywhere specified the path from where a
file is taken)
If you are using install shield, Install Shield allows you to keep the files
uncompressed instead of placing them inside a CAB which would achieve the
result you are after.

Yes, besides the fact that my bosses want a file only as the installer
be it either setup.exe or msi file not a set of files :(
 
K

Kalle Olavi Niemitalo

Viviana Vc said:
Good question :) Actually I just need the package to be changed on a
linux machine, meaning the system admin having a setup.exe or a .msi
file and to be able on a linux machine to replace my readme.txt with his
readme.txt.

Microsoft is not publicly documenting the MSI file format, and
the published APIs for modifying MSI files are only implemented
in Windows.

I think the most reliable solution would be to:

1. Make yourprogram.msi refer to an external readme.txt in the
same directory, while keeping the other files in (possibly
embedded) CABs.

2. Embed yourprogram.msi, readme.txt and any external CABs in a
bootstrapper setup.exe; possibly as resources, or just extra
PE sections. As long as you know the format of this
embedding, it will be possible to write a portable program to
replace individual files such as readme.txt, and then run it
in Linux or RISC OS or whatever.

3. Make setup.exe create a temporary directory, extract all
embedded files into it, install the package, and remove the
directory.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top