DenchikK
1. Из
WPI msi-файлы без проблем запускаются при указании полного пути, например:
Код:

cmd1[pn]=['msiexec.exe /i %cdrom%\\Soft\\Acronis\\AcronisTrueImageEnterprise.msi ADDLOCAL=ALL PIDKEY=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX REBOOT=ReallySupress /qb!']
2. Чтобы установка прог через
WPI работала как с CD/DVD, так и с HDD, нужно:
а). Переменная
wpipath в
wpi.cmd обязательно должна определяться так:
Код:

set wpipath=%~dp0
б). Каталог с программами должен быть на одном уровне с маркерным файлом (для
WPI это
wpi.ico). У меня так:
Код:

root
|-autorun.inf
|-[+] WPI
|-[+] Common
|-[+] Soft (каталог с программами)
|-[+] Themes
|-[+] Tools
|-[+] Wpiscripts
|-WPI.cmd
|-WPI.hta
|-WPI.ico
в). Оставить определение переменной
cdrom функцией
FindCDRom() в файле
WPI\Wpiscripts\generate.js без изменений, т.е. маркерным файлом должен быть
wpi.ico (для
WPI 4.2 нужно изменить маркер
WIN51 на
wpi.ico в этой функции).
Теперь приведенная в пункте 1 в кач-ве примера строка установки
AcronisTI будет содержать правильный путь при любом способе установки.
3. По поводу жесткого указания буквы CD. Нужно использовать макрос
@ScriptDir и тогда никакой жесткой привязки не будет:
Код:

run ('msiexec /i ' & @ScriptDir & '\filename.msi')
(это если у тебя
msi и
au3 лежат в одном каталоге)
Код:

run ('msiexec /i ' & StringLeft(@ScriptDir,2) & '\Путь_к_msi_файлу_без_буквы_диска_с_двоеточием\filename.msi')
(если
msi и
au3 лежат в разных каталогах;
StringLeft(@ScriptDir,2) - буква диска с двоеточием)
Пробел после
/i ОБЯЗАТЕЛЕН, это не опечатка.