2013-09-16 12 views

回答

0

一個簡單的解決方案是編譯代碼,將exe嵌入到您的安裝程序中,並在安裝程序運行時運行exe。

1

在wiki上有一個generating a GUID with NSIS的例子(實際上是3個連續的方法),除了系統dll以外不需要外部依賴。

簡而言之,它不像您提到的代碼那樣使用系統管理,而是直接從ole32中調用CoCreateGuid()函數。

系統訪問:它可以自動彈出堆棧到變量,你給它,或保持在棧上

Function CreateGUID 
    System::Call 'ole32::CoCreateGuid(g .s)' 
FunctionEnd 

助手宏:

!define CreateGUID `!insertmacro _CreateGUID` 
!macro _CreateGUID _RetVar 
    Call CreateGUID 
    !if ${_RetVar} != s 
     Pop ${_RetVar} 
    !endif 
!macroend 

例子:

;${CreateGUID} $0 ; $0 contains GUID (poped from the stack by the macro) 

;${CreateGUID} s ; the value is kept on the stack, we pop it ourselves 
;Pop $0 ;contains GUID 
+0

這給了我那個機器在當前時間的GUID,如果我想要一個GUID爲那臺機器(所以如果我再次運行相同的方法我woul d得到相同的GUID? ) –

+0

http://msdn.microsoft.com/en-us/library/windows/desktop/ms688568(v=vs.85).aspx - >「爲了非常高的確定性,該函數返回一個唯一值 - 沒有其他調用,在相同或任何其他系統(聯網或不),應返回相同的值「 - >我希望同一系統給予相同的調用... –