如何以编程方式设置TARGETDIR?

时间:2014-03-11 10:50:12

标签: c# windows-installer

我正在为我的应用程序创建一个MSI包。要求是,如果在客户端计算机上安装了应用程序A,则此新设置应安装在该应用程序文件夹中。否则它应该创建自己的文件夹。

我已经创建了自定义安装程序。我已经覆盖了OnInstallOnBeforeInstall等方法,但对TARGETDIR没有影响。

即使我这样写:

this.Context.Parameters["TARGETDIR"] = new_path;

它仍会将其安装到旧路径,该路径设置为安装项目的DefaultLocation Tab的ApplicationFolder属性。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

无法在VS安装项目中完成,因为安装完成后几乎所有自定义操作都已运行,因此更改安装文件夹为时已晚。 VS安装项目不支持尽早运行CA来执行此操作。

答案 1 :(得分:0)

如果该其他应用的注册表路径位于注册表项中,您可以通过搜索执行此操作。

  1. 在启动条件下,搜索目标计算机,为该注册表项添加注册表搜索,它将进入大写属性名称,默认为REGISTRYVALUE1,类似于此。

  2. 在“文件系统”视图中,右键单击目标计算机上的文件系统,然后添加特殊文件夹,自定义文件夹。创建默认位置[TARGETDIR](默认情况下应该是这样)并使属性成为注册表属性名称,即REGISTRYVALUE1。

  3. 您的文件进入该自定义文件夹。

  4. 如果可行,文件将转到程序文件中的默认目标目录,除非该路径存在,然后它们应该进入那里。但是,有一个对话框供用户选择安装文件夹,因此我不知道您打算如何处理。