2016-12-05 123 views
0

我試圖用VS2010創建一個安裝程序,它調用一個在安裝程序完成安裝後複製一些文件的實用程序。使用CustomAction創建VS2010安裝程序

我所做的是創建一個實用程序,它接受目標(安裝程序安裝程序包的位置)和源(安裝程序文件的位置)的命令行參數。

接下來,在安裝程序項目中,我在安裝程序後添加了一個CustomAction,以使用參數[TARGETDIR] [SourceDir]調用我的實用程序(作爲安裝的一部分安裝)。

我的問題是如果安裝程序位於網絡驅動器上,[SourceDir]不會填充任何內容!如果它位於我的任何硬盤上,CD上或閃存驅動器上的文件夾中,則會填充正確的路徑。如果它位於網絡驅動器(未映射到驅動器號)上,則[SourceDir]就是傳遞給該實用程序是空白的!

有關如何獲取網絡位置的任何想法作爲[SourceDir]傳遞?

Installer's CustomAction settings for Copy utility

Install CustomAction to call Copy utility

回答

0

你可以嘗試OriginalDatabase屬性,看看是否能解決任何好轉。

但是,除非您使用安裝後的程序進行復制,否則您不太可能取得成功。

在Everyone安裝(對於所有用戶)中,Visual Studio自定義操作使用系統帳戶運行。您說您沒有映射到驅動器號(因爲它們屬於交互式用戶而不是系統帳戶,驅動器號將無法使用),但系統帳戶沒有網絡權限,因此嘗試解析網絡位置失敗,而且你的代碼無論如何都無法完成複製。這就是爲什麼在交互式用戶帳戶中運行單獨程序的原因,在用戶首次運行該應用程序時執行復制。或者應用程序設計是這樣的,應用程序知道額外文件的網絡位置並且可以直接訪問它。我不知道您的情況下有任何其他解決方案。

+0

Thanks Phil ...我已經或多或少地發現了同樣的東西:(我用另一個替換了我的複製實用程序,讓我導航到文件的來源,並且當OpenFile對話框打開時,沒有任何網絡位置正如你所說的那樣,我現在正在處理一個運行安裝程序的Cmd文件,安裝程序使用正確的路徑生成一個cmd文件,並且在安裝程序結束後,第一個cmd文件運行第二個..我還沒有完成調試,但它看起來很有希望。 – Steve76063