问题标签 [basic-msi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
com - 了解由 MSI 创建的神秘 LocalServer32 注册表项
我注意到当我Class
在 MSI 安装期间使用 MSI 表和其他相关表来注册 COM 类时,LocalServer32 值没有路径,而是有一些神秘的值。我在网上看到的信息有限,这表明这可能是 MSI ProductCode 和 Component GUID 的某种散列,但我找不到有关其工作原理的详细信息。
我特别想知道这种注册的功能之一是否是在多实例安装中确保返回的组件实例尽可能与客户端来自相同的安装。我有点怀疑,但我想了解这个方案完成的所有事情,并且不知道在哪里可以找到信息。
这是此类注册表项的示例:
installshield - 在桌面上创建快捷方式时遇到问题
我刚刚创建了一个带有复选框的自定义对话框,询问用户是否要创建桌面快捷方式。我过去总是包含一个我不使用该AskText()
功能的快捷方式,因为我计划稍后在此页面中添加更多内容,并希望将这几个选项简化到这一页面。
当我运行时,我的桌面上有一个项目,但这不是我所期望的。目标似乎指向桌面本身的一个位置,而不是实际的可执行文件。此外,此快捷方式不会在卸载时删除(我假设这需要单独处理)并且快捷方式需要手动删除管理员权限(出于明显的原因,我不希望这样做)。
下面是我的 InstallScript 代码。它是在 . 之后插入的自定义操作中InstallFiles
。
尽管我对InstallShield(更不用说InstallScript)的了解非常有限,但我不太确定我在哪里出错了。
dialog - 使用对话框返回按钮
我在SetupProgress
显示AskOptions
提供一些快捷选项的对话框的对话框之前插入了一个简单的自定义操作。
在大多数情况下,我的行为符合预期,但有一种行为我无法弄清楚。如果用户单击后退按钮,我希望它转到上一个对话框而不是继续SetupProgress
对话框。我将以下代码用于我的对话框(减去实际创建快捷方式的代码)。
如您所见,在底部附近有一条线,我可以在其中处理后退按钮,我只是不知道如何实际返回到上一个对话框。
customdialog - InstallShield 2010 基本 MSI 项目 - 添加对话框以执行序列
如何在 InstallShield 2010 中将自定义对话框添加到基本 MSI 项目的执行序列中?
我希望在安装程序直接作为 .EXE 文件运行或从带有基本 ui 命令行参数的命令行 MSIEXEC.EXE 运行时显示此对话框
这有可能吗,如果可以,怎么办?
提前致谢
拉古。
installshield-2010 - InstallShield 2010 基本 MSI 主要升级错误 2753
我正在使用 InstallShield 2010 Basic MSI Project 安装产品。现在,我创建了一个主要升级项目,用于从以前的版本执行主要升级。
在项目中,我有一个 EXE 文件,它注册了第 3 方组件,在安装、卸载期间需要使用不同的 cmd 行参数调用该组件。
我为此创建了两个自定义操作(CA:EXE,随产品一起安装),这在以前的版本中运行良好。
1) REGMYCOMP - 用于安装 -延迟执行- 在InstallFinalize之前排序(条件:未安装)
2) UNREGMYCOMP - 用于卸载 -延迟执行- 在 RemoveFiles 之前排序(条件:(REMOVE = "ALL") OR (IS_MAJOR_UPGRADE))
UNREGMYCOMP CA 在主要升级期间失败(直接使用 MSIEXEC.EXE 执行 MSI)并出现以下错误
错误 2753 文件“xxxx.exe”未标记为安装。
当我尝试从控制面板 ARP 条目卸载产品时,也会发生同样的事情。
installshield - 迁移到新版本时如何更新 .ism 和 .rul 文件?
我有使用 InstallShield 2015 创建的基本 msi 项目。它的 .ism 和 .rul 文件包含许多值,只要我们的软件经常有新版本,这些值就会更改。我有每个版本需要更新的项目列表,所有这些都是手动完成的,但使用的是 InstallShield UI。
我有一个使用 InstallShield 自动化来更新 ProductVersion、ProductCode、ProductName 等的脚本,但是所有类型的注册表设置、字符串、组件目标等呢?
installation - 安装屏蔽基本微星。输入的配置文件路径有效时如何显示错误对话框
我使用 CheckTargetPath = 0 来验证文本框事件中输入的路径。如果输入的路径无效,它不会进入下一个对话框。但我想在同一个对话框或另一个对话框的另一个文本框中显示错误消息。请指教。
installshield - 两用包和 MajorUpgrade
我正在尝试制作一个双重用途的软件包,但我在升级时遇到了问题。
默认情况下,我的财产是
ALLUSERS=2
和MSIINSTALLPERUSER=1
readyToInstall
如果选中“为所有用户安装”对话框,我使用 SetProperty 放置ALLUSERS=1
和MSIINSTALLPERUSER={}
(只是为了确定)。
该部分工作正常,注册表设置在 HKLM 和 Program Files 中的文件。
然而,在升级过程中......我有一个自定义操作,AppSearch
在密钥是否在 HKLM 之后检查它设置ALLUSERS=1
和MSIINSTALLPERUSER={}
.
如果我进行小更新,则文件已正确升级。
如果我进行重大更新,注册表仍在 HKLM 中,但文件切换到LocalAppData
(实际上它遵循默认值),忽略了我ALLUSERS
在AppSearch
. (我什至尝试在迁移功能状态之后强制它只是为了模仿 UI,但它也没有工作)。
有没有办法用两用包进行重大升级?
wpf - 使用 installShield 在 Basic MSI 项目中设置可执行运行顺序
我使用项目助手使用 InstallShield 2016 专业版创建了一个基本 MSI 安装程序项目。我没有创建任何组件/功能(只是创建了 deafulkt 功能)。安装程序应首先运行控制台应用程序(我作为安装程序的一部分添加,但不会安装),如果没有出现错误,只需将 WPF 应用程序(DLL 和 .exe)复制到客户端位置。
理想情况下,在建议的访谈对话之后,这些步骤是:
- 如果他/她想继续,提示他/她
- 如果 [no] 关闭进程,如果 [yes],显示一个自定义对话框,接受 SQL 连接字符串的三个字段
- 然后,将给定的参数作为输入,运行控制台应用程序。控制台应用程序仅运行一些 SQL 脚本,但不会安装,它是安装程序的一部分
- 在这一步之后(如何检查它是否完成并且没有发生错误?)复制项目助手中设置的文件(wpf .exe 和 DLL)。
在文档中,我读到使用自定义操作可以运行可执行文件,但我无法理解或找到有关如何将参数(命令行除外)传递给控制台应用程序或获取控制台应用程序产生的最终状态的详细信息。
谁能建议我如何实现这些步骤?
更新
在 InstallShield 中,可以在自定义操作之间创建属性,然后在需要的其他地方调用这些值,例如:[PropertyName]。
我可以这样做来为可执行命令行参数添加三个属性:i=[DB_CONN_INSTANCE_NAME] u=[DB_CONN_USER_NAME] p=[DB_CONN_PWD]
windows-installer - 如何使用 Installshield 的内置自定义操作 - 它们在执行序列中不可见
installshield 中有两种类型的自定义操作,即内置的和用户定义的。我想使用 installshield 的内置自定义操作命名ISSQLServerValidate
来检查是否可以连接到给定的 SQL Server 实例或不使用用户提供的用户凭据。此处提供了内置自定义操作的详细ISSQLServerValidate
信息。我正在开发一个基本的 MSI 项目。
但是当我去任何一个User Interface
或Execute
序列时,我根本看不到它。我能够看到大量的标准操作(例如 AppSearch、LaunchConditions)和许多其他内置自定义操作(例如 ISPreventDowngrade、setUserProfileNT 等)。
为什么ISSQLServerValidate
我的项目中看不到内置自定义操作?