2017-05-16 8 views
0

以下は、NSISインストーラの抜粋です。NSIS CreateShortCutは、ショートカットの対象フィールドに正しい文字列を表示しません。

私が実行したときに私の問題は、次のとおりです。

CreateShortCut "$DESKTOP\PRESS_Survey_PS.lnk" $shortcutPath "" $INSTDIR\images\appIcons\Survey.ico 

これは、変数$ shortcutPathを使用してショートカットのターゲットフィールドでこれを生成します。

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command &.\PRESS_Survey.ps1" 

$ shortcutPath変数は、以下のものを使用して構築されていますstrcpy:

StrCpy $powerShellPath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command " 
StrCpy $shortcutPath $powerShellPath$\"&.\PRESS_Survey.ps1$\" 

私がps1に$ shortcutPath変数を書き出すと使用してファイル:私は使用してショートカットを実行しようとすると

#C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "&.\PRESS_Survey.ps1" 

FileWrite $0 $powershellComment$shortcutPath$NewLine 

それは、これを生産する

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command &.\PRESS_Survey.ps1" 

それが失敗し、PRESS_Survey.ps1がどこにあるか尋ねます。それが実行

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "&.\PRESS_Survey.ps1" 

は私がターゲットフィールドにFileWrite関数のバージョンとCreateShortCutバージョンを交換した場合。

$ shortcutPathの値が両方のインスタンスで同じでないのはなぜですか? これは私に何か間違っているのですか、これはWindowsのショートカットの問題ですか? どちらの場合も、これを解決する方法はありますか?

ありがとうございます。

答えて

0

ここではおそらく2つのことが考えられます。

まず第一に、あなたが2つの変数を必要とするので、ショートカットのターゲットと引数には、二つの異なるパラメータは以下のとおりです。

StrCpy $powerShellPath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" 
StrCpy $parameters '-command "&.\PRESS_Survey.ps1"' 
CreateShortcut "$DESKTOP\PRESS_Survey_PS.lnk" $powerShellPath $parameters "$INSTDIR\images\appIcons\Survey.ico" 

他の問題は、パス内の.\であるが、.は、カレントディレクトリを意味し、私は本当にお勧めしません。ショートカットでそれを使用します。あなたが主張する場合は、ショートカットに格納されている現在/作業ディレクトリは、あなたがこのような何かをする必要がある場合がありますので、NSISにSetOutPathで設定されたパスから来ていることを心に留めておく必要があります。

Push $OUTDIR ; Save the old path 
StrCpy $powerShellPath "$SysDir\WindowsPowerShell\v1.0\powershell.exe" 
StrCpy $parameters '-command "&.\PRESS_Survey.ps1"' 
SetOutPath "c:\path\where\PRESS_Survey\is\located" ; For .\ paths 
CreateShortcut "$DESKTOP\PRESS_Survey_PS.lnk" $powerShellPath $parameters "$INSTDIR\images\appIcons\Survey.ico" 
Pop $OUTDIR 
SetOutPath $OUTDIR ; Restore 
+0

ありがとうございました。それがトリックでした。 "もう一つの問題はパス内にあり、現在のディレクトリを意味し、ショートカットには使用しないことをお勧めします。"ショートカットの「開始」フィールドに、インストール先のディレクトリを設定します。 – FailureMachine

+0

...インストーラには完全なパスが何であるかが分かっているので、完全なパスを使用することもできます。 – Anders

+0

これはあなたのために働いた場合は、答えとしてマークする必要があります... – Anders

関連する問題