问题
We made some changes to the installation and updating process of our Windows app recently, and some users are now complaining that Windows sometimes automatically deletes the main application .exe
file.
It usually occurs after users update app using built-in web update feature. The feature is implemented using .msi
built in Advanced Installer tool.
We are struggling to figure out what is causing this, and haven't found a way to consistently reproduce the issue (though we've seen it happen as well).
Here's what changed with our installation and web updating process:
The main installer for our application is now a standard
.msi
, which becomes a part of the Windows installation system and is natively manageable by Group Policy and other system features, such as rollback or versions. In previous versions that did not have this problem, our installer was a.exe
built with the SetupBuilder tool.We introduced the redesigned web updater feature inside the app (to update to new versions within the app). It uses the same
.msi
as the main deliverable as for installation..msi
is downloaded from our server in a form of.exe
which is then extracts MSI and starts it. MSI then updates file in our installation. These.exe
and.msi
is built with Advanced Installer tool which provides such a web update feature to developers. In previous versions that did not have this problem, our web update feature was developed with SetupBuilder tool which provided a custom web update files -.exe
web updater that downloads a number of web update files containing patch to our app.
The goal of a transition to the standard .msi
installer was to make it easy for our clients to deploy the app in organizations - say, mass deploy using group policies and other similar tools.
Has anyone else experienced a problem like this? Any ideas on how to troubleshoot and try to reproduce?
回答1:
Theory: Before doing anything else:
The first thing I would ask the people who report the problem is if they have re-packaged your older, legacy (non-MSI) setup to be their own MSI file?
This can cause a well-known upgrade problem along the lines of what you explain (file missing). Please check first. Tell them to uninstall the existing version and then install the new one - that is the simplest way. Not always enough (some obscure problems possible).Mismatched component GUIDs could cause missing files after upgrade, as could file version downgrade scenarios and various other technicalities. You could try to install to a new default location on disk to avoid these problems. The reason this can work is very technical and hard to explain tersely. Essentially you de-couple yourself from "the sins of the past". It is generally enough to change the name of the file in question: for example
MyApp.exe
toMyAppNew.exe
or maybe add the major version:MyApp5.exe
, but maybe try the folder change firstProgramFiles\MyCompany\MyApp
=>
ProgramFiles\MyCompany\MyApp5
.How do you configure your upgrade? View "Upgrades", what is selected: "
Uninstall old version first and then install new version
" or "Install new version first and then uninstall old version
".Blog Entry:: Why Windows Installer removes files during a major upgrade if they go backwards in version numbers (might be of help).
Deployment Debugging: For open ended debugging of MSI and deployment problems in general one obviously needs to gather intel and that means logging and system inspection.
Logging: First try to get a proper log file for the systems where this problem occurs. In Advanced Installer you can tick the "Enable verbose logging" in the Install Parameters
view to enable verbose logging for all package installations. This adds the MsiLogging property to the compiled MSI and every installation of the MSI will cause a MSI log file with a random name to be created in the TMP folder. View the folder, sort by date and the file should be at the top. Suggest you do this and then tell the users to send you the log files when relevant. Maybe you have this setting enabled already?
Further Logging: There are many ways to enable logging, and you can find a description here: Enable installation logs for MSI installer without any command line arguments. The MsiLogging property is just one possibility.
- To log a single MSI setup: http://www.installsite.org/pages/en/msifaq/a/1022.htm.
- To enable global logging for all MSI operations on the machine: Please see this FAQ-entry from installsite.org, section "Globally for all setups on a machine" - for the exact procedure.
- How to interpret an MSI Log File.
来源:https://stackoverflow.com/questions/55918732/why-app-installed-using-msi-installer-would-disappear-from-windows