2016-07-08 52 views
1

我不知道爲什麼,但是當我嘗試將文件從我的安裝目錄複製到system32,它沒有這樣做雖然讀取爲在Inno Setup中成功安裝。這裏是我的代碼:文件/ DLL安裝到{} SYS沒有出現在C: Windows System32下

[Files] 
; specifies what files will be included in the installation 
Source: "{src}\..\elt.properties"; DestDir: "C:\elt"; Flags: ignoreversion;  BeforeInstall: SetProgressMax(10); 
Source: "{src}\..\msvcr120.dll"; DestDir: {sys}; Flags: onlyifdoesntexist; 

我也想包括我的日誌輸出,因爲我認爲這是奇怪的是,當時是這麼過的文件,我在7月8日寫這篇上午11點左右2016

[11:49:36.526] -- File entry -- 
[11:49:36.528] Dest filename: C:\Windows\system32\msvcr120.dll 
[11:49:36.529] Time stamp of our file: 2013-10-04 23:58:24.000 
[11:49:36.530] Installing the file. 
[11:49:36.566] Successfully installed the file. 

回答

3

默認情況下,對於32位應用程序(如Inno Setup),操作系統默認爲{sys}system32is redirected{win}\SysWOW64

如果你的DLL是32位的,你真正想要的重定向。 SysWOW64是Windows 64位上的Windows 32位仿真的System32等效項。另見Inno Setup install to SysWOW64 in 32Bit mode


如果你不想重定向(因爲你的DLL是64位),則可以使用64bit flag覆蓋重定向:

Source: "..."; DestDir: "{sys}"; Flags: 64bit 

:使{sys}不變在SourceDestDir參數使用映射到64位系統目錄,......這是安裝在一個64-bit mode的默認行爲。


或啓用64-bit mode安裝。

[Setup] 
ArchitecturesInstallIn64BitMode=x64 ia64 

在64位模式:

  • 在[DIRS]使用時由{sys}常數映射到默認的64位系統目錄返回的System32下路徑,[文件] ,[InstallDelete],[Run],[UninstallDelete]和[UninstallRun]部分。這是因爲當這些部分訪問文件/目錄時,安裝/卸載臨時禁用WOW64 file system redirection。在其他地方,System32和{sys}映射到32位系統目錄,這在32位進程中是正常的。
+0

如果您的應用程序也是64位,您應該啓用64位模式。否則使用其他兩個選項之一。 – Miral

相關問題