Installshield 2013 Installscript MSI:修复期间错误的.msi位置 [英] Installshield 2013 Installscript MSI: Wrong .msi location during Repair

查看:173
本文介绍了Installshield 2013 Installscript MSI:修复期间错误的.msi位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个非常简单的installscript MSI项目-它可以将一些文件复制到一个文件夹中,更新一些注册表项,就可以了.

I've got a pretty simple installscript MSI project - it copies some files into a folder, updates a few registry keys and that's pretty much it.

当我尝试使用修复"功能时(通过重新启动安装程序,或者通过选择应用程序和功能"下的应用程序的修改"选项),当我进入复制新文件"时,会收到以下消息;阶段:

When I try to use the Repair function (either by re-launching the installer, or by choosing the app's Modify option under Apps & Features), I get the following message, when it gets to the "Copying new files" stage:

"您尝试使用的功能位于不可用的网络资源上.

"The feature you are trying to use is on a network resource that is unavailable.

单击确定"重试,​​或在下面的框中输入包含安装包'project.msi'的文件夹的备用路径."

Click OK to try again, or enter an alternate path to a folder containing the installation package 'project.msi' in the box below."

查找.msi文件的路径为%TEMP%\[SOME_RANDOM_HEXADECIMAL_STRING]

The path in which it looks for the .msi file is %TEMP%\[SOME_RANDOM_HEXADECIMAL_STRING]

这个随机的十六进制字符串似乎与项目没有特别的关系.它既不是产品代码,也不是升级代码,也不是包装代码.

This random hexadecimal string doesn't seem to be specifically related to the project. It's neither the Product Code nor the Upgrade Code nor the Package Code.

当我在注册表中查找它时,可以在以下项的值中找到它:

When I look for it in the registry, I find it in the values of the following keys:

Computer\HKEY_CLASSES_ROOT\Installer\Products\[SCRAMBLED_PRODUCT_CODE]\SourceList\LastUsedSource
Computer\HKEY_CLASSES_ROOT\Installer\Products\[SCRAMBLED_PRODUCT_CODE]\SourceList\Net\3
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\[ANOTHER_SCRAMBLED_PRODUCT_CODE]\SourceList\LastUsedSource
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\[ANOTHER_SCRAMBLED_PRODUCT_CODE]\SourceList\Net\3

%TEMP%文件夹中,我可以在一个文件夹中找到.msi文件,该文件夹具有另一个随机十六进制字符串作为其名称.该文件夹根本不会出现在注册表中.

Looking at the %TEMP% folder, I can find the .msi file in a folder that has another random hexadecimal string as its name. That folder does not appear in the registry at all.

我不希望我的客户每次想要修复我的产品的安装时都去寻找.msi文件.如何让安装程序知道.msi文件的位置?

I don't want my clients to go looking for .msi files every time they want to repair an installation of my product. How can I let the installer know the .msi file's location?

推荐答案

由于临时文件夹已被清除(安装最初从中运行),因此从中安装的源文件可能只是丢失.

The source files you installed from are probably just missing since your temp folder has been cleaned out (where the install originally ran from).

曾经有一个cache the whole MSI - feature,您可以在发布配置基础(Cache MSI Locally).我相信通过将整个MSI缓存在安全的位置,可以解决"此问题(请参阅第3节).尽管使用了更多的磁盘空间,但许多人还是这样做.

There used to be a cache the whole MSI - feature you could enable on a release-configuration basis (Cache MSI Locally). This would "solve" this problem I believe by caching the whole MSI in a safe location (see section 3). Many do this, despite the increased disk space used.

另一种选择是从

Another option is to install from an administrative installation (essentially an extract of your setup's files - run via setup.exe /a or msiexec.exe /a MySetup.msi - which has been put available on a network share, always available for repair or modify operations). This is what corporate deployment uses to support repair and modify operations.

这篇关于Installshield 2013 Installscript MSI:修复期间错误的.msi位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆