您可能知道,msiexec是一个命令行应用程序,可用于安装MSI文件.您可能知道,您可以在静默或不可见模式下运行它.
如果安装程序要求用户回答有关要安装的部件的具体问题,是否有一些方法可以在msiexec命令行中添加一系列选项来执行此操作?
我认为必须有某种方法来设置MSI文件的默认设置才能实现这一点.MSI文件是如何制作的?它们是通过微软的工具开发的吗?他们可以打开和编辑吗?
为了给你一个背景 - 我有一个4 MSI来自我们的供应商,这必须去我们公司的服务器(我们正在看3500左右的服务器).截至目前,我的同行正在使用vbs,ps1脚本来管理它.但是脚本的问题是每次更新时我们都要担心在运行新的软件包和大量硬编码之前卸载现有的软件包.
我想通过设置一个WIX脚本将所有4个MSI打包在一起来自动化整个过程(硬编码非常少).我读了WIX包并用它来创建一个MSI.但是现在有很多变量要传递给4个MSI,所以我想使用自定义动作来根据运行MSI的环境/机器来设置这些变量.但是我不能让自定义动作起作用?我错过了什么吗?
一点点谷歌搜索,我看到像Bundle中没有CustomActions的东西?有人可以证实吗?
如果没有CA,我的选择是什么?如何操作变量传递给4 MSI?其中大多数需要根据运行的机器设置(如安装路径,用户ID,应用程序池ID等).
如何对两个(或更多)MSI文件进行 " 内容比较 " 并查看文件内部实际不同的内容 - 而不是进行无用的二进制比较?(这显然只告诉我我是否正在处理同一文件的副本).
一些相关和典型的问题场景:
这是一个Q/A风格的问题,主题是比较已编译的MSI文件以确定存在哪些真正的"内容差异".
软件:
我们一直在尝试将 SQL Server Express 2016 的命名实例安装为 VS 安装程序安装项目的一部分,但没有成功。
我们已尝试InstallNamedInstance()按以下方式调用并给出结果:
SQLEXPR_x64_ENU.exe从管理员 cmd 窗口使用相同的命令行参数运行:成功InstallNamedInstance()从控制台应用程序调用并从管理员 cmd 窗口运行控制台应用程序:成功我注意到 msi 运行时的当前用户是NT AUTHORITY\SYSTEM. 每当安装程序项目失败时,它都会失败并显示以下消息:
运行 SQL Server 安装程序的帐户不具有以下一项或全部权限:备份文件和目录的权限、管理审核和安全日志的权限以及调试程序的权限。要继续,请使用具有这两项权利的帐户。欲了解更多信息,请参阅 http://msdn.microsoft.com/en-us/library/ms813696.aspx, http://msdn.microsoft.com/en-us/library/ms813959.aspx和 HTTP:// MSDN .microsoft.com/en-us/library/ms813847.aspx。
这是安装程序项目的限制还是我遗漏了什么?使用 AdvancedInstaller 会有更好的运气吗?
请注意,安装程序项目的先决条件对我们不起作用,因为我们必须创建 SQL Server Express 的命名实例,而且我们无法看到如何将命令行参数传递给先决条件。
private void InstallNamedInstance()
{
// NOTE: Change below instance name to get unique instances (or uninstall previous instance)
var InstanceName = "TFPICDATABASES2";
var proc …Run Code Online (Sandbox Code Playgroud) sql-server windows-installer burn sql-server-express visual-studio-2017
wix ×3
burn ×2
installation ×1
installer ×1
msiexec ×1
msitransform ×1
orca ×1
sql-server ×1
wix3.6 ×1