2014-12-22 38 views
1

維克斯開發商安裝目錄隨機的名字!如何設置爲MSI(WiX的)

是否可以指定隨機名稱與財產或VBScript自定義操作的幫助下安裝目錄名稱...

我有以下Product.wxs:

<Directory Id="TARGETDIR" Name="SourceDir"> 
 
     <Directory Id="ProgramFilesFolder"> 
 
     <Directory Id="INSTALLLOCATION" Name="Client"> 
 
      <Component Id="ProductComponent"> 
 
      <File Id="File001" Source="..\Release\One.dll" /> 
 
      </Component> 
 
...

它是準備安裝目錄,如: C:\ Program Files(x86)\ Client

我需要這樣的 C:\ Program Files文件(x86)的\ 234wfdasdqaw 其中「234wfdasdqaw」,這在任何情況下產生的隨機字符串時 一)運行MSI安裝 B)如果管理員沒有設置通過命令行的INSTALLLOCATION 。

可能嗎? 謝謝。

+1

是,創建一個立即採取行動,將修改INSTALLLOCATION屬性。 –

+0

我已經寫了20年的安裝程序,從來沒有見過這樣的設計。你能描述爲什麼你需要這樣做嗎? –

+0

好吧,我必須立即創建自定義操作?必須爲自定義動作設置「之前」或「之後」的參數。請顯示示例 – Aleksey

回答

0

你需要自定義操作來隨機生成的字符串,然後一個類型51(設置屬性)自定義操作設置INSTALLLOCATION到一個計算值,如果1)它不具有價值; 2)產品尚未安裝。我不會在ProgramFilesFolder的根目錄下執行此操作,因爲這會非常麻煩。至少在[ProgramFilesFolder]公司或[ProgramFilesFolder]產品中執行。你的問題讓我懷疑你是否打算多安裝一次MSI。請注意,多次安裝MSI需要特殊的技巧。

+0

你好,克里斯托弗畫家! – Aleksey

+0

謝謝。但是,您可以顯示例如這樣的自定義操作的WXS?我只能在我的自定義操作DLL生成隨機字符串... – Aleksey

+0

的extern 「C」 __declspec(dllexport)的UINT __stdcall SetupInstallLocationDir(MSIHANDLE HINSTALL) { \t HRESULT小時= WcaInitialize(hInstall,「SetupInstallLocationDir」); \t MsiSetPropertyW(HINSTALL,L 「INSTALLLOCATION」,L 「C:\\ zzzzzzz」); \t返回WcaFinalize(ERROR_SUCCESS); } – Aleksey