2012-08-16 59 views
0

很简单的问题,假设我的应用程序将安装为维克斯 - 如何在安装后更改名称的目录的

myApp 
+-- bin 
+-- lib 

我想重命名“LIB”到“插件”安装后,如何能我那样做?

有一个MoveFiles Element可能会帮助,但不知道如何使用它。

编辑:

这里的问题是,在我的情况下,源文件可以安装到不同的路径,这种情况在here描述。

我能想出的唯一方法是创建两个组件组并有条件地安装它们。但是,使用heat收获相同的子目录两次会造成ID conflicting,所以我想用不同的路径(例如libanother-lib),然后重命名安装后回来的路径之一,所以这个问题arised ...

+0

您可以使用XSLT来'heat'输出,并有重命名的目录。但是,如果在安装时必须将文件放入同一目录,则最好收集相同的图像。在收获之前不能复制库吗? – 2012-08-17 06:51:51

回答

0

我终于写了一个C++程序来扩展heat生成的wxs与另一个目录结构。所以我们可以决定在不同情况下安装哪条路径。它在安装过程中就像更改名称一样工作。

这是我的程序修补的wxs文件。基本上它会创建另一个目录WEBIDR和不同的子目录,然后添加另一个组件组webGroup供条件元素稍后参考。

您可以手动执行同样的操作,但是如果有成千上万的文件正在等待,并且它们经常更新,那么程序(或脚本)可能是更好的选择。

<Fragment> 
    <DirectoryRef Id="INSTALLDIR"> 
     <Directory Id="dirA5528701EE26FFBF346CCE20EE8ACE99" Name="bin"> 
      <Component Id="cmpEBA9C2A32D81BA8646BD1A64DBB39DB1" Guid="{142C531A-C71C-4890-9318-0FC42026C8FC}"> 
       <File Id="filDB56E052EC783676CEF361C0C5AA71F3" KeyPath="yes" Source="$(var.runDir)\bin\boost_date_time-vc100-mt-1_47.dll" /> 
      </Component> 
     </Directory> 
     <Directory Id="dir3279BEF4E08D9A00D2F205F325F00A81" Name="modules"> 
      <Component Id="cmpDECCAE13F8937500E4AC367A8EAC95F4" Guid="{85CC0C94-1BFB-4062-BC4E-FBF143921301}"> 
       <File Id="filDD3B40D68D0437B18B1108FBA49ABC1B" KeyPath="yes" Source="$(var.runDir)\modules\HelloAPI.dll" /> 
      </Component> 
     </Directory> 
    </DirectoryRef> 
    <DirectoryRef Id="WEBDIR"> 
     <Component Id="webcmpEBA9C2A32D81BA8646BD1A64DBB39DB1" Guid="{fec110c5-a1a0-4b07-8a35-50f1af84001a}"> 
      <File Id="webfilDB56E052EC783676CEF361C0C5AA71F3" KeyPath="yes" Source="$(var.runDir)\bin\boost_date_time-vc100-mt-1_47.dll" /> 
     </Component> 
     <Directory Id="webdirpluginF4E08D9A00D2F205F325F00A81" Name="plugins"> 
      <Component Id="webcmpDECCAE13F8937500E4AC367A8EAC95F4" Guid="{3ef79a47-7681-4991-9726-02db38c22f6d}"> 
       <File Id="webfilDD3B40D68D0437B18B1108FBA49ABC1B" KeyPath="yes" Source="$(var.runDir)\modules\HelloAPI.dll" /> 
      </Component> 
     </Directory> 
    </DirectoryRef> 
</Fragment> 
<Fragment> 
    <ComponentGroup Id="runGroup"> 
     <ComponentRef Id="cmpEBA9C2A32D81BA8646BD1A64DBB39DB1" /> 
     <ComponentRef Id="cmpDECCAE13F8937500E4AC367A8EAC95F4" /> 
    </ComponentGroup> 
    <ComponentGroup Id="webGroup"> 
     <ComponentRef Id="webcmpEBA9C2A32D81BA8646BD1A64DBB39DB1" /> 
     <ComponentRef Id="webcmpDECCAE13F8937500E4AC367A8EAC95F4" /> 
    </ComponentGroup> 
</Fragment> 

3

不要。在前面正确安装文件。 Windows安装程序跟踪事物的方式将会在每一步中与您对抗。只需将文件从头安装到正确的文件夹中即可。可能不是你想要的答案。

+0

感谢您的回复。已更新我的问题更多细节 – Deqing 2012-08-16 09:49:28