Windows installer 我可以在运行时(安装期间)更新ProductName属性吗?

Windows installer 我可以在运行时(安装期间)更新ProductName属性吗?,windows-installer,installshield,Windows Installer,Installshield,我有基本的MSI项目(我使用InstallShield 2013 Professional)。假设它有ProductNameDefaultProductName 我可以构建它并获取setup.exe。如果我安装了它,它将以DefaultProductName名称出现在控制面板中已安装程序的列表中 现在,假设我想在安装期间和运行时将我的产品名称从DefaultProductName更改为NewProductName(更清楚地说,我说的不是升级,而是在“干净”框中安装产品时的情况) 为此,我创建了新

我有基本的MSI项目(我使用InstallShield 2013 Professional)。假设它有ProductNameDefaultProductName

我可以构建它并获取setup.exe。如果我安装了它,它将以DefaultProductName名称出现在控制面板中已安装程序的列表中

现在,假设我想在安装期间和运行时将我的产品名称从DefaultProductName更改为NewProductName(更清楚地说,我说的不是升级,而是在“干净”框中安装产品时的情况)

为此,我创建了新的自定义操作->新建集合属性,并将ProductName属性设置为新值NewProductName。它可以工作(例如,我可以看到新的ProductName值出现在安装对话框的标题中,我的产品出现在控制面板中,名称为NewProductName


但是,当我尝试卸载产品并在卸载对话框中移动时,我看到(在对话框标题中)ProductName有其默认值DefaultProductName,而不是安装期间在自定义操作中设置的值NewProductName。这是否意味着我可以在安装期间应用的属性值更改在卸载期间将不可用。为什么?

因为您所更改的只是安装的内存中的ProductName,而不是文件中的任何实际名称


如果在实际安装之前知道,可以创建一个转换.mst文件,然后使用指定TRANSFORMS=的命令行启动MSI文件。您需要一个可执行文件来完成这项工作,然后启动MSI

Windows Installer SDK以其神秘的方式暗示这是不可能的。以我的经验,这是不可能的。ProductName是一个私有属性,在安装开始后不可更改。编辑MSI或创建并应用转换是唯一的方法