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

时间:2014-02-13 15:57:58

标签: windows-installer installshield

我有基本MSI项目(我使用InstallShield 2013 Professional)。假设它具有ProductName DefaultProductName

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

现在,假设我想在运行期间将我的ProductName从 DefaultProductName 更改为 NewProductName ,在运行时(更清楚一点:我说的不是升级,但关于我在“干净”盒子上安装我的产品的情况。

为此,我创建了New Custom Action-> New Set Property并将ProductName Property设置为新值 NewProductName 。它有效(例如,我可以看到新的ProductName值出现在安装对话框的标题中,我的产品出现在控制面板中,名称为 NewProductName )。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

Windows Installer SDK以其神秘的方式暗示这是不可能的。根据我的经验,这是不可能的。 ProductName是一个私有属性,一旦安装开始就不可变。编辑MSI或创建和应用变换是唯一的方法。