msiexec是安装MSI程序的命令提示符软件.但我发现只需在命令行输入MSI文件的名称,就可以从命令行安装MSI文件.
但是为了卸载MSI文件,你似乎必须调用该msiexec程序并给它一个/x或/uninstall.
如何在不使用msiexec例程的情况下从命令行卸载MSI ?
TL; DR:为什么我需要在这个条件组件中使用空 <CreateFolder/>元素才能使其工作?
我正在为一个内部应用程序组装一个简单的基于WiX的安装程序.此安装程序需要部署标准配置文件(普通.NET .config文件),然后使用msiexec在命令行上传递的属性对其进行自定义.
其中一个自定义是仅在已定义RUNTIME属性时才创建特定的应用程序设置.这是WiX组件:
<Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime"
Guid="*">
<Condition>
<![CDATA[RUNTIME]]>
</Condition>
<CreateFolder/>
<util:XmlFile Id="X.Runtime.1"
Action="createElement"
ElementPath="/configuration/appSettings"
File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
Name="add"
Sequence="2"/>
<util:XmlFile Id="X.Runtime.2"
File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
ElementPath="/configuration/appSettings/add[\[]not(@key)[\]]"
Action="setValue"
Name="key"
Value="RunTime"
Sequence="3"/>
<util:XmlFile Id="X.Runtime.3"
File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
ElementPath="/configuration/appSettings/add[\[]@key='RunTime'[\]]"
Action="setValue"
Name="value"
Value="[RUNTIME]"
Sequence="4"/>
</Component>
Run Code Online (Sandbox Code Playgroud)
这正如我想要的那样 - 如果在命令行上指定了RUNTIME,则会msiexec创建新元素; 如果没有,没有任何反应.
为什么我必须<CreateFolder/>在此组件中使用空?
当我试图让这个工作时,我找到了" Wix条件声明 ",它显示了一个工作组件,但没有解释为什么<CreateFolder/>是必要的.
删除<CreateFolder/>给我这个错误:
ICE18:组件的KeyPath:'C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime'是目录:'INSTALLDIR'.目录/组件对必须在CreateFolders表中列出.
一旦你知道这意味着什么,我相信,这是非常有用的.
如何避免WiX/MSI部署解决方案中的常见设计缺陷?
部署是大多数开发的关键部分 - 部署失败意味着您的最终用户永远无法评估您的产品.这很容易成为软件开发中最昂贵的错误.请给这个内容一个机会.我坚信,通过应用程序设计的微小变化可以显着提高软件质量,使部署更加合理,更可靠 - 这就是"答案"的全部 - 软件开发.
这是一个Q/A风格的问题,答案只列出了MSI文件中不要做的一些事情,以避免最常见的设计缺陷.
windows-installer installshield wix advanced-installer installshield-le
正如大多数人可能注意到的那样,当卸载MSI软件包时,Windows将要求提供原始.msi文件.这是为什么?
我只能看到它的缺点:
有人可以对此有所了解吗?
您可能知道,msiexec是一个命令行应用程序,可用于安装MSI文件.您可能知道,您可以在静默或不可见模式下运行它.
如果安装程序要求用户回答有关要安装的部件的具体问题,是否有一些方法可以在msiexec命令行中添加一系列选项来执行此操作?
我认为必须有某种方法来设置MSI文件的默认设置才能实现这一点.MSI文件是如何制作的?它们是通过微软的工具开发的吗?他们可以打开和编辑吗?
我在Visual Studio 2008中创建了一个MSI安装程序包.问题是安装后,如果删除任何已安装的文件.这不是我的安装程序包的预期行为.我的文件安装属性是:
PackageAs vsdpaDefault Permanent False ReadOnly False Register vsdrfDoNotRegister System False Transitive False Vital False
如果这是微不足道的,请原谅我.我无法相信我无法让谷歌放弃答案.:)
它在我的机器上使用随机应用程序启动Windows安装程序..点击取消几次后,它加载vb6罚款.
任何想法为什么会这样?
Windows Installer自我修复可能会给开发人员,系统管理员和最终用户带来问题.如果您的MSI体验有限,找到解决方案可能会很困难.
这是一个Q&A风格的答案,旨在作为解决自修复问题的检查清单.以下是一些常见问题场景:
关键字:Windows Installer意外启动.MSI意外显示.每次都会出现Windows Installer.打开应用程序启动Windows Installer.Windows Installer自我修复.包如何自我修复.微星自我修复最佳实践.Windows Installer修复.自我修复.禁用Windows Installer.Windows Installer反复运行.应用程序快捷方式启动安装程序.Windows Installer意外出现.
我有一个使用 WIX 部署的软件包。当我安装后再次运行安装程序时,它提供了修复选项,它到底有什么作用?
我们的客户端仅允许在以管理员身份登录时安装应用程序。必须为机器的当前用户安装需要安装的应用程序。该应用程序安装正常,当我需要在用户的 appdata/user 配置文件文件夹中放置一个配置文件时,我的问题就出现了。由于这是他们想要的地方,目前配置正在安装时被删除到管理员配置文件中。我如何解决这个问题,有没有办法让我检查安装是否有其他配置文件并可能写信给他们,但这感觉很脏。
wix ×7
installer ×3
msiexec ×3
installation ×2
.net ×1
c# ×1
comaddin ×1
command-line ×1
msitransform ×1
profiles ×1
resiliency ×1
uninstall ×1
vb6 ×1
windows ×1