0

我使用 WiX 成功创建了一个 msi 安装程序包。现在我需要在代码中访问 msi 安装包的文件名(在资源管理器中显示的名称,如“myPackage.msi”)(注意,用户可以将安装包名称更改为他/她想要的任何名称)。有什么方法可以识别包文件名吗?还允许使用自定义操作。

仅供参考,我需要文件名来根据包文件名创建配置文件,名称对于不同的用户来说是唯一的。

4

2 回答 2

0

您可以阅读该OriginalDatabase属性,至少对于首次安装而言。然而,在维护期间它会变得有点混乱,因为缓存的 .msi 包不保留原始名称,您必须存储它,或者可能使用类似的东西MsiGetProductInfo(..., INSTALLPROPERTY_PACKAGENAME, ...)(仅记录用于广告包,而不是安装的包)。因此,尽管没有完全理解您在这里尝试做什么,但我不推荐我认为您描述的方法。

因此,我会建议一个已知名称文件的每个用户位置,例如%LOCALAPPDATA%\YourCompany\YourProduct\someconfig.file. 这使得在安装上下文之外更新或使用文件变得更加容易。

于 2015-12-28T13:53:36.297 回答
0

关于命令行选项:看这个主题WIX: How to Select Features From Command Line

它向您展示了如何对功能/组件进行分组,以及如何使用命令行选项来选择它们。

PS:您能否举一个更具体的例子,以便我们了解为什么需要操作某些文件?这些影响安装程序的用户设置是什么?

编辑:上一个答案(在您提供更多信息后,很明显这没有用)。

创建一个变量(在单独的 Variables.wxi 文件中):

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <?define ProductName = "..." ?>
  <?define CompanyName = "..." ?>
</Include>

然后,您可以在任何地方使用此变量,例如:

<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="..." Manufacturer="$(var.CompanyName)" UpgradeCode="....">
于 2015-12-29T10:29:54.317 回答