12

Inno Setup Compiler.iss内でスクリプトを使用してexeファイルを作成しています。このアプリケーションにいくつかのnode_modulesをパッケージ化する必要があるため、下に次のような行があります。[Files]

Source: "{#SourcePath}Encore.Warehouse.UI\bin\Warehouse_Release\warehouse\*"; \
    DestDir: "{app}\warehouse"; Flags: ignoreversion recursesubdirs createallsubdirs

コンパイルすると、次のエラーが表示されます。

指定されたパスが見つかりません。

コンパイラの出力は次のとおりです。

コンパイラ出力

そのため、中止されるまでは正常に動作しているように見えます。私の最初の考えはbrowser.js存在しないということでしたが、再確認したところ、そうではありませんでした。また、ソース パスにワイルドカードを使用しているため、コンパイラはファイルが存在することを認識していますが、圧縮に問題があるようです。

問題を引き起こしている可能性のあるもう 1 つのことは、ファイル パスの長さです。通常、ノード モジュールは、依存関係がネストされているため、途方もないファイル パスの長さになります。この場合、パスの長さは260です。これが問題の原因であると仮定すると、それを回避する方法はありますか?

4

2 に答える 2

1

同じ問題に陥ります。以下は、コメントと受け入れられた回答で説明されているsubstを使用した回避策の詳細です。

以下は、ローカルパスをドライブ文字precompile.batに関連付けるためのファイルの内容ですA:

@echo off
REM NB: Removing any previous association to be sure new one will work
subst A: /D 1> NUL 2>&1
subst A: "%~dp0.."

postcompile.bat最終的に関連付けを削除する一部のコンテンツと

@echo off
subst A: /D 1> NUL 2>&1

.issNB1: 注意してください。一度関連付けると、スクリプト内で上位パスを直接ナビゲートすることは困難A:\..ですA:\(私は問題に陥るので、知っておく価値があります)。次に、必要なすべてのファイルの最も近い最上位のフォルダーと直接関連付けを行う必要がありますprecompile.bat

NB2: 以前の関連付けを思い出させて、最終的にそれを復元することが可能かどうかはわかりません

.issこれらのステップは、次のようにスクリプトに追加できます。

[PreCompile]
Name: "precompile.bat"; Flags: cmdprompt redirectoutput

[PostCompile]
Name: "postcompile.bat"; Flags: cmdprompt redirectoutput

最後に、[PreCompile]and[PostCompile]セクションは IDE からのみ実行されることに注意してください。それらはコマンドラインから実行されません (少なくとも inno 5.5.9 では)、私もこれに陥ります... したがって、コマンドラインからの完全なコンパイルは次のようになります。

call "precompile.bat"
call "%ProgramFiles(x86)%\Inno Setup 5\ISCC.exe" "myscript.iss"
call "postcompile.bat"

注意: (コマンドライン コンパイラ) のCompil32.exe /cc "myscript.iss"代わりに (IDE コンパイラ) を呼び出すとセクションが実行されるべきだと思いますが、私の場合は追加のオプションをコンパイラに渡す必要があったため、直接呼び出すことはできませんでした。ISCC.exe[PreCompile][PostCompile]/DCompil32.exe

于 2021-04-09T08:44:28.113 に答える