2

このコードを使用してハードコードされたスタートメニューフォルダーを持つNSISインストーラーがあります...

Var SMDir ;Start menu folder
!insertmacro MUI_PAGE_STARTMENU 0 $SMDir

Section -StartMenu
  !insertmacro MUI_STARTMENU_WRITE_BEGIN 0
  CreateDirectory "$SMPrograms\MY Program\My Folder"
  CreateShortCut "$DESKTOP\My Program" "$INSTDIR\start.exe"
  CreateShortCut "$SMPROGRAMS\MY Program\My Shortcut.lnk" "$INSTDIR\start.exe"
  CreateShortCut "$SMPROGRAMS\My Program\Uninstall.lnk" "$INSTDIR\uninstall.exe"

これはすべて、[スタート メニュー フォルダの選択] を除いて機能し、デフォルトのインストール ディレクトリを変更できません。

これを修正する方法はありますか、またはこのページをスキップして StartMenu セクションをトリガーする方法はありますか?

4

1 に答える 1

3

スタートメニュー選択ページがまったく必要ない場合は、セクション内!insertmacro MUI_PAGE_STARTMENU ...の 2 つの!insertmacro MUI_STARTMENU_*マクロを削除してください-StartMenu

ユーザーがディレクトリを選択できるようにする場合は、パスをハードコードせずに変数を使用する必要があります。

outfile test.exe
name "SM Test"
requestexecutionlevel user ;Single user/"Just me" installer

!define MUI_COMPONENTSPAGE_NODESC
!include mui2.nsh

Var SMDir ;Start menu folder
!insertmacro MUI_PAGE_COMPONENTS
;!define MUI_STARTMENUPAGE_DEFAULTFOLDER "MY Program" ;Default, name is used if not defined
!insertmacro MUI_PAGE_STARTMENU 0 $SMDir
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English


Section -StartMenu
!insertmacro MUI_STARTMENU_WRITE_BEGIN 0 ;This macro sets $SMDir and skips to MUI_STARTMENU_WRITE_END if the "Don't create shortcuts" checkbox is checked... 
CreateDirectory "$SMPrograms\$SMDir"
CreateShortCut "$SMPROGRAMS\$SMDir\Myapp.lnk" "$INSTDIR\start.exe"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd

Section "Desktop Shortcut"
CreateShortCut "$DESKTOP\Myapp.lnk" "$INSTDIR\start.exe"
SectionEnd

(管理者としてインストールしている場合は、SetShellVarContext all$SMPrograms にアクセスする前に呼び出す必要があり、おそらくデスクトップ ショートカットを作成しないでください)

于 2012-06-20T17:48:48.460 に答える