cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Anonymous
Not applicable

Repair and Modify fail due to missing msi file

I've created a new InstallScript MSI installer using IS 2008. The media format is "Network Image (Unlimited)" and it generates a single exe file.

When I use Add/Remove Programs and try to Repair or Modify my installation, I get an error message about it being able to locate the MSI file. The message refers to a folder in the temp directory where all my other setup files can be found, but not the MSI package.

I checked the "InstallShield Installation Information" folder in "Program Files" and the MSI is not there either.

Repair and Modify work fine if I run the original setup.

Can anyone shed any light?
Labels (1)
0 Kudos
(7) Replies
RobertDickau
Flexera Alumni

To keep the MSI database from being deleted from the temporary location, perhaps use the single-EXE Web media type, specifying a cache location for the MSI database?
0 Kudos
Anonymous
Not applicable

Thanks for the tip!

Using the Web media type lets me cache the msi, but introduces a new problem: when I uninstall, the msi file is left behind (in a folder that is named for the package code guid).

I realize that I can delete it in InstallScript, but unless I'm missing something, the package code does not appear to be available to InstallScript.

Also, the default location of "[LocalAppDataFolder]Downloaded Installations" means that another user can't Modify/Repair. I changed it to [CommonAppDataFolder], but it seems that this feature is not well thought out.

Ideally, the MSI would be stored in "Program Files\InstallShield Installation Information" along with setup.exe etc., and removed on uninstall.

Regards,
David
0 Kudos
Anonymous
Not applicable

It turns out I can't delete it in InstallScript because it's in use by the uninstall.

And if I install an upgrade I get multiple "package code" folders and msi files.

How are others handling this?

Regards,
David
0 Kudos
chrisselnes
Level 4

Hi David,

As far as I know there is no way to remove the cached msi file after uninstall inside the msi file that is uninstalling. We have to cache the file for patching and I have always just left it on the users machine. Not the cleanest option but given our requirements it has gotten by. I would also be interested to see if someone has resolved this issue.

Chris
0 Kudos
Anonymous
Not applicable

That seems to be true, although I'm not sure why it's this way. If you don't cache the msi file, then "Remove" works just fine. So why is it necessary to have the msi open if it happens to be present?

In any case, my "solution" is to cache the msi in its "guid" folder under [CommonAppDataFolder]MyCoFolder\MyAppFolder and then on "remove"
I call DeleteDir(ALLCONTENTS) for MyAppFolder and DeleteDir(ONLYDIR) on MyCoFolder.

Of course, it fails, but I can then alert the user to remove it manually.

Regards,
David
0 Kudos
charlieantao
Level 6

RobertDickau wrote:
To keep the MSI database from being deleted from the temporary location, perhaps use the single-EXE Web media type, specifying a cache location for the MSI database?


Can you explain (or just point me to the relevant link) what the differences are between a Web exe and a network image?
0 Kudos
Not applicable

Also, the default location of "[LocalAppDataFolder]Downloaded Installations" means that another user can't Modify/Repair. I changed it to [CommonAppDataFolder], but it seems that this feature is not well thought out.


This is actually not correct. The user attempting to locate the cached MSI package is System and not the currently running user. As long as System has access to that location (which it always will), there will be no issues.

However, on some systems, the current user may not have access to CommonAppDataFolder; therefore, it is not the best choice in this situation. LocalAppDataFolder will always have sufficient permissions for the current user to save the MSI package.

The only situation in which this would not be true is a per-user installation, which by definition should cache to LocalAppDataFolder.

Further, Microsoft has reccomended that this is the location you should cache your files. Additionally, they use a similar location as well 🙂

At one point in time, I thought that was the case as well; however, testing shows that it is not.

That seems to be true, although I'm not sure why it's this way. If you don't cache the msi file, then "Remove" works just fine. So why is it necessary to have the msi open if it happens to be present?


Windows Installer may require the source MSI package during runtime. It's kind of a chicken and egg scenario. There is no graceful solution and anything to remove the cached package will require a reboot to finish.

Can you explain (or just point me to the relevant link) what the differences are between a Web exe and a network image?


The biggest differences would be what you can do with each release. A network image doesn't have any capability for things like a downloader, web based installation, or one click install. You can see more, honestly, by just stepping through the release wizard.

The option to cache your package on the local machine exists in both the web and network image release types (the name Cache Web Download is a bit of a misnomer and is no longer used as of 2008).
0 Kudos