问题标签 [orca]

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.

0 投票
1 回答
2717 浏览

windows-installer - 永久注册表项 - orca - msi guid

使用 .msi 包,如果它们不存在,我想创建一些注册表项,如果它们确实存在,则不要管它们,如果程序被删除,则不要删除它们。我通过向以下 msi 表添加条目来完成此操作(使用 Orca):Components、FeatureComponents、Registry 和 LockPermissions。我的问题是我应该如何处理这些键的 Component 表的 ComponentID 中使用的 GUID?好像有3个选择。

1) 将它们分配一次,并在未来版本的 msi 中单独保留它们

2) 每次生成新版本时分配新版本

3)使用NULL(根据http://msdn.microsoft.com/en-us/library/aa368007(VS.85).aspx)我没有试过这个。

其中一个是否比另一个更受欢迎?一个比另一个有任何后果吗?(如果程序被删除,我宁愿留下尽可能少的东西)。

我也很想知道下面关于永久属性位(16)的评论是什么意思。

如果设置了此位,则安装程序在卸载期间不会删除该组件。安装程序会在 Windows Installer 注册表设置中为该组件注册一个额外的系统客户端。

在哪里可以找到这些条目?

0 投票
4 回答
16795 浏览

windows-installer - DISABLEADVTSHORTCUTS=1 禁用所有快捷方式

我们有一个要在启动时运行的应用程序,它允许在安装后更改许多已安装的文件。DISABLEADVTSHORTCUTS=1我们正在尝试通过在 Orca 中设置属性来关闭自愈模式。但是,设置此属性时不会创建任何快捷方式。我看到的所有信息都表明我们应该能够使用DISABLEADVTSHORTCUTS=1set 创建“非广告”快捷方式。有任何想法吗?

DISABLEADVTSHORTCUTS如果保持不变,我已经验证了正确创建快捷方式。

0 投票
2 回答
369 浏览

visual-studio-2008 - Dll 在 MSI 执行期间执行(安装程序)

我为我的应用程序创建了一个 MSI,我希望我的 dll 在安装此 MSI 期间执行。如何将我的 dll 添加到 MSI。我在 ORCA 上阅读了一些内容,但出现错误。

任何人都可以帮助使用 orca 将我的 dll 添加到 msi。我的 dll 包含一个消息框和注册表项

0 投票
5 回答
19913 浏览

installation - 从合并模块中提取文件

我想要的只是一个命令行工具,它可以将文件从合并模块 (.msm) 提取到磁盘上。换句话说,我想要 MSI 可能的相同“管理安装”功能:

msiexec /a myProduct.msi TARGETDIR="C:\myInstallation" /qn

以上仅适用于msi(据我所知)。因此,为了获得与合并模块相同的效果,我正在尝试 msidb.exe 和 orca.exe orca 的文档说明:

可以从命令行指定许多合并模块选项...

从合并模块中提取文件

Orca 支持三种不同的方法来提取包含在合并模块中的文件。Orca 可以提取单个 CAB 文件,将文件提取到模块树中,并在将文件合并到目标数据库后将文件提取到源图像中......

提取文件

要从合并模块中提取单个文件,请使用

... -x ... 命令行上的选项,其中是新目录树的所需路径。

指定路径用作提取文件的根路径。所有文件都从模块中嵌入的 CAB 文件中提取,并放置在指定的路径中。提取文件的目录布局基于合并模块的目录树。

这听起来像我需要的。但是当我尝试它时,orca 只是打开了一个编辑器(带有我指定的 msm 的信息),然后什么也不做。我尝试了各种命令行,通常是这样开始的:

orca -x theDirectory theModule.msm

我使用“theDirectory”作为我想要的任何空文件夹。就像我说的 - 它没有做任何事情。

然后我尝试了 msidb,我做了几次尝试,如下所示:

msidb -d theModule.msm -w {存储}

msidb -d theModule.msm -x MergeModule.CABinet

在第一种情况下,我不知道要为 {storage} 放什么。在第二种情况下,事实证明文字字符串“MergeModule.CABinet”是必需的(它是保留名称)。但是,提取的文件柜不保留文件层次结构或“正常”文件名;所以我不能将它用于我的目的。

有人可以解释我在命令行选项上做错了什么吗?有没有其他工具可以做到这一点?

0 投票
2 回答
3900 浏览

windows-installer - Windows Installer custom action BEFORE any validation

I wrote a Windows Installer custom action based on the tutorial found here: http://www.codeproject.com/kb/install/msicustomaction.aspx

My custom action is killing a background process of a given name which could still be opened by the user. The reason is that I don't want users to see the warning that a given EXE is running and must be closed so that setup can continue. This works fine when the MSI passes through the UI sequence as the action is created in "InstallUISequence" table like in the tutorial.
However, when the MSI is used silently (right-click and select repair or uninstall), then my custom action isn't executed of course.

Where do I have to put my custom action so that it is executed immediately also when run silently?

I tried adding it to "InstallExecuteSequence", but the 'app running' warning is still shown. I then tried lowering the sequence number of my custom action to 5, but this also didn't help.

Note:
I'm using Orca to modify an MSI generated from a Visual Studio setup project. I'm then using the transform file to apply it.

0 投票
2 回答
570 浏览

wix - 使用托管自定义操作设置项目。头疼的厉害

我正在尝试创建一个设置项目,但我无法相信它会有多痛苦。我尝试使用的工具都没有让我满意。怎么会?走着瞧:

第一个也是最简单的选择:在 Visual Studio 中构建的安装项目。简单快捷。即使您的代码是用 c# 或 vb.net 编写的,您也可以轻松实现自定义操作。正是我想要的。但是这种方法有一些缺点,主要的缺点是实现自定义对话框的方式非常痛苦。例如,如果我需要询问数据库凭据,请授权用户并继续进行其余的安装。但不是。无法在 VS 中构建自定义设置对话框。其实是有办法的,但并不容易。我的意思是,你在开玩笑吗?我必须花一天时间来创建几个简单的对话框?

第二种选择:使用某种工具。像 InstallShield。你必须为此付出代价,是的,幸运的是它非常便宜。只需 5500 美元。没什么大不了的,对吧?好吧,也许吧,但对我来说,这就像“伙计,算了吧”

第三个选项:使用WIX Nice,有很多选择。不像内置的 VS 那样易于使用,但具有许多更好的功能。唯一的问题 - 我花了几个小时试图说服那个东西运行我用 c# 编写的代码。我失败了。没有任何帮助,我放弃了。

现在。请,请我的专家同胞,所有了解的开发人员。帮我。我该怎么办?解决我的问题的最佳方法是什么(相信我,我的老板会杀了我,他喜欢在员工的尸体上取得成果)。

告诉我有没有更好的方法来编辑 .wid 文件。使用 Orca 工具并不是一个简单的解决方案。或者向我展示一个使用 WIX 构建的安装项目的真实示例,该项目可以运行托管 c# 代码。

谢谢!

0 投票
1 回答
5615 浏览

visual-studio - 如何修改内容/替换 .msi 文件的二进制文件作为构建后步骤?

在 x64 系统上使用 CustomAction 构建 Visual Studio 2010 安装项目时,Visual Studio 包含错误版本InstallUtilLib.dll:它安装 32 位 shim,这对于编译为 64 位的 CustomAction 不起作用(在我的情况下是一个要求,因为它取决于在 64 位本机 dll 上)。

安装这样的.msi结果会导致System.BadImageFormat异常。

根据这篇文章 (64-bit Managed Custom Actions with Visual Studio),解决方案是打开结果.msiorca.exe替换二进制“InstallUtil”。

我想自动化这个。有任何想法吗?

编辑:根据 mohlsen 提供的答案,我在解决方案中添加了以下脚本(不是安装项目本身,因为添加到安装项目的文件进入 msi ...):

接下来,我编辑了设置项目属性:我将PostBuildEvent属性设置为:

注意:在解决方案资源管理器中右键单击安装项目,然后选择“属性”会打开错误的对话框(“属性页”)。您需要“属性窗口”(CTRL+W、P)。

0 投票
2 回答
2118 浏览

vbscript - 如何使用 VBScript 更改 *.msi 中包含的文件的内容

鉴于使用 VS2010 安装项目生成的安装程序,我想在不更改名称的情况下将 .NET DLL 换成另一个。

我已经msi根据这个问题更改了文件,换出了“二进制”表中条目的内容。

我使用 Orca 找到了有问题的文件。它驻留在唯一的cabinet 文件中。我在“媒体”表中找到了这个文件柜文件。我不确定如何更改此压缩文件 (API),并且我怀疑我也必须更改 MSI 数据库中的一些信息(“MsiAssemblyName”表中程序集的“ProcessorArchitecture”记录)。

理由:我正在为 Autodesk Revit 2011 插件制作安装程序。这些是使用RevitAddinUtility.dll必须与安装程序捆绑在一起的程序集注册的。该程序集有两种形式,一种用于 32 位安装,另一种用于 64 位安装。创建安装程序时,我需要换入正确的版本,以避免编写多个安装程序。

0 投票
1 回答
947 浏览

windows-installer - 使用 MsiMsp.exe 构建补丁 - 目标 MSI 是否与原始 MSI 不同?

我正在为已经交付的产品构建一个 msp 补丁。该产品有大量的组件/文件。

我正在从原始目标 MSI 和升级 MSI(通过 orca 手动修改)构建补丁。到现在为止还挺好。

构建和应用补丁需要花费大量时间处理这么多文件,因此我正在考虑从两个 MSI 中删除所有未更改的文件以加快速度。我知道我可以对目标 MSI 进行一些修改,它仍然适用,但我想知道对文件/组件/目录的更改。谁能告诉我

  1. 如果删除文件首先会起作用,并且
  2. 如果我这样做的话,我是否会为进一步的补丁(无论是在基线版本还是补丁版本上构建)带来麻烦?

到目前为止,我几乎碰到了每个坑洼,我想这次我会先问一下。而且我坦率地承认我还没有完全掌握 Windows 安装程序,所以我可能完全错误地接近它。
谢谢!

0 投票
3 回答
1433 浏览

visual-studio-2010 - MSI 创建:升级前终止应用程序

我正在使用 Microsoft Visual Studio 2010 为我的简单 .EXE 应用程序创建一个简单的 .MSI 安装程序。

麻烦的是,如果您在 .EXE 仍在运行时安装升级,事情就会出错(直到重新启动)。

我希望 .MSI 安装程序在安装/升级之前终止我的进程。

请问有人可以告诉我如何在 Orca 中做到这一点吗?

编辑:我已经看到由于我的 .EXE 正在使用而发生这种情况,但我也看到了它,因为 .CHM 帮助文件在升级时也是打开的,因此仅靠任何进程终止都不足以解决这个问题问题。