WiX-如何在安装后更改目录名
非常简单的问题,假设我的应用程序将作为WiX-如何在安装后更改目录名,wix,Wix,非常简单的问题,假设我的应用程序将作为 myApp +-- bin +-- lib 我想在安装后将“lib”重命名为“plugins”,我该怎么做 有一个可能会有帮助,但不知道如何使用它 编辑: 这里的问题是,在我的例子中,源文件可以安装到不同的路径中,如中所述 我能找到的唯一方法是创建两个组件组并有条件地安装它们。但是,使用heat两次获取同一个子目录会导致错误,因此我想使用不同的路径(例如lib和另一个lib),然后在安装后重新命名其中一个路径,所以出现了这个问题…不要。提前正确安装文
myApp
+-- bin
+-- lib
我想在安装后将“lib”重命名为“plugins”,我该怎么做
有一个可能会有帮助,但不知道如何使用它
编辑:
这里的问题是,在我的例子中,源文件可以安装到不同的路径中,如中所述
我能找到的唯一方法是创建两个组件组并有条件地安装它们。但是,使用
heat
两次获取同一个子目录会导致错误,因此我想使用不同的路径(例如lib
和另一个lib
),然后在安装后重新命名其中一个路径,所以出现了这个问题…不要。提前正确安装文件。Windows安装程序跟踪内容的方式将在每一步都与您发生冲突。只需从一开始就将文件安装到正确的文件夹中。可能不是你想要的答案。不要。提前正确安装文件。Windows安装程序跟踪内容的方式将在每一步都与您发生冲突。只需从一开始就将文件安装到正确的文件夹中。可能不是你想要的答案。 < P>我终于写了一个C++程序,扩展了<代码>热<代码>生成的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>
< P>我最终编写了一个C++程序,扩展了
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>
谢谢您的回复。已经用更多的细节更新了我的问题谢谢回复。已经更新了我的问题的更多细节,您可以将XSLT应用于
heat
输出并重命名那里的目录。但是,如果在安装时必须将文件放在同一目录中,则最好获取相同的映像。您不能在使用heat进行采集之前复制libs吗?您可以将XSLT应用于heat
output并重命名那里的目录。但是,如果在安装时必须将文件放在同一目录中,则最好获取相同的映像。你不能在加热收割之前复制LIB吗?