5

TARGETDIRパスの設定に問題があります。以前dark.exeは、動作中のMSIファイルをリバースエンジニアリングして、このテーマについて見つけた投稿を読みましたが、パスを指すようにTARGETDIRを設定できないようですProgramFiles\Manufacturer\Product。以下は私のWXSファイルの蒸留であり、その結果、何らかの理由でアプリケーションがDドライブのルートにインストールされます。

<?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>

簡単なことを見逃していると思いますが、ここから何をすべきかについての詳細情報を見つけることができません。

4

5 に答える 5

5

次の変更が必要でした。

<CustomAction Id="SetTARGETDIR"
              Directory="TARGETDIR"
              Value="[ProgramFilesFolder][Manufacturer]\[ProductName]"
              Return="check" />

<InstallExecuteSequence>
    <Custom Action="SetTARGETDIR" After="InstallValidate" />
</InstallExecuteSequence>

説明:プロパティーの代わりにディレクトリー属性を使用し(これはタイプ35カスタム・アクションです)InstallValidate、実行シーケンスの後でこのアクションをスケジュールします。これは、ディレクトリーが書き込みアクセスについてチェックされ、実際に設定されたときです。

(これについての回答を提供してくれたWiXユーザーグループのNarina Chandra Sekharに感謝します。)

于 2012-10-24T22:28:22.963 に答える
3

これは奇妙です...同じ問題がありましたが、あなたの答えはうまくいきませんでした。私が必要としたのはこれだけでした:

<Product>
   <SetProperty Id='TARGETDIR' Value='[ProgramFilesFolder][Manufacturer]\[ProductName]\' Before='FindRelatedProducts' />
   ...
</Product>

しかし、もう一度、インストーラーの他の何かがプロパティから TARGETDIR ディレクトリを設定していた可能性があると思います。私はいくつかのレガシーなものを扱っていました。

編集:実際、それは悪い考えでした。多くの場合、組み込みのこれらのカスタム アクションの一部は、インストール プロセスのさまざまな部分で呼び出すことができるため、カスタム アクションを追加してプロパティを設定することをお勧めします。

これが私のために働いたものです:

<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>
于 2014-09-22T18:37:08.120 に答える
0

カスタムアクションを介してインストールディレクトリを変更しようとしました(コードでパスを把握するためにコードが必要だったため-長い話)、そしてそれをどのタイミングで解決したか-カスタムアクションを次のようにスケジュールする必要がありました:

After="CostInitialize"
于 2021-01-06T17:22:03.450 に答える