如何访问正在安装的安装包的文件名?

时间:2015-12-28 10:29:37

标签: wix windows-installer installer wix3.10

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

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

2 个答案:

答案 0 :(得分:0)

你可以阅读OriginalDatabase property,至少是第一次安装。但是,由于缓存的.msi包不保留原始名称,您必须存储它,或者可能使用MsiGetProductInfo(..., INSTALLPROPERTY_PACKAGENAME, ...)之类的东西(仅记录用于广告包,没安装的)。所以,尽管还没有完全理解你在这里尝试做什么,我不推荐你认为你描述的方法。

因此,我建议使用已知名称的文件的每用户位置,例如%LOCALAPPDATA%\YourCompany\YourProduct\someconfig.file。这样可以更轻松地在安装环境之外更新或使用文件。

答案 1 :(得分: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="....">