2012-08-16 184 views
1

我對NSIS安裝程序腳本完全陌生,我想將安裝目錄設置爲計算機上最大的磁盤。任何人都可以指導我如何去做。查找最大Drive,NSIS安裝程序

+0

通常使得使用$ PROGRAMFILES \ YourApp作爲默認更有意義...... – Anders 2012-08-16 17:42:11

+0

你應該還記得卷可以安裝在NTFS的文件夾中,因此只需檢查驅動器號就可能找不到最大的卷... – Anders 2012-08-16 17:45:25

回答

2
!include LogicLib.nsh 
System::Call 'kernel32::GetLogicalDrives()i.r0' 
StrCpy $1 $windir 3 ; Fallback if things go wrong 
StrCpy $2 0 
StrCpy $4 65 ; 'A' 
loop: 
    IntOp $3 $0 & 1 
    ${If} $3 <> 0 
     IntFmt $3 "%c:\" $4 
     System::Call 'kernel32::GetDiskFreeSpaceEx(tr3,*l.r5,*l,*l)i' 
     ${If} $5 L> $2 
      StrCpy $2 $5 
      StrCpy $1 $3 
     ${EndIf} 
    ${EndIf} 
    IntOp $4 $4 + 1 
    IntOp $0 $0 >> 1 
    StrCmp $0 0 "" loop 
StrCpy $InstDir "$1" ;You should probably append something to the path here, you cannot install to the root of a drive by default 

放入.onInit或目錄頁面預回調...

+0

此代碼檢查可用空間,因爲安裝程序以這種方式更有意義,它將避免只讀卷... – Anders 2012-08-16 17:46:44

+0

偉大的作品!我完成了安裝部分。安裝可執行文件後,我需要提示用戶插入另一張DVD來安裝實用程序。你能指導我怎麼做 – sam 2012-08-17 18:41:52

+0

如果它與這個問題無關,那麼你應該問一個新的問題(並接受這個答案,如果它是正確的) – Anders 2012-08-17 18:51:40