2012-01-26 8 views
0

32ビットアプリケーション用のexeインストーラを作成しようとしています。このインストーラは、アプリケーションのショートカットも作成します。私はインストーラをビルドするためにNSISを使用しており、インストーラをビルドするのに成功しています。 64ビットWindows OSで.exeを実行すると、必要なフォルダが作成され、レジストリが更新され、デスクトップにショートカットが作成されます。しかし、作成したデスクトップ上のShorcutのプロパティをチェックすると、「start-in」パラメータが正しいことになります。ただし、ターゲットパラメータが間違っています。つまり、私が使用します。なぜNSISはターゲットをデフォルトのINSTDIRに設定しますか?

createshortcut "$デスクトップの\ shortcut.lnk" "$ INSTDIR \ビンの\ app.exeの" "スタートインはに正しく設定されているINSTDIR = PROGRAMFILES

"

: C:\ program files(x86).... ターゲットが同じであると予想していました。

しかし、ターゲットに設定されて:C:\プログラムファイルを....

は、私はここで何かが足りないのですか?ショートカットを作成する前に

+0

に渡される前に、あなたは文字列を見てlogging buildを使用することができると思いますか? – Anders

+0

私は渡すパラメータがありません。それは目標の設定に影響しますか? – Ashok

+0

いくつかのオプションのパラメータがありますが、それらのうちの1つを空に設定するだけでかなりランダムですが、.lnkには影響しません。 – Anders

答えて

1

MessageBox $ INSTDIR、それはC:\program files(x86)\...

あなたはDisableX64FSRedirection(x64.nsh)呼び出しているであることを確認してください?

開始/作業ディレクトリは、最後のSetOutPathの呼び出しに由来します。

私はNSISはかなりそのままシェルに文字列を渡すあなたが空のオプションのパラメータを使用しているなぜそれがIShellLink::SetPath

+0

Messageboxはプログラムファイル(x86)のパスを表示します。\ ...しかし、デスクトップ上に作成されたリンクファイルのターゲットは、プログラムファイル\ ....を指しています。 – Ashok

+1

@Ashok $ INSTDIRをC:プログラムファイル(x86)\ – Anders

+0

それは魔法です。したがって、INSTDIRはプログラムファイル(x86)に設定されていませんか?しかし、それは私がMessageboxを使って表示するときに表示されます。次に汎用ソリューションを書くには? – Ashok

関連する問題