3

light.exeセットアップ プロジェクト内のファイルの 1 つを見つけるのに問題があることを示すエラーが表示されます。問題の PC で、使用している相対パスが 260 文字を超えていることが判明しました。現在、Wix は次のように設定されています。

<File Id='FoobarEXE' Name='FoobarAppl10.exe' DiskId='1' Source='..\..\Path\To\Built\Executable\FoobarAppl10.exe' KeyPath='yes'/>

私が抱えている問題は、Wix インストール プロジェクトが次のようなフォルダーにあり、フォルダーの下に存在することD:\Path\To\ProjectFolder\WixInstaller\WixInstallerProjectです。パスを解決しようとすると、最終的な結果は、私の特定のケースではたまたま 260 文字を超えています。私の場合、exeの正しい絶対パスは260文字未満ですが、パスの一部が不要に含まれているため、この制限を超えています。\Path\To\Built\Executable\FoobarAppl10.exeD:\Path\To\ProjectFolderlight.exeD:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject\..\..\Path\To\Built\Executable\FoobarAppl10.exeD:\Path\To\ProjectFolder\Path\To\Built\Executable\FoobarAppl10.exeWixInstaller\WixInstallerProject\..\..\

の代わりにaslight.exeを解決する方法はありますか?..\..\Path\To\Built\Executable\FoobarAppl10.exeD:\Path\To\ProjectFolder\Path\To\Built\Executable\FoobarAppl10.exeD:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject\..\..\Path\To\Built\Executable\FoobarAppl10.exe

これは Wix 自体の制限ではなく、Wix が使用するように設計された API の構築方法の根本的な制限であることを理解していますが、.wxsファイルでこれを修正できるようにする問題の解決策が必要です。はい、パスを短くすることはできますが、問題は実際にはパスが長すぎるということではなく (そうではないため)、相対パスの構文が不要な中間セクションを追加することです。

4

1 に答える 1

5

今日にはlight.exe、パスをカスタム評価して、全体が260文字を超えたときにPath.Combine()がチョークしないようにするものはありません。お気づきのとおり、これは.NET Frameworkの苛立たしい制限です(WindowsインストーラーAPIも同様に機能しなくなります)。

この問題を回避するには、を調べることをお勧めしbind pathsます。コードを次のように変更できます。

<File Id='FoobarEXE' Source='!(bindpath.FooBarApp)\FoobarAppl10.exe' />

コマンドラインで次のようなことを行います。

light.exe -b FooBarApp=D:\Path\To\ProjectFolder\Path\To\Built\Executable

これにより、最短パスが作成されます。相対パスをコマンドラインからFile/@Source同様に移動できます(たとえば、Built\Executableパスの一部を移動します)。非常に柔軟であることがわかると思います。

于 2013-03-15T14:33:39.710 に答える