首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WiX中更改目标目录

在WiX中更改目标目录
EN

Stack Overflow用户
提问于 2012-10-25 04:33:29
回答 5查看 9.4K关注 0票数 5

我在设置TARGETDIR路径时遇到问题。我使用dark.exe对一个工作的MSI文件进行了逆向工程,并阅读了我能找到的任何关于这个主题的帖子,但我似乎无法将TARGETDIR设置为指向路径ProgramFiles\Manufacturer\Product。下面是我的WXS文件的摘录,由于某些原因,它导致我的应用程序被安装到我的D盘的根目录下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*"
             Name="FBL - Some App"
             Language="1033"
             Version="1.0.0.0"
             Manufacturer="Foo &amp; Bar Limited"
             UpgradeCode="780286c6-e064-4402-80d8-dd2c68b56c04">
        <Package InstallerVersion="200"
                 Compressed="yes"
                 InstallScope="perMachine"
                 Comments="Performs some operation that is important" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <Media Id="1" Cabinet="App.1.0.0.cab" EmbedCab="yes" />
        <CustomAction Id="setTARGETDIR"
                      Property="TARGETDIR"
                      Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
                      Execute="firstSequence"
                      Return="check" />

        <Directory Id="TARGETDIR" Name="SourceDir">
            <Component Id="C__App.exe"
                       Guid="{074586E9-A675-2734-A4CD-1CE520922A41}">
                <File Id="F__App.exe"
                      Name="App.exe"
                      KeyPath="yes"
                      Assembly=".net"
                     AssemblyManifest="F__App.exe"
                      AssemblyApplication="F__App.exe"
                      DiskId="1"
                      Source="D:\SomePath\bin\Debug\App.exe" />
            </Component>
        </Directory>
        <Feature Id="DefaultFeature" ConfigurableDirectory="TARGETDIR" Level="1">
            <ComponentRef Id="C__App.exe" Primary="yes" />
        </Feature>
        <Icon Id="favicon.ico" SourceFile="d:\SomePath\favicon.ico" />
        <Property Id="ARPPRODUCTICON" Value="favicon.ico" />
        <UI />
        <InstallExecuteSequence>
            <Custom Action="setTARGETDIR" Before="CostFinalize" />
        </InstallExecuteSequence>
    </Product>
</Wix>

我确信我遗漏了一些简单的东西,但是我找不到任何关于从这里做什么的进一步信息。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-25 06:28:23

需要进行以下修改:

代码语言:javascript
复制
<CustomAction Id="SetTARGETDIR"
              Directory="TARGETDIR"
              Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
              Return="check" />

代码语言:javascript
复制
<InstallExecuteSequence>
    <Custom Action="SetTARGETDIR" After="InstallValidate" />
</InstallExecuteSequence>

解释:使用目录属性而不是属性(它是一个类型35的自定义操作),并在执行序列中将此操作安排在InstallValidate之后-这是检查目录是否具有写访问权限并真正设置的时候。

(感谢WiX用户组的Narina Chandra Sekhar对此问题的回答。)

票数 5
EN

Stack Overflow用户

发布于 2014-09-23 02:37:08

这很奇怪……我也有同样的问题,但你的答案对我不起作用。我所需要的就是:

代码语言:javascript
复制
<Product>
   <SetProperty Id='TARGETDIR' Value='[ProgramFilesFolder][Manufacturer]\[ProductName]\' Before='FindRelatedProducts' />
   ...
</Product>

但话又说回来,我认为我的安装程序中的其他东西可能设置了属性中的TARGETDIR目录;我正在处理一些遗留的东西。

编辑:实际上,这不是一个好主意。很多时候,一些内置的自定义操作可以在安装过程的不同部分被调用,所以最好添加一个自定义操作来设置属性。

以下是对我有效的方法:

代码语言:javascript
复制
<Product>
   <CustomAction Id='SetTARGETDIR' Property='TARGETDIR' Value='[ProgramFilesFolder][Manufacturer]\[ProductName]\'/>
   ...
</Product>
<InstallUISequence>
   <Custom Action='SetTARGETDIR' Sequence='1'/>
   ...
</InstallUISequence>
<AdminUISequence>
   <Custom Action='SetTARGETDIR' Sequence='1'/>
   ...
</AdminUISequence>
票数 3
EN

Stack Overflow用户

发布于 2016-09-29 17:30:04

对于我来说,这一切都不起作用,所以我所做的就是使用命令行设置安装目录的属性来运行msi。默认情况下,我的程序会安装到C驱动器,但有时我希望将其安装到D驱动器,所以我这样做了:

代码语言:javascript
复制
<Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
               <Directory Id="APPLICATIONROOTDIRECTORY" Name="XServer">                     
               </Directory>
            </Directory>
</Directory>

下面是命令行:

XServer.msi /L*v log.log APPLICATIONROOTDIRECTORY="D:\Program Files (x86)\XServer"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13057263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档